From 67770869e9068b99f5db3ebb55185604c6894804 Mon Sep 17 00:00:00 2001 From: Antiklesys Date: Wed, 7 Dec 2022 15:02:54 +0800 Subject: [PATCH 001/299] Update iclass_default_keys.dic Added an extra key --- client/dictionaries/iclass_default_keys.dic | 1 + 1 file changed, 1 insertion(+) diff --git a/client/dictionaries/iclass_default_keys.dic b/client/dictionaries/iclass_default_keys.dic index d2d6489b2..cf274e54a 100644 --- a/client/dictionaries/iclass_default_keys.dic +++ b/client/dictionaries/iclass_default_keys.dic @@ -18,6 +18,7 @@ E033CA419AEE43F9 # iCopy-x DRM keys 2020666666668888 # iCL tags 6666202066668888 # iCS tags reversed from the SOs +AFA785A7DAB33378 # from https://youtu.be/EH7dctOPxBA?t=805 # # default picopass KD / Page 0 / Book 1 FDCB5A52EA8F3090 From cb0a3257be390edaea8feca95986bce128075dac Mon Sep 17 00:00:00 2001 From: dash Date: Wed, 10 May 2023 00:33:15 +0300 Subject: [PATCH 002/299] fix reading NDEF from Mifare Classic --- client/src/cmdhfmf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 559057459..a77f14c59 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -5922,10 +5922,10 @@ int CmdHFMFNDEFRead(const char *Cmd) { } PrintAndLogEx(INFO, "reading data from tag"); - for (int i = 1; i <= madlen; i++) { + for (int i = 0; i < madlen; i++) { if (ndef_aid == mad[i]) { uint8_t vsector[MFBLOCK_SIZE * 4] = {0}; - if (mfReadSector(i, keyB ? MF_KEY_B : MF_KEY_A, ndefkey, vsector)) { + if (mfReadSector(i + 1, keyB ? MF_KEY_B : MF_KEY_A, ndefkey, vsector)) { PrintAndLogEx(ERR, "error, reading sector %d ", i + 1); return PM3_ESOFT; } From 82d80cc2507bb3a62e2dab2ace32fdb5b697910f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 14 Jul 2023 11:33:47 +0200 Subject: [PATCH 003/299] better memory clean up, thanks @gentilkiwi --- client/src/cmdhfmf.c | 9 --------- client/src/fileutils.c | 1 + 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index b48fd3d0a..3f704ad62 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -577,9 +577,6 @@ static int mfc_read_tag(iso14a_card_select_t *card, uint8_t *carddata, uint8_t n size_t alen = 0, blen = 0; uint8_t *keyA, *keyB; if (loadFileBinaryKey(keyfn, "", (void **)&keyA, (void **)&keyB, &alen, &blen) != PM3_SUCCESS) { - if (keyA) { - free(keyA); - } free(fptr); return PM3_ESOFT; } @@ -1339,9 +1336,6 @@ static int CmdHF14AMfRestore(const char *Cmd) { size_t alen = 0, blen = 0; uint8_t *keyA, *keyB; if (loadFileBinaryKey(keyfilename, "", (void **)&keyA, (void **)&keyB, &alen, &blen) != PM3_SUCCESS) { - if (keyA) { - free(keyA); - } return PM3_ESOFT; } @@ -6289,9 +6283,6 @@ int CmdHFMFNDEFFormat(const char *Cmd) { size_t alen = 0, blen = 0; uint8_t *tmpA, *tmpB; if (loadFileBinaryKey(keyFilename, "", (void **)&tmpA, (void **)&tmpB, &alen, &blen) != PM3_SUCCESS) { - if (tmpA) { - free(tmpA); - } goto skipfile; } diff --git a/client/src/fileutils.c b/client/src/fileutils.c index f266da9b2..7ca59ef85 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -1609,6 +1609,7 @@ int loadFileBinaryKey(const char *preferredName, const char *suffix, void **keya if (*keyb == NULL) { PrintAndLogEx(FAILED, "error, cannot allocate memory"); fclose(f); + free(*keya); return PM3_EMALLOC; } From 5022e21db525a6c757089e4bd787992175f0c174 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 14 Jul 2023 18:13:18 +0200 Subject: [PATCH 004/299] added a iso4217 currency table. Borrowed and converted from the Cardpeek project. Thanks to them! --- CHANGELOG.md | 2 + client/CMakeLists.txt | 1 + client/Makefile | 1 + client/experimental_lib/CMakeLists.txt | 1 + client/src/iso4217.c | 35 ++++ client/src/iso4217.h | 222 +++++++++++++++++++++++++ 6 files changed, 262 insertions(+) create mode 100644 client/src/iso4217.c create mode 100644 client/src/iso4217.h diff --git a/CHANGELOG.md b/CHANGELOG.md index 56daf055e..1981a2e8e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added ISO4217 currency lookup (@iceman1001) + - Fixed bad free in loadfilebinarykey fct. Thanks to @gentilkiwi - Changed `emv reader -v` - now can decode track1/2 data if found (@iceman1001) - Added `emv reader` - act as a EMV reader (@iceman1001) - Added support for Apple Wallet NFC Passes with the Value Added Services protocol implementation (@gm3197) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 91742b711..385e5b29a 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -349,6 +349,7 @@ set (TARGET_SOURCES ${PM3_ROOT}/client/src/fileutils.c ${PM3_ROOT}/client/src/flash.c ${PM3_ROOT}/client/src/graph.c + ${PM3_ROOT}/client/src/iso4217.c ${PM3_ROOT}/client/src/jansson_path.c ${PM3_ROOT}/client/src/preferences.c ${PM3_ROOT}/client/src/pm3.c diff --git a/client/Makefile b/client/Makefile index 8b9e469ba..2e241ee1e 100644 --- a/client/Makefile +++ b/client/Makefile @@ -678,6 +678,7 @@ SRCS = mifare/aiddesfire.c \ generator.c \ graph.c \ jansson_path.c \ + iso4217.c \ iso7816/apduinfo.c \ iso7816/iso7816core.c \ loclass/cipher.c \ diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index ca8243dbb..377a5ea58 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -349,6 +349,7 @@ set (TARGET_SOURCES ${PM3_ROOT}/client/src/fileutils.c ${PM3_ROOT}/client/src/flash.c ${PM3_ROOT}/client/src/graph.c + ${PM3_ROOT}/client/src/iso4217.c ${PM3_ROOT}/client/src/jansson_path.c ${PM3_ROOT}/client/src/preferences.c ${PM3_ROOT}/client/src/pm3.c diff --git a/client/src/iso4217.c b/client/src/iso4217.c new file mode 100644 index 000000000..a385f69ec --- /dev/null +++ b/client/src/iso4217.c @@ -0,0 +1,35 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +// ISO4217 Currency information lookup +//----------------------------------------------------------------------------- +#include "iso4217.h" +#include +#include +#include "commonutil.h" // ARRAYLEN +#include "ui.h" // PrintAndLogEx + +// get a Currency description based on the currency number string +const char *getCurrencyInfo(const char *cn_str) { + size_t slen = strlen(cn_str); + + // skip last element of AtrTable + for (int i = 0; i < ARRAYLEN(Iso4217Table) - 1; ++i) { + if (strncmp(cn_str, Iso4217Table[i].code, slen) == 0) + return Iso4217Table[i].desc; + } + return Iso4217Table[ARRAYLEN(Iso4217Table) - 1].desc; +} + diff --git a/client/src/iso4217.h b/client/src/iso4217.h new file mode 100644 index 000000000..a35ff8f93 --- /dev/null +++ b/client/src/iso4217.h @@ -0,0 +1,222 @@ +//----------------------------------------------------------------------------- +// Borrowed initially from +// https://github.com/L1L1/cardpeek/blob/master/dot_cardpeek_dir/scripts/lib/currency_codes.lua +// +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +#ifndef ISO4217_H__ + +#define ISO4217_H__ +#include + +typedef struct iso4217_s { + const char *code; + const char *desc; + int digits; +} iso4217_t; + +const char *getCurrencyInfo(const char *cn_str); + +// atr_t array is expected to be NULL terminated +const static iso4217_t Iso4217Table[] = { + {"008","Lek",2}, + {"012","Algerian Dinar",2}, + {"032","Argentine Peso",2}, + {"036","Australian Dollar",2}, + {"044","Bahamian Dollar",2}, + {"048","Bahraini Dinar",3}, + {"050","Taka",2}, + {"051","Armenian Dram",2}, + {"052","Barbados Dollar",2}, + {"060","Bermudian Dollar",2}, + {"064","Ngultrum",2}, + {"068","Boliviano",2}, + {"072","Pula",2}, + {"084","Belize Dollar",2}, + {"090","Solomon Islands Dollar",2}, + {"096","Brunei Dollar",2}, + {"104","Kyat",2}, + {"108","Burundi Franc",0}, + {"116","Riel",2}, + {"124","Canadian Dollar",2}, + {"132","Cabo Verde Escudo",2}, + {"136","Cayman Islands Dollar",2}, + {"144","Sri Lanka Rupee",2}, + {"152","Chilean Peso",0}, + {"156","Yuan Renminbi",2}, + {"170","Colombian Peso",2}, + {"174","Comoro Franc",0}, + {"188","Costa Rican Colon",2}, + {"191","Croatian Kuna",2}, + {"192","Cuban Peso",2}, + {"203","Czech Koruna",2}, + {"208","Danish Krone",2}, + {"214","Dominican Peso",2}, + {"222","El Salvador Colon",2}, + {"230","Ethiopian Birr",2}, + {"232","Nakfa",2}, + {"233","Kroon",2}, + {"238","Falkland Islands Pound",2}, + {"242","Fiji Dollar",2}, + {"262","Djibouti Franc",0}, + {"270","Dalasi",2}, + {"292","Gibraltar Pound",2}, + {"320","Quetzal",2}, + {"324","Guinea Franc",0}, + {"328","Guyana Dollar",2}, + {"332","Gourde",2}, + {"340","Lempira",2}, + {"344","Hong Kong Dollar",2}, + {"348","Forint",2}, + {"352","Iceland Krona",0}, + {"356","Indian Rupee",2}, + {"360","Rupiah",2}, + {"364","Iranian Rial",2}, + {"368","Iraqi Dinar",3}, + {"376","New Israeli Sheqel",2}, + {"388","Jamaican Dollar",2}, + {"392","Yen",0}, + {"398","Tenge",2}, + {"400","Jordanian Dinar",3}, + {"404","Kenyan Shilling",2}, + {"408","North Korean Won",2}, + {"410","Won",0}, + {"414","Kuwaiti Dinar",3}, + {"417","Som",2}, + {"418","Kip",2}, + {"422","Lebanese Pound",2}, + {"426","Loti",2}, + {"428","Latvian Lats",2}, + {"430","Liberian Dollar",2}, + {"434","Libyan Dinar",3}, + {"440","Lithuanian Litas",2}, + {"446","Pataca",2}, + {"454","Kwacha",2}, + {"458","Malaysian Ringgit",2}, + {"462","Rufiyaa",2}, + {"478","Ouguiya",2}, + {"480","Mauritius Rupee",2}, + {"484","Mexican Peso",2}, + {"496","Tugrik",2}, + {"498","Moldovan Leu",2}, + {"504","Moroccan Dirham",2}, + {"512","Rial Omani",3}, + {"516","Namibia Dollar",2}, + {"524","Nepalese Rupee",2}, + {"532","Netherlands Antillean Guilder",2}, + {"533","Aruban Florin",2}, + {"548","Vatu",0}, + {"554","New Zealand Dollar",2}, + {"558","Cordoba Oro",2}, + {"566","Naira",2}, + {"578","Norwegian Krone",2}, + {"586","Pakistan Rupee",2}, + {"590","Balboa",2}, + {"598","Kina",2}, + {"600","Guarani",0}, + {"604","Nuevo Sol",2}, + {"608","Philippine Peso",2}, + {"624","Guinea-Bissau Peso", -1}, + {"634","Qatari Rial",2}, + {"643","Russian Ruble",2}, + {"646","Rwanda Franc",0}, + {"654","Saint Helena Pound",2}, + {"678","Dobra",2}, + {"682","Saudi Riyal",2}, + {"690","Seychelles Rupee",2}, + {"694","Leone",2}, + {"702","Singapore Dollar",2}, + {"704","Dong",0}, + {"706","Somali Shilling",2}, + {"710","Rand",2}, + {"728","South Sudanese Pound",2}, + {"748","Lilangeni",2}, + {"752","Swedish Krona",2}, + {"756","Swiss Franc",2}, + {"760","Syrian Pound",2}, + {"764","Baht",2}, + {"776","Pa\'anga",2}, + {"780","Trinidad and Tobago Dollar",2}, + {"784","UAE Dirham",2}, + {"788","Tunisian Dinar",3}, + {"800","Uganda Shilling",0}, + {"807","Denar",2}, + {"818","Egyptian Pound",2}, + {"826","Pound Sterling",2}, + {"834","Tanzanian Shilling",2}, + {"840","US Dollar",2}, + {"858","Peso Uruguayo",2}, + {"860","Uzbekistan Sum",2}, + {"882","Tala",2}, + {"886","Yemeni Rial",2}, + {"894","Zambian Kwacha",2}, + {"901","New Taiwan Dollar",2}, + {"931","Peso Convertible",2}, + {"932","Zimbabwe Dollar",2}, + {"934","Turkmenistan New Manat",2}, + {"936","Ghana Cedi",2}, + {"937","Bolivar",2}, + {"938","Sudanese Pound",2}, + {"940","Uruguay Peso en Unidades Indexadas (URUIURUI)",0}, + {"941","Serbian Dinar",2}, + {"943","Mozambique Metical",2}, + {"944","Azerbaijanian Manat",2}, + {"946","New Romanian Leu",2}, + {"947","WIR Euro",2}, + {"948","WIR Franc",2}, + {"949","Turkish Lira",2}, + {"950","CFA Franc BEAC",0}, + {"951","East Caribbean Dollar",2}, + {"952","CFA Franc BCEAO",0}, + {"953","CFP Franc",0}, + {"955","Bond Markets Unit European Composite Unit (EURCO)",0}, + {"956","Bond Markets Unit European Monetary Unit (E.M.U.-6)",0}, + {"957","Bond Markets Unit European Unit of Account 9 (E.U.A.-9)",0}, + {"958","Bond Markets Unit European Unit of Account 17 (E.U.A.-17)",0}, + {"959","Gold",0}, + {"960","SDR (Special Drawing Right)",0}, + {"961","Silver",0}, + {"962","Platinum",0}, + {"963","Codes specifically reserved for testing purposes",-1}, + {"964","Palladium",-1}, + {"965","ADB Unit of Account",-1}, + {"967","Zambian Kwacha",2}, + {"968","Surinam Dollar",2}, + {"969","Malagasy Ariary",1}, + {"969","Malagasy Ariary",2}, + {"970","Unidad de Valor Real",2}, + {"971","Afghani",2}, + {"972","Somoni",2}, + {"973","Kwanza",2}, + {"974","Belarussian Ruble",0}, + {"975","Bulgarian Lev",2}, + {"976","Congolese Franc",2}, + {"977","Convertible Mark",2}, + {"978","Euro",2}, + {"979","Mexican Unidad de Inversion (UDI)",2}, + {"980","Hryvnia",2}, + {"981","Lari",2}, + {"984","Mvdol",2}, + {"985","Zloty",2}, + {"986","Brazilian Real",2}, + {"990","Unidad de Fomento",4}, + {"994","Sucre",-1}, + {"997","US Dollar (Next day)",2}, + {"998","US Dollar (Same day)",2}, + {"999","No currency is involved",-1}, + {"NULL", "N/A", -1} +}; + +#endif From 78fe406f508a825e24696e405fea9c8ccbe7034a Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 14 Jul 2023 18:16:40 +0200 Subject: [PATCH 005/299] changed emv reader in verbose mode to extract and print transaction logs stored on card --- CHANGELOG.md | 1 + client/src/emv/cmdemv.c | 287 ++++++++++++++++++++++++++++++++++++-- client/src/emv/emv_tags.c | 1 + client/src/emv/emvcore.c | 4 + client/src/emv/emvcore.h | 3 + 5 files changed, 287 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1981a2e8e..463a379a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `emv reader -v` - now tries to print found transactions logs (@iceman1001) - Added ISO4217 currency lookup (@iceman1001) - Fixed bad free in loadfilebinarykey fct. Thanks to @gentilkiwi - Changed `emv reader -v` - now can decode track1/2 data if found (@iceman1001) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index e1518971b..b2459c79c 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -35,6 +35,10 @@ #include "fileutils.h" #include "protocols.h" // ISO7816 APDU return codes #include "commonutil.h" // MemBeToUint2byte +#include // DES +#include "crypto/libpcrypto.h" +#include "iso4217.h" // currency lookup + static int CmdHelp(const char *Cmd); @@ -75,6 +79,193 @@ static void PrintChannel(Iso7816CommandChannel channel) { } } +static int emv_calc_cvv(const uint8_t *pan, size_t panlen, const uint8_t *expiry, const uint8_t *servicecode, const uint8_t *atc) { + + uint8_t key[16] = {0}; + memset(key, 0x30, sizeof(key)); + + uint8_t d[32] = {0}; + uint8_t *pd = d; + + memcpy(pd, pan, panlen); + pd += panlen; + memcpy(pd, expiry, 4); + pd += 4; + + // cvv/cvc + memcpy(pd, servicecode, 3); + pd += 3; + + // atc + memcpy(pd, atc, 4); + + uint8_t encrypted[16] = {0}; + + // zero padding?!? + + mbedtls_des_context ctx; + mbedtls_des_setkey_enc(&ctx, key); + mbedtls_des_crypt_ecb(&ctx, d, encrypted); + mbedtls_des_crypt_ecb(&ctx, d + 6, encrypted + 6); + + // xor + for (size_t i = 16; i < 32; i++) { + d[i] ^= encrypted[i - 16]; + } + + mbedtls_des_free(&ctx); + + PrintAndLogEx(INFO, "key... %s", sprint_hex_inrow(key, sizeof(key))); + PrintAndLogEx(INFO, "d..... %s", sprint_hex_inrow(d, sizeof(d))); + +/* + mbedtls_des3_context ctx3; + mbedtls_des3_init(&ctx3); + mbedtls_des3_set2key_enc(&ctx3, key); + mbedtls_des3_set2key_dec(&ctx3, key); + mbedtls_des3_crypt_ecb(&ctx3, d, encrypted); + mbedtls_des3_free(&ctx3); + + PrintAndLogEx(INFO, "enc... %s", sprint_hex_inrow(encrypted, sizeof(encrypted))); + + memset(encrypted, 0, sizeof(encrypted)); + des3_encrypt(encrypted, d, key, 2); + PrintAndLogEx(INFO, "enc... %s", sprint_hex_inrow(encrypted, sizeof(encrypted))); + */ + return PM3_SUCCESS; +} + +static size_t logtemplate_calculate_len(const struct tlv *tlv, size_t data_len) { + if (!tlv) + return 0; + + const unsigned char *buf = tlv->value; + size_t left = tlv->len; + size_t count = 0; + + while (left) { + struct tlv cur_tlv; + if (!tlv_parse_tl(&buf, &left, &cur_tlv)) + return 0; + + count += cur_tlv.len; + + /* Last tag can be of variable length */ + if (cur_tlv.len == 0 && left == 0) + count = data_len; + } + + return count; +} + +static struct tlvdb *emv_logtemplate_parse(const struct tlv *tlv, const unsigned char *data, size_t data_len) { + if (!tlv) + return NULL; + + const unsigned char *buf = tlv->value; + size_t left = tlv->len; + size_t res_len = logtemplate_calculate_len(tlv, data_len); + size_t pos = 0; + struct tlvdb *db = NULL; + + while (left) { + struct tlv cur_tlv; + if (!tlv_parse_tl(&buf, &left, &cur_tlv) || pos + cur_tlv.len > res_len) { + tlvdb_free(db); + return NULL; + } + + /* Last tag can be of variable length */ + if (cur_tlv.len == 0 && left == 0) + cur_tlv.len = res_len - pos; + + struct tlvdb *tag_db = tlvdb_fixed(cur_tlv.tag, cur_tlv.len, data + pos); + if (!db) + db = tag_db; + else + tlvdb_add(db, tag_db); + + pos += cur_tlv.len; + } + + return db; +} + +static int emv_parse_log(struct tlvdb *ttdb, const uint8_t *d, size_t n) { +/* + The Log Format (9F4F) is a list in tag and length format (i.e., "TL" instead of TLV) See description in Table 33 on page 141. + + In your example, "9F 27 01 9F 02 06 5F 2A 02 9A 03 9F 36 02 9F 52 06 DF 3E 01 9F 21 03 9F 7C 14" means: + + 9F27 01 (Cryptogram Information Data) + 9F02 06 (Amount, Authorised) + 5F2A 02 (Transaction Currency Code) + 9A 03 (Transaction Date) + 9F36 02 (Application Transaction Counter) + 9F52 06 (Terminal Compatibility Indicator) + DF3E 01 + 9F21 03 (Transaction Time) + 9F7C 14 (Visa Customer Exclusive Data) + +*/ + int pos = 0; + struct tlvdb *tp = ttdb; + while (tp) { + const struct tlv *tpitem = tlvdb_get_tlv(tp); + + const char *s = emv_get_tag_name(tpitem); + + switch (tpitem->tag) { + case 0x5F2A: + if (tpitem->len == 2) { + + char tmp[5] = {0}; + snprintf(tmp, sizeof(tmp), "%x%02x", d[pos], d[pos + 1]); + const char *cn = getCurrencyInfo(tmp); + PrintAndLogEx(INFO, "%-30s... " _YELLOW_("%s") " ( %x%02x )", s, cn, d[pos], d[pos + 1]); + } + break; + case 0x9A: + if (tpitem->len == 3) { + PrintAndLogEx(INFO, "%-30s... " _YELLOW_("20%02x-%02x-%02x"), s, d[pos], d[pos + 1], d[pos + 2]); + } + break; + default: + PrintAndLogEx(INFO, "%-30s... " _YELLOW_("%s"), s, sprint_hex_inrow(d + pos, tpitem->len)); + break; + } + + pos += tpitem->len; + + tp = tlvdb_elm_get_next(tp); + } + return PM3_SUCCESS; +} + +static int emv_extract_log_info(uint8_t *response, size_t reslen, uint8_t *lid, uint8_t *lrecs) { + + struct tlvdb *t = tlvdb_parse_multi(response, reslen); + if (t == NULL) { + PrintAndLogEx(INFO, "root null"); + return PM3_EINVARG; + } + + int res = PM3_ESOFT; + struct tlvdb *logs = tlvdb_find_full(t, 0x9F4D); + if (logs != NULL) { + const struct tlv *tlv = tlvdb_get_tlv(logs); + if (tlv->len == 2) { + *lid = tlv->value[0]; + *lrecs = tlv->value[1]; + PrintAndLogEx(DEBUG, "Logs EMV... SFI %u Records # %u", *lid, *lrecs); + res = PM3_SUCCESS; + } + } + + tlvdb_free(t); + return res; +} + static int emv_parse_track1(const uint8_t *d, size_t n, bool verbose){ if (d == NULL || n < 10) { return PM3_EINVARG; @@ -96,14 +287,26 @@ static int emv_parse_track1(const uint8_t *d, size_t n, bool verbose){ while (token != NULL) { switch(i) { - case 0: - PrintAndLogEx(INFO, "PAN...................... %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c", - token[1], token[2],token[3], token[4], - token[5], token[6],token[7], token[8], - token[9], token[10],token[11], token[12], - token[13], token[14],token[15], token[16] - ); + case 0: { + size_t a = strlen(token); + if (a == 16) { + PrintAndLogEx(INFO, "PAN...................... %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c", + token[1], token[2],token[3], token[4], + token[5], token[6],token[7], token[8], + token[9], token[10],token[11], token[12], + token[13], token[14],token[15], token[16] + ); + } else if (a == 19) { + PrintAndLogEx(INFO, "PAN...................... %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c", + token[1], token[2],token[3], token[4], + token[5], token[6],token[7], token[8], + token[9], token[10],token[11], token[12], + token[13], token[14],token[15], token[16], + token[17], token[18],token[19] + ); + } break; + } case 1: PrintAndLogEx(INFO, "CardHolder............... %s", token); break; @@ -228,7 +431,12 @@ static int emv_parse_card_details(uint8_t *response, size_t reslen, bool verbose const struct tlv *acc_tlv = tlvdb_get_tlv(acc_full); if (acc_tlv->len == 2) { uint16_t acc = MemBeToUint2byte((const uint8_t *)acc_tlv->value); - PrintAndLogEx(INFO, "Currency Code........ " _YELLOW_("%02X"), acc); + + char tmp[5] = {0}; + snprintf(tmp, sizeof(tmp), "%x%02x", acc_tlv->value[0], acc_tlv->value[1]); + const char *cn = getCurrencyInfo(tmp); + + PrintAndLogEx(INFO, "Currency Code........ " _YELLOW_("%s") " ( %x )", cn, acc); } } @@ -2087,6 +2295,16 @@ static int CmdEMVList(const char *Cmd) { } static int CmdEMVTest(const char *Cmd) { + + uint8_t pan[16] = "4000340099900505"; + uint8_t expiry[4] = "2102"; + uint8_t servicecode[3] = "101"; + uint8_t atc[4] = "1001"; + + emv_calc_cvv(pan, 16, expiry, servicecode, atc); + return PM3_SUCCESS; + + CLIParserContext *ctx; CLIParserInit(&ctx, "emv test", "Executes tests\n", @@ -2462,6 +2680,33 @@ static int CmdEMVReader(const char *Cmd) { // decode application parts emv_parse_card_details(buf, len, verbose); + // transaction log information + uint8_t log_file_id = 0x0B; + uint8_t log_file_records = 31; + struct tlvdb *tlogDB = NULL; + + + // try getting the LOG TEMPLATE. + bool log_found = false; + bool log_template_found = false; + if (emv_extract_log_info(buf, len, &log_file_id, &log_file_records) == PM3_SUCCESS) { + log_found = true; + } + + uint16_t extra_data[] = { 0x9F36, 0x9F13, 0x9F17, 0x9F4D, 0x9F4F }; + for (int i = 0; i < ARRAYLEN(extra_data); i++) { + if (EMVGetData(channel, true, extra_data[i], buf, sizeof(buf), &len, &sw, tlvRoot)) { + continue; + } + // Log template tag + if (extra_data[i] == 0x9F4F ) { + struct tlvdb *ttdb = tlvdb_find_full(tlvRoot, extra_data[i]); + const struct tlv *ttag = tlvdb_get_tlv(ttdb); + tlogDB = emv_logtemplate_parse(ttag, buf, len); + log_template_found = true; + } + } + for (TransactionType_t tt = TT_MSD; tt < TT_END; tt++) { // create transaction parameters @@ -2498,7 +2743,6 @@ static int CmdEMVReader(const char *Cmd) { } const struct tlv *AFL = tlvdb_get(tlvRoot, 0x94, NULL); - if (AFL && AFL->len) { if (AFL->len % 4) { @@ -2524,8 +2768,33 @@ static int CmdEMVReader(const char *Cmd) { } } + // only check for logs file if we found 0x9F4D + if ( verbose && log_found && log_template_found ) { + + for (int i = 1; i <= log_file_records; i++) { + res = EMVReadRecord(channel, true, log_file_id, i, buf, sizeof(buf), &len, &sw, tlvRoot); + if (res) { + continue; + } + + if (sw == 0x6A83) + break; + + PrintAndLogEx(INFO, ""); + PrintAndLogEx(INFO, "Transaction log # " _YELLOW_("%u"), i); + PrintAndLogEx(INFO, "---------------------"); + emv_parse_log(tlogDB, buf, len); + PrintAndLogEx(INFO, ""); + } + tlvdb_free(tlogDB); + } + + // free tlv object + tlvdb_free(tlvRoot); + } while (continuous); + DropFieldEx(channel); return PM3_SUCCESS; } diff --git a/client/src/emv/emv_tags.c b/client/src/emv/emv_tags.c index 0d5ddbc31..0ae242905 100644 --- a/client/src/emv/emv_tags.c +++ b/client/src/emv/emv_tags.c @@ -373,6 +373,7 @@ static const struct emv_tag emv_tags[] = { { 0xa5, "File Control Information (FCI) Proprietary Template", EMV_TAG_GENERIC, NULL }, { 0xbf0c, "File Control Information (FCI) Issuer Discretionary Data", EMV_TAG_GENERIC, NULL }, { 0xdf20, "Issuer Proprietary Bitmap (IPB)", EMV_TAG_GENERIC, NULL }, + { 0xdf3e, "?", EMV_TAG_BITMASK, NULL }, { 0xdf4b, "POS Cardholder Interaction Information", EMV_TAG_GENERIC, NULL }, { 0xdf60, "VISA Log Entry", EMV_TAG_GENERIC, NULL }, { 0xdf61, "DS Digest H", EMV_TAG_GENERIC, NULL }, diff --git a/client/src/emv/emvcore.c b/client/src/emv/emvcore.c index 45a415f41..b2aa524ac 100644 --- a/client/src/emv/emvcore.c +++ b/client/src/emv/emvcore.c @@ -586,6 +586,10 @@ int EMVReadRecord(Iso7816CommandChannel channel, bool LeaveFieldON, uint8_t SFI, return res; } +int EMVGetData(Iso7816CommandChannel channel, bool LeaveFieldON, uint16_t foo, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw, struct tlvdb *tlv) { + return EMVExchangeEx(channel, false, LeaveFieldON, (sAPDU_t) {0x80, 0xCA, ((foo >> 8) & 0xFF), (foo & 0xFF), 0, NULL}, true, Result, MaxResultLen, ResultLen, sw, tlv); +} + int EMVAC(Iso7816CommandChannel channel, bool LeaveFieldON, uint8_t RefControl, uint8_t *CDOL, size_t CDOLLen, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw, struct tlvdb *tlv) { return EMVExchange(channel, LeaveFieldON, (sAPDU_t) {0x80, 0xae, RefControl, 0x00, CDOLLen, CDOL}, Result, MaxResultLen, ResultLen, sw, tlv); } diff --git a/client/src/emv/emvcore.h b/client/src/emv/emvcore.h index 6cf646c60..6ff2b6ef9 100644 --- a/client/src/emv/emvcore.h +++ b/client/src/emv/emvcore.h @@ -71,6 +71,9 @@ int EMVSelectApplication(struct tlvdb *tlv, uint8_t *AID, size_t *AIDlen); // Get Processing Options int EMVGPO(Iso7816CommandChannel channel, bool LeaveFieldON, uint8_t *PDOL, size_t PDOLLen, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw, struct tlvdb *tlv); int EMVReadRecord(Iso7816CommandChannel channel, bool LeaveFieldON, uint8_t SFI, uint8_t SFIrec, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw, struct tlvdb *tlv); + +// Emv override get data +int EMVGetData(Iso7816CommandChannel channel, bool LeaveFieldON, uint16_t foo, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw, struct tlvdb *tlv); // AC int EMVGenerateChallenge(Iso7816CommandChannel channel, bool LeaveFieldON, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw, struct tlvdb *tlv); int EMVAC(Iso7816CommandChannel channel, bool LeaveFieldON, uint8_t RefControl, uint8_t *CDOL, size_t CDOLLen, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw, struct tlvdb *tlv); From 3c6d1c492fdd978a729e5fd02ad2c3550732b78e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 14 Jul 2023 18:23:36 +0200 Subject: [PATCH 006/299] text --- client/src/emv/cmdemv.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index b2459c79c..e148e19bb 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -2600,8 +2600,10 @@ out: static int CmdEMVReader(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "emv reader", - "Act as a EMV reader to identify tag. Look for EMV tags until Enter or the pm3 button is pressed", + "Act as a EMV reader to identify tag. Look for EMV tags until Enter or the pm3 button is pressed\n" + "In `verbose` mode it will also try to extract and decode the transaction logs stored on card in either channel.\n", "emv reader\n" + "emv reader -v\n" "emv reader -@ -> Continuous mode\n" ); void *argtable[] = { From 23eca8fecc20e26965689dc520e3099520851d5e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 14 Jul 2023 18:29:50 +0200 Subject: [PATCH 007/299] remove debugging code --- client/src/emv/cmdemv.c | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index e148e19bb..52c3db0e9 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -2295,16 +2295,6 @@ static int CmdEMVList(const char *Cmd) { } static int CmdEMVTest(const char *Cmd) { - - uint8_t pan[16] = "4000340099900505"; - uint8_t expiry[4] = "2102"; - uint8_t servicecode[3] = "101"; - uint8_t atc[4] = "1001"; - - emv_calc_cvv(pan, 16, expiry, servicecode, atc); - return PM3_SUCCESS; - - CLIParserContext *ctx; CLIParserInit(&ctx, "emv test", "Executes tests\n", From b997a78bca1f88c54b94521484c374d3eb39b45f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 14 Jul 2023 18:30:50 +0200 Subject: [PATCH 008/299] remove debugging code --- client/src/emv/cmdemv.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 52c3db0e9..1f96605e2 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -79,6 +79,7 @@ static void PrintChannel(Iso7816CommandChannel channel) { } } +/* static int emv_calc_cvv(const uint8_t *pan, size_t panlen, const uint8_t *expiry, const uint8_t *servicecode, const uint8_t *atc) { uint8_t key[16] = {0}; @@ -118,7 +119,7 @@ static int emv_calc_cvv(const uint8_t *pan, size_t panlen, const uint8_t *expiry PrintAndLogEx(INFO, "key... %s", sprint_hex_inrow(key, sizeof(key))); PrintAndLogEx(INFO, "d..... %s", sprint_hex_inrow(d, sizeof(d))); -/* + mbedtls_des3_context ctx3; mbedtls_des3_init(&ctx3); mbedtls_des3_set2key_enc(&ctx3, key); @@ -131,9 +132,11 @@ static int emv_calc_cvv(const uint8_t *pan, size_t panlen, const uint8_t *expiry memset(encrypted, 0, sizeof(encrypted)); des3_encrypt(encrypted, d, key, 2); PrintAndLogEx(INFO, "enc... %s", sprint_hex_inrow(encrypted, sizeof(encrypted))); - */ + return PM3_SUCCESS; } +*/ + static size_t logtemplate_calculate_len(const struct tlv *tlv, size_t data_len) { if (!tlv) From 5f8cd5caca3cb1e8006c5aaccf8091a9b24c1bed Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 14 Jul 2023 18:34:14 +0200 Subject: [PATCH 009/299] make style --- client/src/cmdhfmfhard.c | 4 +- client/src/comms.c | 8 +- client/src/emv/cmdemv.c | 88 +++++----- client/src/iso4217.h | 370 +++++++++++++++++++-------------------- client/src/nfc/ndef.c | 2 +- doc/commands.json | 12 +- 6 files changed, 243 insertions(+), 241 deletions(-) diff --git a/client/src/cmdhfmfhard.c b/client/src/cmdhfmfhard.c index 090dcf531..be7b3a4c3 100644 --- a/client/src/cmdhfmfhard.c +++ b/client/src/cmdhfmfhard.c @@ -373,8 +373,8 @@ static void init_bitflip_bitarrays(void) { exit(4); } - bytesread = fread(bitset, 1, filesize-sizeof(count), statesfile); - if (bytesread != filesize-sizeof(count)) { + bytesread = fread(bitset, 1, filesize - sizeof(count), statesfile); + if (bytesread != filesize - sizeof(count)) { PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); fclose(statesfile); exit(5); diff --git a/client/src/comms.c b/client/src/comms.c index 1c3d1f686..3b7509a38 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -670,10 +670,10 @@ int TestProxmark(pm3_device_t *dev) { bool is_bt_conn = (memcmp(g_conn.serial_port_name, "bt:", 3) == 0); PrintAndLogEx(INFO, "Communicating with PM3 over %s%s%s", - (g_conn.send_via_fpc_usart) ? _YELLOW_("FPC UART") : _YELLOW_("USB-CDC"), - (is_tcp_conn) ? " over " _YELLOW_("TCP") : "", - (is_bt_conn) ? " over " _YELLOW_("BT") : "" - ); + (g_conn.send_via_fpc_usart) ? _YELLOW_("FPC UART") : _YELLOW_("USB-CDC"), + (is_tcp_conn) ? " over " _YELLOW_("TCP") : "", + (is_bt_conn) ? " over " _YELLOW_("BT") : "" + ); if (g_conn.send_via_fpc_usart) { PrintAndLogEx(INFO, "PM3 UART serial baudrate: " _YELLOW_("%u") "\n", g_conn.uart_speed); diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 1f96605e2..8a0b7f82d 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -89,7 +89,7 @@ static int emv_calc_cvv(const uint8_t *pan, size_t panlen, const uint8_t *expiry uint8_t *pd = d; memcpy(pd, pan, panlen); - pd += panlen; + pd += panlen; memcpy(pd, expiry, 4); pd += 4; @@ -129,7 +129,7 @@ static int emv_calc_cvv(const uint8_t *pan, size_t panlen, const uint8_t *expiry PrintAndLogEx(INFO, "enc... %s", sprint_hex_inrow(encrypted, sizeof(encrypted))); - memset(encrypted, 0, sizeof(encrypted)); + memset(encrypted, 0, sizeof(encrypted)); des3_encrypt(encrypted, d, key, 2); PrintAndLogEx(INFO, "enc... %s", sprint_hex_inrow(encrypted, sizeof(encrypted))); @@ -195,23 +195,23 @@ static struct tlvdb *emv_logtemplate_parse(const struct tlv *tlv, const unsigned } static int emv_parse_log(struct tlvdb *ttdb, const uint8_t *d, size_t n) { -/* - The Log Format (9F4F) is a list in tag and length format (i.e., "TL" instead of TLV) See description in Table 33 on page 141. + /* + The Log Format (9F4F) is a list in tag and length format (i.e., "TL" instead of TLV) See description in Table 33 on page 141. - In your example, "9F 27 01 9F 02 06 5F 2A 02 9A 03 9F 36 02 9F 52 06 DF 3E 01 9F 21 03 9F 7C 14" means: + In your example, "9F 27 01 9F 02 06 5F 2A 02 9A 03 9F 36 02 9F 52 06 DF 3E 01 9F 21 03 9F 7C 14" means: - 9F27 01 (Cryptogram Information Data) - 9F02 06 (Amount, Authorised) - 5F2A 02 (Transaction Currency Code) - 9A 03 (Transaction Date) - 9F36 02 (Application Transaction Counter) - 9F52 06 (Terminal Compatibility Indicator) - DF3E 01 - 9F21 03 (Transaction Time) - 9F7C 14 (Visa Customer Exclusive Data) + 9F27 01 (Cryptogram Information Data) + 9F02 06 (Amount, Authorised) + 5F2A 02 (Transaction Currency Code) + 9A 03 (Transaction Date) + 9F36 02 (Application Transaction Counter) + 9F52 06 (Terminal Compatibility Indicator) + DF3E 01 + 9F21 03 (Transaction Time) + 9F7C 14 (Visa Customer Exclusive Data) -*/ - int pos = 0; + */ + int pos = 0; struct tlvdb *tp = ttdb; while (tp) { const struct tlv *tpitem = tlvdb_get_tlv(tp); @@ -237,12 +237,12 @@ static int emv_parse_log(struct tlvdb *ttdb, const uint8_t *d, size_t n) { PrintAndLogEx(INFO, "%-30s... " _YELLOW_("%s"), s, sprint_hex_inrow(d + pos, tpitem->len)); break; } - + pos += tpitem->len; tp = tlvdb_elm_get_next(tp); } - return PM3_SUCCESS; + return PM3_SUCCESS; } static int emv_extract_log_info(uint8_t *response, size_t reslen, uint8_t *lid, uint8_t *lrecs) { @@ -269,7 +269,7 @@ static int emv_extract_log_info(uint8_t *response, size_t reslen, uint8_t *lid, return res; } -static int emv_parse_track1(const uint8_t *d, size_t n, bool verbose){ +static int emv_parse_track1(const uint8_t *d, size_t n, bool verbose) { if (d == NULL || n < 10) { return PM3_EINVARG; } @@ -283,31 +283,31 @@ static int emv_parse_track1(const uint8_t *d, size_t n, bool verbose){ } // decoder - char *tmp = str_ndup((const char*)d, n); + char *tmp = str_ndup((const char *)d, n); uint8_t i = 0; char delim[2] = "^"; char *token = strtok(tmp, delim); while (token != NULL) { - switch(i) { + switch (i) { case 0: { size_t a = strlen(token); if (a == 16) { PrintAndLogEx(INFO, "PAN...................... %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c", - token[1], token[2],token[3], token[4], - token[5], token[6],token[7], token[8], - token[9], token[10],token[11], token[12], - token[13], token[14],token[15], token[16] - ); + token[1], token[2], token[3], token[4], + token[5], token[6], token[7], token[8], + token[9], token[10], token[11], token[12], + token[13], token[14], token[15], token[16] + ); } else if (a == 19) { PrintAndLogEx(INFO, "PAN...................... %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c", - token[1], token[2],token[3], token[4], - token[5], token[6],token[7], token[8], - token[9], token[10],token[11], token[12], - token[13], token[14],token[15], token[16], - token[17], token[18],token[19] - ); - } + token[1], token[2], token[3], token[4], + token[5], token[6], token[7], token[8], + token[9], token[10], token[11], token[12], + token[13], token[14], token[15], token[16], + token[17], token[18], token[19] + ); + } break; } case 1: @@ -327,7 +327,7 @@ static int emv_parse_track1(const uint8_t *d, size_t n, bool verbose){ token += 4; PrintAndLogEx(INFO, "CVV / iCvv............... %.*s", 3, token); - token +=3; + token += 3; PrintAndLogEx(INFO, "Trailing................. %s", token); break; @@ -358,11 +358,11 @@ static int emv_parse_track2(const uint8_t *d, size_t n, bool verbose) { tmp++; PrintAndLogEx(INFO, "PAN...................... %c%c%c%c %c%c%c%c %c%c%c%c %c%c%c%c", - tmp[0], tmp[1], tmp[2],tmp[3], - tmp[4], tmp[5], tmp[6],tmp[7], - tmp[8], tmp[9], tmp[10],tmp[11], - tmp[12],tmp[13], tmp[14],tmp[15] - ); + tmp[0], tmp[1], tmp[2], tmp[3], + tmp[4], tmp[5], tmp[6], tmp[7], + tmp[8], tmp[9], tmp[10], tmp[11], + tmp[12], tmp[13], tmp[14], tmp[15] + ); tmp += 16; if (tmp[0] == '=' || tmp[0] == 'D') @@ -378,7 +378,7 @@ static int emv_parse_track2(const uint8_t *d, size_t n, bool verbose) { tmp += 4; PrintAndLogEx(INFO, "CVV / iCvv............... %.*s", 3, tmp); - tmp +=3; + tmp += 3; PrintAndLogEx(INFO, "Trailing................. %s", tmp); @@ -2694,7 +2694,7 @@ static int CmdEMVReader(const char *Cmd) { continue; } // Log template tag - if (extra_data[i] == 0x9F4F ) { + if (extra_data[i] == 0x9F4F) { struct tlvdb *ttdb = tlvdb_find_full(tlvRoot, extra_data[i]); const struct tlv *ttag = tlvdb_get_tlv(ttdb); tlogDB = emv_logtemplate_parse(ttag, buf, len); @@ -2764,8 +2764,8 @@ static int CmdEMVReader(const char *Cmd) { } // only check for logs file if we found 0x9F4D - if ( verbose && log_found && log_template_found ) { - + if (verbose && log_found && log_template_found) { + for (int i = 1; i <= log_file_records; i++) { res = EMVReadRecord(channel, true, log_file_id, i, buf, sizeof(buf), &len, &sw, tlvRoot); if (res) { @@ -2786,7 +2786,7 @@ static int CmdEMVReader(const char *Cmd) { // free tlv object tlvdb_free(tlvRoot); - + } while (continuous); DropFieldEx(channel); diff --git a/client/src/iso4217.h b/client/src/iso4217.h index a35ff8f93..594a0bb38 100644 --- a/client/src/iso4217.h +++ b/client/src/iso4217.h @@ -31,191 +31,191 @@ const char *getCurrencyInfo(const char *cn_str); // atr_t array is expected to be NULL terminated const static iso4217_t Iso4217Table[] = { - {"008","Lek",2}, - {"012","Algerian Dinar",2}, - {"032","Argentine Peso",2}, - {"036","Australian Dollar",2}, - {"044","Bahamian Dollar",2}, - {"048","Bahraini Dinar",3}, - {"050","Taka",2}, - {"051","Armenian Dram",2}, - {"052","Barbados Dollar",2}, - {"060","Bermudian Dollar",2}, - {"064","Ngultrum",2}, - {"068","Boliviano",2}, - {"072","Pula",2}, - {"084","Belize Dollar",2}, - {"090","Solomon Islands Dollar",2}, - {"096","Brunei Dollar",2}, - {"104","Kyat",2}, - {"108","Burundi Franc",0}, - {"116","Riel",2}, - {"124","Canadian Dollar",2}, - {"132","Cabo Verde Escudo",2}, - {"136","Cayman Islands Dollar",2}, - {"144","Sri Lanka Rupee",2}, - {"152","Chilean Peso",0}, - {"156","Yuan Renminbi",2}, - {"170","Colombian Peso",2}, - {"174","Comoro Franc",0}, - {"188","Costa Rican Colon",2}, - {"191","Croatian Kuna",2}, - {"192","Cuban Peso",2}, - {"203","Czech Koruna",2}, - {"208","Danish Krone",2}, - {"214","Dominican Peso",2}, - {"222","El Salvador Colon",2}, - {"230","Ethiopian Birr",2}, - {"232","Nakfa",2}, - {"233","Kroon",2}, - {"238","Falkland Islands Pound",2}, - {"242","Fiji Dollar",2}, - {"262","Djibouti Franc",0}, - {"270","Dalasi",2}, - {"292","Gibraltar Pound",2}, - {"320","Quetzal",2}, - {"324","Guinea Franc",0}, - {"328","Guyana Dollar",2}, - {"332","Gourde",2}, - {"340","Lempira",2}, - {"344","Hong Kong Dollar",2}, - {"348","Forint",2}, - {"352","Iceland Krona",0}, - {"356","Indian Rupee",2}, - {"360","Rupiah",2}, - {"364","Iranian Rial",2}, - {"368","Iraqi Dinar",3}, - {"376","New Israeli Sheqel",2}, - {"388","Jamaican Dollar",2}, - {"392","Yen",0}, - {"398","Tenge",2}, - {"400","Jordanian Dinar",3}, - {"404","Kenyan Shilling",2}, - {"408","North Korean Won",2}, - {"410","Won",0}, - {"414","Kuwaiti Dinar",3}, - {"417","Som",2}, - {"418","Kip",2}, - {"422","Lebanese Pound",2}, - {"426","Loti",2}, - {"428","Latvian Lats",2}, - {"430","Liberian Dollar",2}, - {"434","Libyan Dinar",3}, - {"440","Lithuanian Litas",2}, - {"446","Pataca",2}, - {"454","Kwacha",2}, - {"458","Malaysian Ringgit",2}, - {"462","Rufiyaa",2}, - {"478","Ouguiya",2}, - {"480","Mauritius Rupee",2}, - {"484","Mexican Peso",2}, - {"496","Tugrik",2}, - {"498","Moldovan Leu",2}, - {"504","Moroccan Dirham",2}, - {"512","Rial Omani",3}, - {"516","Namibia Dollar",2}, - {"524","Nepalese Rupee",2}, - {"532","Netherlands Antillean Guilder",2}, - {"533","Aruban Florin",2}, - {"548","Vatu",0}, - {"554","New Zealand Dollar",2}, - {"558","Cordoba Oro",2}, - {"566","Naira",2}, - {"578","Norwegian Krone",2}, - {"586","Pakistan Rupee",2}, - {"590","Balboa",2}, - {"598","Kina",2}, - {"600","Guarani",0}, - {"604","Nuevo Sol",2}, - {"608","Philippine Peso",2}, - {"624","Guinea-Bissau Peso", -1}, - {"634","Qatari Rial",2}, - {"643","Russian Ruble",2}, - {"646","Rwanda Franc",0}, - {"654","Saint Helena Pound",2}, - {"678","Dobra",2}, - {"682","Saudi Riyal",2}, - {"690","Seychelles Rupee",2}, - {"694","Leone",2}, - {"702","Singapore Dollar",2}, - {"704","Dong",0}, - {"706","Somali Shilling",2}, - {"710","Rand",2}, - {"728","South Sudanese Pound",2}, - {"748","Lilangeni",2}, - {"752","Swedish Krona",2}, - {"756","Swiss Franc",2}, - {"760","Syrian Pound",2}, - {"764","Baht",2}, - {"776","Pa\'anga",2}, - {"780","Trinidad and Tobago Dollar",2}, - {"784","UAE Dirham",2}, - {"788","Tunisian Dinar",3}, - {"800","Uganda Shilling",0}, - {"807","Denar",2}, - {"818","Egyptian Pound",2}, - {"826","Pound Sterling",2}, - {"834","Tanzanian Shilling",2}, - {"840","US Dollar",2}, - {"858","Peso Uruguayo",2}, - {"860","Uzbekistan Sum",2}, - {"882","Tala",2}, - {"886","Yemeni Rial",2}, - {"894","Zambian Kwacha",2}, - {"901","New Taiwan Dollar",2}, - {"931","Peso Convertible",2}, - {"932","Zimbabwe Dollar",2}, - {"934","Turkmenistan New Manat",2}, - {"936","Ghana Cedi",2}, - {"937","Bolivar",2}, - {"938","Sudanese Pound",2}, - {"940","Uruguay Peso en Unidades Indexadas (URUIURUI)",0}, - {"941","Serbian Dinar",2}, - {"943","Mozambique Metical",2}, - {"944","Azerbaijanian Manat",2}, - {"946","New Romanian Leu",2}, - {"947","WIR Euro",2}, - {"948","WIR Franc",2}, - {"949","Turkish Lira",2}, - {"950","CFA Franc BEAC",0}, - {"951","East Caribbean Dollar",2}, - {"952","CFA Franc BCEAO",0}, - {"953","CFP Franc",0}, - {"955","Bond Markets Unit European Composite Unit (EURCO)",0}, - {"956","Bond Markets Unit European Monetary Unit (E.M.U.-6)",0}, - {"957","Bond Markets Unit European Unit of Account 9 (E.U.A.-9)",0}, - {"958","Bond Markets Unit European Unit of Account 17 (E.U.A.-17)",0}, - {"959","Gold",0}, - {"960","SDR (Special Drawing Right)",0}, - {"961","Silver",0}, - {"962","Platinum",0}, - {"963","Codes specifically reserved for testing purposes",-1}, - {"964","Palladium",-1}, - {"965","ADB Unit of Account",-1}, - {"967","Zambian Kwacha",2}, - {"968","Surinam Dollar",2}, - {"969","Malagasy Ariary",1}, - {"969","Malagasy Ariary",2}, - {"970","Unidad de Valor Real",2}, - {"971","Afghani",2}, - {"972","Somoni",2}, - {"973","Kwanza",2}, - {"974","Belarussian Ruble",0}, - {"975","Bulgarian Lev",2}, - {"976","Congolese Franc",2}, - {"977","Convertible Mark",2}, - {"978","Euro",2}, - {"979","Mexican Unidad de Inversion (UDI)",2}, - {"980","Hryvnia",2}, - {"981","Lari",2}, - {"984","Mvdol",2}, - {"985","Zloty",2}, - {"986","Brazilian Real",2}, - {"990","Unidad de Fomento",4}, - {"994","Sucre",-1}, - {"997","US Dollar (Next day)",2}, - {"998","US Dollar (Same day)",2}, - {"999","No currency is involved",-1}, + {"008", "Lek", 2}, + {"012", "Algerian Dinar", 2}, + {"032", "Argentine Peso", 2}, + {"036", "Australian Dollar", 2}, + {"044", "Bahamian Dollar", 2}, + {"048", "Bahraini Dinar", 3}, + {"050", "Taka", 2}, + {"051", "Armenian Dram", 2}, + {"052", "Barbados Dollar", 2}, + {"060", "Bermudian Dollar", 2}, + {"064", "Ngultrum", 2}, + {"068", "Boliviano", 2}, + {"072", "Pula", 2}, + {"084", "Belize Dollar", 2}, + {"090", "Solomon Islands Dollar", 2}, + {"096", "Brunei Dollar", 2}, + {"104", "Kyat", 2}, + {"108", "Burundi Franc", 0}, + {"116", "Riel", 2}, + {"124", "Canadian Dollar", 2}, + {"132", "Cabo Verde Escudo", 2}, + {"136", "Cayman Islands Dollar", 2}, + {"144", "Sri Lanka Rupee", 2}, + {"152", "Chilean Peso", 0}, + {"156", "Yuan Renminbi", 2}, + {"170", "Colombian Peso", 2}, + {"174", "Comoro Franc", 0}, + {"188", "Costa Rican Colon", 2}, + {"191", "Croatian Kuna", 2}, + {"192", "Cuban Peso", 2}, + {"203", "Czech Koruna", 2}, + {"208", "Danish Krone", 2}, + {"214", "Dominican Peso", 2}, + {"222", "El Salvador Colon", 2}, + {"230", "Ethiopian Birr", 2}, + {"232", "Nakfa", 2}, + {"233", "Kroon", 2}, + {"238", "Falkland Islands Pound", 2}, + {"242", "Fiji Dollar", 2}, + {"262", "Djibouti Franc", 0}, + {"270", "Dalasi", 2}, + {"292", "Gibraltar Pound", 2}, + {"320", "Quetzal", 2}, + {"324", "Guinea Franc", 0}, + {"328", "Guyana Dollar", 2}, + {"332", "Gourde", 2}, + {"340", "Lempira", 2}, + {"344", "Hong Kong Dollar", 2}, + {"348", "Forint", 2}, + {"352", "Iceland Krona", 0}, + {"356", "Indian Rupee", 2}, + {"360", "Rupiah", 2}, + {"364", "Iranian Rial", 2}, + {"368", "Iraqi Dinar", 3}, + {"376", "New Israeli Sheqel", 2}, + {"388", "Jamaican Dollar", 2}, + {"392", "Yen", 0}, + {"398", "Tenge", 2}, + {"400", "Jordanian Dinar", 3}, + {"404", "Kenyan Shilling", 2}, + {"408", "North Korean Won", 2}, + {"410", "Won", 0}, + {"414", "Kuwaiti Dinar", 3}, + {"417", "Som", 2}, + {"418", "Kip", 2}, + {"422", "Lebanese Pound", 2}, + {"426", "Loti", 2}, + {"428", "Latvian Lats", 2}, + {"430", "Liberian Dollar", 2}, + {"434", "Libyan Dinar", 3}, + {"440", "Lithuanian Litas", 2}, + {"446", "Pataca", 2}, + {"454", "Kwacha", 2}, + {"458", "Malaysian Ringgit", 2}, + {"462", "Rufiyaa", 2}, + {"478", "Ouguiya", 2}, + {"480", "Mauritius Rupee", 2}, + {"484", "Mexican Peso", 2}, + {"496", "Tugrik", 2}, + {"498", "Moldovan Leu", 2}, + {"504", "Moroccan Dirham", 2}, + {"512", "Rial Omani", 3}, + {"516", "Namibia Dollar", 2}, + {"524", "Nepalese Rupee", 2}, + {"532", "Netherlands Antillean Guilder", 2}, + {"533", "Aruban Florin", 2}, + {"548", "Vatu", 0}, + {"554", "New Zealand Dollar", 2}, + {"558", "Cordoba Oro", 2}, + {"566", "Naira", 2}, + {"578", "Norwegian Krone", 2}, + {"586", "Pakistan Rupee", 2}, + {"590", "Balboa", 2}, + {"598", "Kina", 2}, + {"600", "Guarani", 0}, + {"604", "Nuevo Sol", 2}, + {"608", "Philippine Peso", 2}, + {"624", "Guinea-Bissau Peso", -1}, + {"634", "Qatari Rial", 2}, + {"643", "Russian Ruble", 2}, + {"646", "Rwanda Franc", 0}, + {"654", "Saint Helena Pound", 2}, + {"678", "Dobra", 2}, + {"682", "Saudi Riyal", 2}, + {"690", "Seychelles Rupee", 2}, + {"694", "Leone", 2}, + {"702", "Singapore Dollar", 2}, + {"704", "Dong", 0}, + {"706", "Somali Shilling", 2}, + {"710", "Rand", 2}, + {"728", "South Sudanese Pound", 2}, + {"748", "Lilangeni", 2}, + {"752", "Swedish Krona", 2}, + {"756", "Swiss Franc", 2}, + {"760", "Syrian Pound", 2}, + {"764", "Baht", 2}, + {"776", "Pa\'anga", 2}, + {"780", "Trinidad and Tobago Dollar", 2}, + {"784", "UAE Dirham", 2}, + {"788", "Tunisian Dinar", 3}, + {"800", "Uganda Shilling", 0}, + {"807", "Denar", 2}, + {"818", "Egyptian Pound", 2}, + {"826", "Pound Sterling", 2}, + {"834", "Tanzanian Shilling", 2}, + {"840", "US Dollar", 2}, + {"858", "Peso Uruguayo", 2}, + {"860", "Uzbekistan Sum", 2}, + {"882", "Tala", 2}, + {"886", "Yemeni Rial", 2}, + {"894", "Zambian Kwacha", 2}, + {"901", "New Taiwan Dollar", 2}, + {"931", "Peso Convertible", 2}, + {"932", "Zimbabwe Dollar", 2}, + {"934", "Turkmenistan New Manat", 2}, + {"936", "Ghana Cedi", 2}, + {"937", "Bolivar", 2}, + {"938", "Sudanese Pound", 2}, + {"940", "Uruguay Peso en Unidades Indexadas (URUIURUI)", 0}, + {"941", "Serbian Dinar", 2}, + {"943", "Mozambique Metical", 2}, + {"944", "Azerbaijanian Manat", 2}, + {"946", "New Romanian Leu", 2}, + {"947", "WIR Euro", 2}, + {"948", "WIR Franc", 2}, + {"949", "Turkish Lira", 2}, + {"950", "CFA Franc BEAC", 0}, + {"951", "East Caribbean Dollar", 2}, + {"952", "CFA Franc BCEAO", 0}, + {"953", "CFP Franc", 0}, + {"955", "Bond Markets Unit European Composite Unit (EURCO)", 0}, + {"956", "Bond Markets Unit European Monetary Unit (E.M.U.-6)", 0}, + {"957", "Bond Markets Unit European Unit of Account 9 (E.U.A.-9)", 0}, + {"958", "Bond Markets Unit European Unit of Account 17 (E.U.A.-17)", 0}, + {"959", "Gold", 0}, + {"960", "SDR (Special Drawing Right)", 0}, + {"961", "Silver", 0}, + {"962", "Platinum", 0}, + {"963", "Codes specifically reserved for testing purposes", -1}, + {"964", "Palladium", -1}, + {"965", "ADB Unit of Account", -1}, + {"967", "Zambian Kwacha", 2}, + {"968", "Surinam Dollar", 2}, + {"969", "Malagasy Ariary", 1}, + {"969", "Malagasy Ariary", 2}, + {"970", "Unidad de Valor Real", 2}, + {"971", "Afghani", 2}, + {"972", "Somoni", 2}, + {"973", "Kwanza", 2}, + {"974", "Belarussian Ruble", 0}, + {"975", "Bulgarian Lev", 2}, + {"976", "Congolese Franc", 2}, + {"977", "Convertible Mark", 2}, + {"978", "Euro", 2}, + {"979", "Mexican Unidad de Inversion (UDI)", 2}, + {"980", "Hryvnia", 2}, + {"981", "Lari", 2}, + {"984", "Mvdol", 2}, + {"985", "Zloty", 2}, + {"986", "Brazilian Real", 2}, + {"990", "Unidad de Fomento", 4}, + {"994", "Sucre", -1}, + {"997", "US Dollar (Next day)", 2}, + {"998", "US Dollar (Same day)", 2}, + {"999", "No currency is involved", -1}, {"NULL", "N/A", -1} }; diff --git a/client/src/nfc/ndef.c b/client/src/nfc/ndef.c index 3e2e1973f..44ef70ee6 100644 --- a/client/src/nfc/ndef.c +++ b/client/src/nfc/ndef.c @@ -1050,7 +1050,7 @@ static int ndefDecodePayload(NDEFHeader_t *ndef, bool verbose) { if (str_startswith(begin, NDEF_BLUEAPPL_EP)) { - ndefDecodeMime_bt(ndef); + ndefDecodeMime_bt(ndef); } if (str_startswith(begin, NDEF_BLUEAPPL_SECURE_LE)) { ndefDecodeMime_bt_secure_le_oob(ndef); diff --git a/doc/commands.json b/doc/commands.json index d4cbf628a..40ae8cbc9 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -901,18 +901,20 @@ }, "emv reader": { "command": "emv reader", - "description": "Act as a EMV reader to identify tag. Look for EMV tags until Enter or the pm3 button is pressed", + "description": "Act as a EMV reader to identify tag. Look for EMV tags until Enter or the pm3 button is pressed In `verbose` mode it will also try to extract and decode the transaction logs stored on card in either channel.", "notes": [ "emv reader", + "emv reader -v", "emv reader -@ -> Continuous mode" ], "offline": false, "options": [ "-h, --help This help", "-w, --wired Send data via contact (iso7816) interface. (def: Contactless interface)", + "-v, --verbose verbose", "-@ continuous reader mode" ], - "usage": "emv reader [-hw@]" + "usage": "emv reader [-hwv@]" }, "emv readrec": { "command": "emv readrec", @@ -2653,8 +2655,8 @@ "hf fido auth --kh 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f -> execute command with 2 parameters, filled 0x00 and key handle", "hf fido auth", "--kh 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f", - "--cp 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f", - "--ap 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f -> execute command with parameters" + "--cpx 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f", + "--apx 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f -> execute command with parameters" ], "offline": false, "options": [ @@ -11687,6 +11689,6 @@ "metadata": { "commands_extracted": 679, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-07-10T18:33:37" + "extracted_on": "2023-07-14T16:33:40" } } \ No newline at end of file From 6cc59848d55bdcc9017526a948f181ebaf570fd0 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 15 Jul 2023 11:51:08 +0200 Subject: [PATCH 010/299] fix bug in return code for hf mf writeblock where it would say it succeeded when it didnt --- armsrc/mifarecmd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 145527a7e..ef6b6022f 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -145,7 +145,7 @@ int16_t mifare_cmd_writeblocks(uint8_t key_auth_cmd, uint8_t *key, uint8_t write LED_B_OFF(); LED_C_OFF(); - uint8_t retval = PM3_SUCCESS; + int retval = PM3_SUCCESS; if (!iso14443a_select_card(uid, NULL, &cuid, true, 0, true)) { if (g_dbglevel >= DBG_ERROR) Dbprintf("Can't select card"); From 772b9121f627383d728d6fd967fcd0dda3f8fc93 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 15 Jul 2023 11:51:47 +0200 Subject: [PATCH 011/299] some output can be at debug logging instead --- client/src/cmdhf14a.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 8acf021cc..a8ec8a60d 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -1009,7 +1009,7 @@ static int CmdExchangeAPDU(bool chainingin, uint8_t *datain, int datainlen, bool *dataoutlen += dlen; if (maxdataoutlen && *dataoutlen > maxdataoutlen) { - PrintAndLogEx(ERR, "APDU: Buffer too small(%d), needs %d bytes", *dataoutlen, maxdataoutlen); + PrintAndLogEx(DEBUG, "ERR: APDU: Buffer too small(%d), needs %d bytes", *dataoutlen, maxdataoutlen); return PM3_EAPDU_FAIL; } @@ -1021,19 +1021,19 @@ static int CmdExchangeAPDU(bool chainingin, uint8_t *datain, int datainlen, bool } if (!iLen) { - PrintAndLogEx(ERR, "APDU: No APDU response"); + PrintAndLogEx(DEBUG, "ERR: APDU: No APDU response"); return PM3_EAPDU_FAIL; } // check apdu length if (iLen < 2 && iLen >= 0) { - PrintAndLogEx(ERR, "APDU: Small APDU response, len %d", iLen); + PrintAndLogEx(DEBUG, "ERR: APDU: Small APDU response, len %d", iLen); return PM3_EAPDU_FAIL; } // check block TODO if (iLen == -2) { - PrintAndLogEx(ERR, "APDU: Block type mismatch"); + PrintAndLogEx(DEBUG, "ERR: APDU: Block type mismatch"); return PM3_EAPDU_FAIL; } @@ -1046,11 +1046,11 @@ static int CmdExchangeAPDU(bool chainingin, uint8_t *datain, int datainlen, bool // CRC Check if (iLen == -1) { - PrintAndLogEx(ERR, "APDU: ISO 14443A CRC error"); + PrintAndLogEx(DEBUG, "ERR: APDU: ISO 14443A CRC error"); return PM3_EAPDU_FAIL; } } else { - PrintAndLogEx(ERR, "APDU: Reply timeout"); + PrintAndLogEx(DEBUG, "ERR: APDU: Reply timeout"); return PM3_EAPDU_FAIL; } From 71369a3007bff587f8c0259c3f1ba74910dbfa35 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 15 Jul 2023 11:52:42 +0200 Subject: [PATCH 012/299] text style --- client/src/emv/cmdemv.c | 164 ++++++++++++++++++++-------------------- 1 file changed, 82 insertions(+), 82 deletions(-) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 8a0b7f82d..2282698d5 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -1350,13 +1350,14 @@ static int CmdEMVExec(const char *Cmd) { // https://www.openscdp.org/scripts/tutorial/emv/applicationselection.html if (!forceSearch) { // PPSE - PrintAndLogEx(NORMAL, "\n* PPSE."); + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "* PPSE."); SetAPDULogging(showAPDU); res = EMVSearchPSE(channel, activateField, true, psenum, decodeTLV, tlvSelect); // check PPSE instead of PSE and vice versa if (res) { - PrintAndLogEx(NORMAL, "Check PPSE instead of PSE and vice versa..."); + PrintAndLogEx(INFO, "Check PPSE instead of PSE and vice versa..."); res = EMVSearchPSE(channel, false, true, psenum == 1 ? 2 : 1, decodeTLV, tlvSelect); } @@ -1369,7 +1370,7 @@ static int CmdEMVExec(const char *Cmd) { // Search if (!AIDlen) { - PrintAndLogEx(NORMAL, "\n* Search AID in list."); + PrintAndLogEx(INFO, "\n* Search AID in list."); SetAPDULogging(false); if (EMVSearch(channel, activateField, true, decodeTLV, tlvSelect, false)) { dreturn(PM3_ERFTRANS); @@ -1391,7 +1392,7 @@ static int CmdEMVExec(const char *Cmd) { } // Select - PrintAndLogEx(NORMAL, "\n* Selecting AID:%s", sprint_hex_inrow(AID, AIDlen)); + PrintAndLogEx(INFO, "\n* Selecting AID:%s", sprint_hex_inrow(AID, AIDlen)); SetAPDULogging(showAPDU); res = EMVSelect(channel, false, true, AID, AIDlen, buf, sizeof(buf), &len, &sw, tlvRoot); @@ -1402,13 +1403,13 @@ static int CmdEMVExec(const char *Cmd) { if (decodeTLV) TLVPrintFromBuffer(buf, len); - PrintAndLogEx(NORMAL, "* Selected."); + PrintAndLogEx(INFO, "* Selected."); - PrintAndLogEx(NORMAL, "\n* Init transaction parameters."); + PrintAndLogEx(INFO, "\n* Init transaction parameters."); InitTransactionParameters(tlvRoot, paramLoadJSON, TrType, GenACGPO); TLVPrintFromTLV(tlvRoot); // TODO delete!!! - PrintAndLogEx(NORMAL, "\n* Calc PDOL."); + PrintAndLogEx(INFO, "\n* Calc PDOL."); pdol_data_tlv = dol_process(tlvdb_get(tlvRoot, 0x9f38, NULL), tlvRoot, 0x83); if (!pdol_data_tlv) { PrintAndLogEx(ERR, "Error: can't create PDOL TLV."); @@ -1421,9 +1422,9 @@ static int CmdEMVExec(const char *Cmd) { PrintAndLogEx(ERR, "Error: can't create PDOL data."); dreturn(PM3_ESOFT); } - PrintAndLogEx(NORMAL, "PDOL data[%zu]: %s", pdol_data_tlv_data_len, sprint_hex(pdol_data_tlv_data, pdol_data_tlv_data_len)); + PrintAndLogEx(INFO, "PDOL data[%zu]: %s", pdol_data_tlv_data_len, sprint_hex(pdol_data_tlv_data, pdol_data_tlv_data_len)); - PrintAndLogEx(NORMAL, "\n* GPO."); + PrintAndLogEx(INFO, "\n* GPO."); res = EMVGPO(channel, true, pdol_data_tlv_data, pdol_data_tlv_data_len, buf, sizeof(buf), &len, &sw, tlvRoot); free(pdol_data_tlv_data); @@ -1446,14 +1447,14 @@ static int CmdEMVExec(const char *Cmd) { tlvdb_add(tlvRoot, pan); const struct tlv *pantlv = tlvdb_get(tlvRoot, 0x5a, NULL); - PrintAndLogEx(NORMAL, "\n* * Extracted PAN from track2: %s", sprint_hex(pantlv->value, pantlv->len)); + PrintAndLogEx(INFO, "\n* * Extracted PAN from track2: %s", sprint_hex(pantlv->value, pantlv->len)); } else { PrintAndLogEx(WARNING, "\n* * WARNING: Can't extract PAN from track2."); } } } - PrintAndLogEx(NORMAL, "\n* Read records from AFL."); + PrintAndLogEx(INFO, "\n* Read records from AFL."); const struct tlv *AFL = tlvdb_get(tlvRoot, 0x94, NULL); if (!AFL || !AFL->len) @@ -1471,14 +1472,14 @@ static int CmdEMVExec(const char *Cmd) { uint8_t SFIend = AFL->value[i * 4 + 2]; uint8_t SFIoffline = AFL->value[i * 4 + 3]; - PrintAndLogEx(NORMAL, "* * SFI[%02x] start:%02x end:%02x offline count:%02x", SFI, SFIstart, SFIend, SFIoffline); + PrintAndLogEx(INFO, "* * SFI[%02x] start:%02x end:%02x offline count:%02x", SFI, SFIstart, SFIend, SFIoffline); if (SFI == 0 || SFI == 31 || SFIstart == 0 || SFIstart > SFIend) { - PrintAndLogEx(NORMAL, "SFI ERROR! Skipped..."); + PrintAndLogEx(WARNING, "SFI ERROR! Skipped..."); continue; } for (int n = SFIstart; n <= SFIend; n++) { - PrintAndLogEx(NORMAL, "* * * SFI[%02x] %d", SFI, n); + PrintAndLogEx(INFO, "* * * SFI[%02x] %d", SFI, n); res = EMVReadRecord(channel, true, SFI, n, buf, sizeof(buf), &len, &sw, tlvRoot); if (res) { @@ -1521,7 +1522,7 @@ static int CmdEMVExec(const char *Cmd) { if (ODAiListLen) { struct tlvdb *oda = tlvdb_fixed(0x21, ODAiListLen, ODAiList); // not a standard tag tlvdb_add(tlvRoot, oda); - PrintAndLogEx(NORMAL, "* Input list for Offline Data Authentication added to TLV. len=%zu \n", ODAiListLen); + PrintAndLogEx(INFO, "* Input list for Offline Data Authentication added to TLV. len=%zu \n", ODAiListLen); } // get AIP @@ -1529,20 +1530,20 @@ static int CmdEMVExec(const char *Cmd) { const struct tlv *AIPtlv = tlvdb_get(tlvRoot, 0x82, NULL); if (AIPtlv) { AIP = AIPtlv->value[0] + AIPtlv->value[1] * 0x100; - PrintAndLogEx(NORMAL, "* * AIP=%04x", AIP); + PrintAndLogEx(INFO, "* * AIP=%04x", AIP); } else { PrintAndLogEx(ERR, "Can't find AIP."); } // SDA if (AIP & 0x0040) { - PrintAndLogEx(NORMAL, "\n* SDA"); + PrintAndLogEx(INFO, "\n* SDA"); trSDA(tlvRoot); } // DDA if (AIP & 0x0020) { - PrintAndLogEx(NORMAL, "\n* DDA"); + PrintAndLogEx(INFO, "\n* DDA"); trDDA(channel, decodeTLV, tlvRoot); } @@ -1553,8 +1554,8 @@ static int CmdEMVExec(const char *Cmd) { // 9F26: Application Cryptogram const struct tlv *AC = tlvdb_get(tlvRoot, 0x9F26, NULL); if (AC) { - PrintAndLogEx(NORMAL, "\n--> qVSDC transaction."); - PrintAndLogEx(NORMAL, "* AC path"); + PrintAndLogEx(INFO, "\n--> qVSDC transaction."); + PrintAndLogEx(INFO, "* AC path"); // 9F36: Application Transaction Counter (ATC) const struct tlv *ATC = tlvdb_get(tlvRoot, 0x9F36, NULL); @@ -1564,24 +1565,24 @@ static int CmdEMVExec(const char *Cmd) { const struct tlv *IAD = tlvdb_get(tlvRoot, 0x9F10, NULL); // print AC data - PrintAndLogEx(NORMAL, "ATC: %s", sprint_hex(ATC->value, ATC->len)); - PrintAndLogEx(NORMAL, "AC: %s", sprint_hex(AC->value, AC->len)); + PrintAndLogEx(INFO, "ATC: %s", sprint_hex(ATC->value, ATC->len)); + PrintAndLogEx(INFO, "AC: %s", sprint_hex(AC->value, AC->len)); if (IAD) { - PrintAndLogEx(NORMAL, "IAD: %s", sprint_hex(IAD->value, IAD->len)); + PrintAndLogEx(INFO, "IAD: %s", sprint_hex(IAD->value, IAD->len)); // https://mst-company.ru/blog/ekvajring-emv-tranzaktsiya-emv-transaction-flow-chast-4-pdol-i-beskontaktnye-karty-osobennosti-qvsdc-i-quics if (IAD->value[0] == 0x1f) { - PrintAndLogEx(NORMAL, " Key index: 0x%02x", IAD->value[2]); - PrintAndLogEx(NORMAL, " Crypto ver: 0x%02x(%03d)", IAD->value[1], IAD->value[1]); - PrintAndLogEx(NORMAL, " CVR: %s", sprint_hex(&IAD->value[3], 5)); + PrintAndLogEx(INFO, " Key index: 0x%02x", IAD->value[2]); + PrintAndLogEx(INFO, " Crypto ver: 0x%02x(%03d)", IAD->value[1], IAD->value[1]); + PrintAndLogEx(INFO, " CVR: %s", sprint_hex(&IAD->value[3], 5)); struct tlvdb *cvr = tlvdb_fixed(0x20, 5, &IAD->value[3]); TLVPrintFromTLVLev(cvr, 1); - PrintAndLogEx(NORMAL, " IDD option id: 0x%02x", IAD->value[8]); - PrintAndLogEx(NORMAL, " IDD: %s", sprint_hex(&IAD->value[9], 23)); + PrintAndLogEx(INFO, " IDD option id: 0x%02x", IAD->value[8]); + PrintAndLogEx(INFO, " IDD: %s", sprint_hex(&IAD->value[9], 23)); } else if (IAD->len >= IAD->value[0] + 1) { - PrintAndLogEx(NORMAL, " Key index: 0x%02x", IAD->value[1]); - PrintAndLogEx(NORMAL, " Crypto ver: 0x%02x(%03d)", IAD->value[2], IAD->value[2]); - PrintAndLogEx(NORMAL, " CVR: %s", sprint_hex(&IAD->value[3], IAD->value[0] - 2)); + PrintAndLogEx(INFO, " Key index: 0x%02x", IAD->value[1]); + PrintAndLogEx(INFO, " Crypto ver: 0x%02x(%03d)", IAD->value[2], IAD->value[2]); + PrintAndLogEx(INFO, " CVR: %s", sprint_hex(&IAD->value[3], IAD->value[0] - 2)); struct tlvdb *cvr = tlvdb_fixed(0x20, IAD->value[0] - 2, &IAD->value[3]); TLVPrintFromTLVLev(cvr, 1); if (IAD->len >= 8) { @@ -1607,9 +1608,9 @@ static int CmdEMVExec(const char *Cmd) { if (GetCardPSVendor(AID, AIDlen) == CV_MASTERCARD && (TrType == TT_QVSDCMCHIP || TrType == TT_CDA)) { const struct tlv *CDOL1 = tlvdb_get(tlvRoot, 0x8c, NULL); if (CDOL1 && GetCardPSVendor(AID, AIDlen) == CV_MASTERCARD) { // and m/chip transaction flag - PrintAndLogEx(NORMAL, "\n--> Mastercard M/Chip transaction."); + PrintAndLogEx(INFO, "\n--> Mastercard M/Chip transaction."); - PrintAndLogEx(NORMAL, "* * Generate challenge"); + PrintAndLogEx(INFO, "* * Generate challenge"); res = EMVGenerateChallenge(channel, true, buf, sizeof(buf), &len, &sw, tlvRoot); if (res) { PrintAndLogEx(ERR, "Error GetChallenge. APDU error %4x", sw); @@ -1624,23 +1625,22 @@ static int CmdEMVExec(const char *Cmd) { struct tlvdb *ICCDynN = tlvdb_fixed(0x9f4c, len, buf); tlvdb_add(tlvRoot, ICCDynN); if (decodeTLV) { - PrintAndLogEx(NORMAL, "\n* * ICC Dynamic Number:"); + PrintAndLogEx(INFO, "\n* * ICC Dynamic Number:"); TLVPrintFromTLV(ICCDynN); } - PrintAndLogEx(NORMAL, "* * Calc CDOL1"); + PrintAndLogEx(INFO, "* * Calc CDOL1"); struct tlv *cdol_data_tlv = dol_process(tlvdb_get(tlvRoot, 0x8c, NULL), tlvRoot, 0x01); // 0x01 - dummy tag if (!cdol_data_tlv) { PrintAndLogEx(ERR, "Error: can't create CDOL1 TLV."); dreturn(PM3_ESOFT); } - PrintAndLogEx(NORMAL, "CDOL1 data[%zu]: %s", cdol_data_tlv->len, sprint_hex(cdol_data_tlv->value, cdol_data_tlv->len)); + PrintAndLogEx(INFO, "CDOL1 data[%zu]: %s", cdol_data_tlv->len, sprint_hex(cdol_data_tlv->value, cdol_data_tlv->len)); - PrintAndLogEx(NORMAL, "* * AC1"); + PrintAndLogEx(INFO, "* * AC1"); // EMVAC_TC + EMVAC_CDAREQ --- to get SDAD res = EMVAC(channel, true, (TrType == TT_CDA) ? EMVAC_TC + EMVAC_CDAREQ : EMVAC_TC, (uint8_t *)cdol_data_tlv->value, cdol_data_tlv->len, buf, sizeof(buf), &len, &sw, tlvRoot); - if (res) { PrintAndLogEx(ERR, "AC1 error(%d): %4x. Exit...", res, sw); dreturn(PM3_ERFTRANS); @@ -1650,36 +1650,36 @@ static int CmdEMVExec(const char *Cmd) { TLVPrintFromBuffer(buf, len); // CDA - PrintAndLogEx(NORMAL, "\n* CDA:"); + PrintAndLogEx(INFO, "\n* CDA:"); struct tlvdb *ac_tlv = tlvdb_parse_multi(buf, len); if (tlvdb_get(ac_tlv, 0x9f4b, NULL)) { res = trCDA(tlvRoot, ac_tlv, pdol_data_tlv, cdol_data_tlv); if (res) { - PrintAndLogEx(NORMAL, "CDA error (%d)", res); + PrintAndLogEx(WARNING, "CDA error (%d)", res); } } else { - PrintAndLogEx(NORMAL, "\n* Signed Dynamic Application Data (0x9f4b) not present"); + PrintAndLogEx(INFO, "\n* Signed Dynamic Application Data (0x9f4b) not present"); } free(ac_tlv); free(cdol_data_tlv); - PrintAndLogEx(NORMAL, "\n* M/Chip transaction result:"); + PrintAndLogEx(INFO, "\n* M/Chip transaction result:"); // 9F27: Cryptogram Information Data (CID) const struct tlv *CID = tlvdb_get(tlvRoot, 0x9F27, NULL); if (CID) { emv_tag_dump(CID, 1); - PrintAndLogEx(NORMAL, "------------------------------"); + PrintAndLogEx(INFO, "------------------------------"); if (CID->len > 0) { switch (CID->value[0] & EMVAC_AC_MASK) { case EMVAC_AAC: - PrintAndLogEx(NORMAL, "Transaction DECLINED."); + PrintAndLogEx(INFO, "Transaction DECLINED."); break; case EMVAC_TC: - PrintAndLogEx(NORMAL, "Transaction approved OFFLINE."); + PrintAndLogEx(INFO, "Transaction approved OFFLINE."); break; case EMVAC_ARQC: - PrintAndLogEx(NORMAL, "Transaction approved ONLINE."); + PrintAndLogEx(INFO, "Transaction approved ONLINE."); break; default: PrintAndLogEx(WARNING, "Warning: CID transaction code error %2x", CID->value[0] & EMVAC_AC_MASK); @@ -1697,20 +1697,20 @@ static int CmdEMVExec(const char *Cmd) { // MSD if (AIP & 0x8000 && TrType == TT_MSD) { - PrintAndLogEx(NORMAL, "\n--> MSD transaction."); + PrintAndLogEx(INFO, "\n--> MSD transaction."); - PrintAndLogEx(NORMAL, "* MSD dCVV path. Check dCVV"); + PrintAndLogEx(INFO, "* MSD dCVV path. Check dCVV"); const struct tlv *track2 = tlvdb_get(tlvRoot, 0x57, NULL); if (track2) { - PrintAndLogEx(NORMAL, "Track2: %s", sprint_hex(track2->value, track2->len)); + PrintAndLogEx(INFO, "Track2: %s", sprint_hex(track2->value, track2->len)); struct tlvdb *dCVV = GetdCVVRawFromTrack2(track2); - PrintAndLogEx(NORMAL, "dCVV raw data:"); + PrintAndLogEx(INFO, "dCVV raw data:"); TLVPrintFromTLV(dCVV); if (GetCardPSVendor(AID, AIDlen) == CV_MASTERCARD) { - PrintAndLogEx(NORMAL, "\n* Mastercard calculate UDOL"); + PrintAndLogEx(INFO, "\n* Mastercard calculate UDOL"); // UDOL (9F69) const struct tlv *UDOL = tlvdb_get(tlvRoot, 0x9F69, NULL); @@ -1721,7 +1721,7 @@ static int CmdEMVExec(const char *Cmd) { .value = (uint8_t *)"\x9f\x6a\x04", }; if (!UDOL) - PrintAndLogEx(NORMAL, "Use default UDOL."); + PrintAndLogEx(INFO, "Use default UDOL."); struct tlv *udol_data_tlv = dol_process(UDOL ? UDOL : &defUDOL, tlvRoot, 0x01); // 0x01 - dummy tag if (!udol_data_tlv) { @@ -1729,9 +1729,9 @@ static int CmdEMVExec(const char *Cmd) { dreturn(PM3_ESOFT); } - PrintAndLogEx(NORMAL, "UDOL data[%zu]: %s", udol_data_tlv->len, sprint_hex(udol_data_tlv->value, udol_data_tlv->len)); + PrintAndLogEx(INFO, "UDOL data[%zu]: %s", udol_data_tlv->len, sprint_hex(udol_data_tlv->value, udol_data_tlv->len)); - PrintAndLogEx(NORMAL, "\n* Mastercard compute cryptographic checksum(UDOL)"); + PrintAndLogEx(INFO, "\n* Mastercard compute cryptographic checksum(UDOL)"); res = MSCComputeCryptoChecksum(channel, true, (uint8_t *)udol_data_tlv->value, udol_data_tlv->len, buf, sizeof(buf), &len, &sw, tlvRoot); if (res) { @@ -1754,18 +1754,18 @@ static int CmdEMVExec(const char *Cmd) { // VSDC if (GetCardPSVendor(AID, AIDlen) == CV_VISA && (TrType == TT_VSDC || TrType == TT_CDA)) { - PrintAndLogEx(NORMAL, "\n--> VSDC transaction."); + PrintAndLogEx(INFO, "\n--> VSDC transaction."); - PrintAndLogEx(NORMAL, "* * Calc CDOL1"); + PrintAndLogEx(INFO, "* * Calc CDOL1"); struct tlv *cdol1_data_tlv = dol_process(tlvdb_get(tlvRoot, 0x8c, NULL), tlvRoot, 0x01); // 0x01 - dummy tag if (!cdol1_data_tlv) { PrintAndLogEx(ERR, "Error: can't create CDOL1 TLV."); dreturn(PM3_ESOFT); } - PrintAndLogEx(NORMAL, "CDOL1 data[%zu]: %s", cdol1_data_tlv->len, sprint_hex(cdol1_data_tlv->value, cdol1_data_tlv->len)); + PrintAndLogEx(INFO, "CDOL1 data[%zu]: %s", cdol1_data_tlv->len, sprint_hex(cdol1_data_tlv->value, cdol1_data_tlv->len)); - PrintAndLogEx(NORMAL, "* * AC1"); + PrintAndLogEx(INFO, "* * AC1"); // EMVAC_TC + EMVAC_CDAREQ --- to get SDAD res = EMVAC(channel, true, (TrType == TT_CDA) ? EMVAC_TC + EMVAC_CDAREQ : EMVAC_TC, (uint8_t *)cdol1_data_tlv->value, cdol1_data_tlv->len, buf, sizeof(buf), &len, &sw, tlvRoot); if (res) { @@ -1791,56 +1791,56 @@ static int CmdEMVExec(const char *Cmd) { uint8_t CryptoVersion = 0; const struct tlv *IAD = tlvdb_get(tlvRoot, 0x9f10, NULL); if (IAD && (IAD->len > 1)) { - PrintAndLogEx(NORMAL, "\n* * Issuer Application Data (IAD):"); + PrintAndLogEx(INFO, "\n* * Issuer Application Data (IAD):"); uint8_t VDDlen = IAD->value[0]; // Visa discretionary data length uint8_t IDDlen = 0; // Issuer discretionary data length - PrintAndLogEx(NORMAL, "IAD length: %zu", IAD->len); - PrintAndLogEx(NORMAL, "VDDlen: %d", VDDlen); + PrintAndLogEx(INFO, "IAD length: %zu", IAD->len); + PrintAndLogEx(INFO, "VDDlen: %d", VDDlen); if (VDDlen < IAD->len - 1) { IDDlen = IAD->value[VDDlen + 1]; } - PrintAndLogEx(NORMAL, "IDDlen: %d", IDDlen); + PrintAndLogEx(INFO, "IDDlen: %d", IDDlen); uint8_t DerivKeyIndex = IAD->value[1]; CryptoVersion = IAD->value[2]; - PrintAndLogEx(NORMAL, "CryptoVersion: %d", CryptoVersion); - PrintAndLogEx(NORMAL, "DerivKeyIndex: %d", DerivKeyIndex); + PrintAndLogEx(INFO, "CryptoVersion: %d", CryptoVersion); + PrintAndLogEx(INFO, "DerivKeyIndex: %d", DerivKeyIndex); // Card Verification Results (CVR) decode if ((VDDlen - 2) > 0) { uint8_t CVRlen = IAD->value[3]; if (CVRlen == (VDDlen - 2 - 1)) { - PrintAndLogEx(NORMAL, "CVR length: %d", CVRlen); - PrintAndLogEx(NORMAL, "CVR: %s", sprint_hex(&IAD->value[4], CVRlen)); + PrintAndLogEx(INFO, "CVR length: %d", CVRlen); + PrintAndLogEx(INFO, "CVR: %s", sprint_hex(&IAD->value[4], CVRlen)); } else { PrintAndLogEx(WARNING, "Wrong CVR length! CVR: %s", sprint_hex(&IAD->value[3], VDDlen - 2)); } } if (IDDlen) { - PrintAndLogEx(NORMAL, "IDD: %s", sprint_hex(&IAD->value[VDDlen + 1], IDDlen)); + PrintAndLogEx(INFO, "IDD: %s", sprint_hex(&IAD->value[VDDlen + 1], IDDlen)); } } else { PrintAndLogEx(WARNING, "Issuer Application Data (IAD) not found."); } - PrintAndLogEx(NORMAL, "\n* * Processing online request"); + PrintAndLogEx(INFO, "\n* * Processing online request"); // authorization response code from acquirer const char HostResponse[] = "00"; // 0x3030 size_t HostResponseLen = sizeof(HostResponse) - 1; - PrintAndLogEx(NORMAL, "Host Response: `%s`", HostResponse); + PrintAndLogEx(INFO, "Host Response: `%s`", HostResponse); tlvdb_change_or_add_node(tlvRoot, 0x8a, HostResponseLen, (const unsigned char *)HostResponse); if (CryptoVersion == 10) { - PrintAndLogEx(NORMAL, "\n* * Generate ARPC"); + PrintAndLogEx(INFO, "\n* * Generate ARPC"); // Application Cryptogram (AC) const struct tlv *AC = tlvdb_get(tlvRoot, 0x9f26, NULL); if (AC && (AC->len > 0)) { - PrintAndLogEx(NORMAL, "AC: %s", sprint_hex(AC->value, AC->len)); + PrintAndLogEx(INFO, "AC: %s", sprint_hex(AC->value, AC->len)); size_t rawARPClen = AC->len; uint8_t rawARPC[rawARPClen]; @@ -1848,10 +1848,10 @@ static int CmdEMVExec(const char *Cmd) { for (int i = 0; (i < HostResponseLen) && (i < rawARPClen); i++) { rawARPC[i] ^= HostResponse[i]; } - PrintAndLogEx(NORMAL, "raw ARPC: %s", sprint_hex(rawARPC, rawARPClen)); + PrintAndLogEx(INFO, "raw ARPC: %s", sprint_hex(rawARPC, rawARPClen)); // here must be calculation of ARPC, but we don't know a bank keys. - PrintAndLogEx(NORMAL, "ARPC: n/a"); + PrintAndLogEx(INFO, "ARPC: n/a"); } else { PrintAndLogEx(WARNING, "Application Cryptogram (AC) not found."); @@ -1861,7 +1861,7 @@ static int CmdEMVExec(const char *Cmd) { // needs to send AC2 command (res == ARQC) if ((CID & EMVAC_AC_MASK) == EMVAC_ARQC) { - PrintAndLogEx(NORMAL, "\n* * Calc CDOL2"); + PrintAndLogEx(INFO, "\n* * Calc CDOL2"); struct tlv *cdol2_data_tlv = dol_process(tlvdb_get(tlvRoot, 0x8d, NULL), tlvRoot, 0x01); // 0x01 - dummy tag if (!cdol2_data_tlv) { PrintAndLogEx(ERR, "Error: can't create CDOL2 TLV."); @@ -1869,15 +1869,15 @@ static int CmdEMVExec(const char *Cmd) { dreturn(PM3_ESOFT); } - PrintAndLogEx(NORMAL, "CDOL2 data[%zu]: %s", cdol2_data_tlv->len, sprint_hex(cdol2_data_tlv->value, cdol2_data_tlv->len)); - //PrintAndLogEx(NORMAL, "* * AC2"); + PrintAndLogEx(INFO, "CDOL2 data[%zu]: %s", cdol2_data_tlv->len, sprint_hex(cdol2_data_tlv->value, cdol2_data_tlv->len)); + //PrintAndLogEx(INFO, "* * AC2"); // here must be AC2, but we don't make external authenticate ( /* // AC2 PRINT_INDENT(level); - if ((CID & EMVAC_AC2_MASK) == EMVAC_AAC2) PrintAndLogEx(NORMAL, "\tAC2: AAC (Transaction declined)"); - if ((CID & EMVAC_AC2_MASK) == EMVAC_TC2) PrintAndLogEx(NORMAL, "\tAC2: TC (Transaction approved)"); - if ((CID & EMVAC_AC2_MASK) == EMVAC_ARQC2) PrintAndLogEx(NORMAL, "\tAC2: not requested (ARQC)"); - if ((CID & EMVAC_AC2_MASK) == EMVAC_AC2_MASK) PrintAndLogEx(NORMAL, "\tAC2: RFU"); + if ((CID & EMVAC_AC2_MASK) == EMVAC_AAC2) PrintAndLogEx(INFO, "\tAC2: AAC (Transaction declined)"); + if ((CID & EMVAC_AC2_MASK) == EMVAC_TC2) PrintAndLogEx(INFO, "\tAC2: TC (Transaction approved)"); + if ((CID & EMVAC_AC2_MASK) == EMVAC_ARQC2) PrintAndLogEx(INFO, "\tAC2: not requested (ARQC)"); + if ((CID & EMVAC_AC2_MASK) == EMVAC_AC2_MASK) PrintAndLogEx(INFO, "\tAC2: RFU"); */ free(cdol2_data_tlv); } @@ -1892,7 +1892,7 @@ static int CmdEMVExec(const char *Cmd) { tlvdb_free(tlvSelect); tlvdb_free(tlvRoot); - PrintAndLogEx(NORMAL, "\n* Transaction completed."); + PrintAndLogEx(SUCCESS, "\n* Transaction completed."); return PM3_SUCCESS; } @@ -2786,7 +2786,7 @@ static int CmdEMVReader(const char *Cmd) { // free tlv object tlvdb_free(tlvRoot); - + PrintAndLogEx(INFO, ""); } while (continuous); DropFieldEx(channel); From 3190cc5a3ddaf4892fc689bc5f53acbbb0ba237a Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 15 Jul 2023 14:27:44 +0200 Subject: [PATCH 013/299] text --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 3f704ad62..16e32fd61 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -1822,7 +1822,7 @@ jumptoend: static int CmdHF14AMfNestedStatic(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mf staticnested", - "Execute Nested attack against MIFARE Classic card with static nonce for key recovery.\n" + "Execute static nested attack against MIFARE Classic card with static nonce for key recovery.\n" "Supply a known key from one block to recover all keys", "hf mf staticnested --mini --blk 0 -a -k FFFFFFFFFFFF\n" "hf mf staticnested --1k --blk 0 -a -k FFFFFFFFFFFF\n" From 1e44a26b5462c68898703157593bca60930bb83c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 15 Jul 2023 15:26:01 +0200 Subject: [PATCH 014/299] text --- client/dictionaries/mfc_default_keys.dic | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index d32346428..345d1a702 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -36,6 +36,9 @@ D01AFEEB890A 2612C6DE84CA 707B11FC1481 # +# QL88 diversifed +03F9067646AE +2352C5B56D85 # B0B1B2B3B4B5 C0C1C2C3C4C5 @@ -935,9 +938,9 @@ FBF225DC5D58 # Data https://pastebin.com/BEm6bdAE # vingcard.txt # Note: most likely diversified +96A301BCE267 4708111C8604 3D50D902EA48 -96A301BCE267 6700F10FEC09 7A09CC1DB70A 560F7CFF2D81 @@ -2053,6 +2056,9 @@ D144BD193063 # Data from "the more the marriott" mifare project (colonelborkmundus) # aka The Horde # +# These keys seem to be from Vingcard / Saflok system which means they are diversified +# and not static default keys. To verify this, the UID from such a card is needed. +# # 20230125-01, Elite Member Marriott Rewards 43012BD9EB87 # 20230125-02, Elite Member Marriott Rewards @@ -2133,7 +2139,6 @@ D23C1CB1216E # 20230413-78, Caesars A1D92F808CAF # 20230413-79, The Cosmopolitan, Vegas -# 96A301BCE267 # 20230413-80, Aria 1153C319B4F8 # 20230413-81, Aria From 83e083100ba9b65874ccff7d386c56d1ecce253d Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sat, 15 Jul 2023 16:52:48 +0200 Subject: [PATCH 015/299] Bring LZ4 support for hardnested tables Testing perfs on an old 8-core laptop: BZ2 : 2 Mb, average decompression time: 5514 ms LZ4 -9: 9 Mb, average decompression time: 837 ms RAW : 704 Mb, average decompression time: 368 ms Other LZ4 options don't help: -1 is slower and bigger, --favor-decSpeed does not do anything To enable: apt install liblz4-dev cd client/resources/hardnested_tables for i in *bz2; do bunzip2 $i; lz4 -9 --rm ${i%.bz2}; done --- client/CMakeLists.txt | 18 ++ client/Makefile | 3 + client/experimental_lib/CMakeLists.txt | 18 ++ .../bitflip_0_001_states.bin.bz2 | Bin 2801 -> 0 bytes .../bitflip_0_001_states.bin.lz4 | Bin 0 -> 27811 bytes .../bitflip_0_003_states.bin.bz2 | Bin 1531 -> 0 bytes .../bitflip_0_003_states.bin.lz4 | Bin 0 -> 17673 bytes .../bitflip_0_005_states.bin.bz2 | Bin 4901 -> 0 bytes .../bitflip_0_005_states.bin.lz4 | Bin 0 -> 34843 bytes .../bitflip_0_007_states.bin.bz2 | Bin 1591 -> 0 bytes .../bitflip_0_007_states.bin.lz4 | Bin 0 -> 19198 bytes .../bitflip_0_009_states.bin.bz2 | Bin 1780 -> 0 bytes .../bitflip_0_009_states.bin.lz4 | Bin 0 -> 18034 bytes .../bitflip_0_00b_states.bin.bz2 | Bin 1069 -> 0 bytes .../bitflip_0_00b_states.bin.lz4 | Bin 0 -> 12365 bytes .../bitflip_0_00d_states.bin.bz2 | Bin 2204 -> 0 bytes .../bitflip_0_00d_states.bin.lz4 | Bin 0 -> 22975 bytes .../bitflip_0_00f_states.bin.bz2 | Bin 1214 -> 0 bytes .../bitflip_0_00f_states.bin.lz4 | Bin 0 -> 13684 bytes .../bitflip_0_010_states.bin.bz2 | Bin 1557 -> 0 bytes .../bitflip_0_010_states.bin.lz4 | Bin 0 -> 19000 bytes .../bitflip_0_014_states.bin.bz2 | Bin 3138 -> 0 bytes .../bitflip_0_014_states.bin.lz4 | Bin 0 -> 27232 bytes .../bitflip_0_01c_states.bin.bz2 | Bin 1120 -> 0 bytes .../bitflip_0_01c_states.bin.lz4 | Bin 0 -> 22128 bytes .../bitflip_0_021_states.bin.bz2 | Bin 7328 -> 0 bytes .../bitflip_0_021_states.bin.lz4 | Bin 0 -> 42330 bytes .../bitflip_0_023_states.bin.bz2 | Bin 2080 -> 0 bytes .../bitflip_0_023_states.bin.lz4 | Bin 0 -> 23829 bytes .../bitflip_0_025_states.bin.bz2 | Bin 13155 -> 0 bytes .../bitflip_0_025_states.bin.lz4 | Bin 0 -> 52945 bytes .../bitflip_0_027_states.bin.bz2 | Bin 2632 -> 0 bytes .../bitflip_0_027_states.bin.lz4 | Bin 0 -> 27144 bytes .../bitflip_0_029_states.bin.bz2 | Bin 2402 -> 0 bytes .../bitflip_0_029_states.bin.lz4 | Bin 0 -> 27204 bytes .../bitflip_0_02b_states.bin.bz2 | Bin 1408 -> 0 bytes .../bitflip_0_02b_states.bin.lz4 | Bin 0 -> 15338 bytes .../bitflip_0_02d_states.bin.bz2 | Bin 3826 -> 0 bytes .../bitflip_0_02d_states.bin.lz4 | Bin 0 -> 35762 bytes .../bitflip_0_02f_states.bin.bz2 | Bin 1660 -> 0 bytes .../bitflip_0_02f_states.bin.lz4 | Bin 0 -> 18867 bytes .../bitflip_0_030_states.bin.bz2 | Bin 1119 -> 0 bytes .../bitflip_0_030_states.bin.lz4 | Bin 0 -> 20011 bytes .../bitflip_0_034_states.bin.bz2 | Bin 1317 -> 0 bytes .../bitflip_0_034_states.bin.lz4 | Bin 0 -> 21179 bytes .../bitflip_0_03c_states.bin.bz2 | Bin 924 -> 0 bytes .../bitflip_0_03c_states.bin.lz4 | Bin 0 -> 15502 bytes .../bitflip_0_040_states.bin.bz2 | Bin 413 -> 0 bytes .../bitflip_0_040_states.bin.lz4 | Bin 0 -> 15230 bytes .../bitflip_0_044_states.bin.bz2 | Bin 3460 -> 0 bytes .../bitflip_0_044_states.bin.lz4 | Bin 0 -> 26186 bytes .../bitflip_0_04c_states.bin.bz2 | Bin 1219 -> 0 bytes .../bitflip_0_04c_states.bin.lz4 | Bin 0 -> 21042 bytes .../bitflip_0_051_states.bin.bz2 | Bin 2568 -> 0 bytes .../bitflip_0_051_states.bin.lz4 | Bin 0 -> 28974 bytes .../bitflip_0_053_states.bin.bz2 | Bin 1356 -> 0 bytes .../bitflip_0_053_states.bin.lz4 | Bin 0 -> 16061 bytes .../bitflip_0_055_states.bin.bz2 | Bin 5503 -> 0 bytes .../bitflip_0_055_states.bin.lz4 | Bin 0 -> 35521 bytes .../bitflip_0_057_states.bin.bz2 | Bin 1890 -> 0 bytes .../bitflip_0_057_states.bin.lz4 | Bin 0 -> 21878 bytes .../bitflip_0_059_states.bin.bz2 | Bin 1820 -> 0 bytes .../bitflip_0_059_states.bin.lz4 | Bin 0 -> 18328 bytes .../bitflip_0_05b_states.bin.bz2 | Bin 1077 -> 0 bytes .../bitflip_0_05b_states.bin.lz4 | Bin 0 -> 12349 bytes .../bitflip_0_05d_states.bin.bz2 | Bin 2472 -> 0 bytes .../bitflip_0_05d_states.bin.lz4 | Bin 0 -> 24131 bytes .../bitflip_0_05f_states.bin.bz2 | Bin 1448 -> 0 bytes .../bitflip_0_05f_states.bin.lz4 | Bin 0 -> 15388 bytes .../bitflip_0_064_states.bin.bz2 | Bin 1324 -> 0 bytes .../bitflip_0_064_states.bin.lz4 | Bin 0 -> 21807 bytes .../bitflip_0_06c_states.bin.bz2 | Bin 926 -> 0 bytes .../bitflip_0_06c_states.bin.lz4 | Bin 0 -> 14984 bytes .../bitflip_0_071_states.bin.bz2 | Bin 6959 -> 0 bytes .../bitflip_0_071_states.bin.lz4 | Bin 0 -> 45965 bytes .../bitflip_0_073_states.bin.bz2 | Bin 1861 -> 0 bytes .../bitflip_0_073_states.bin.lz4 | Bin 0 -> 22696 bytes .../bitflip_0_075_states.bin.bz2 | Bin 12922 -> 0 bytes .../bitflip_0_075_states.bin.lz4 | Bin 0 -> 52098 bytes .../bitflip_0_077_states.bin.bz2 | Bin 2916 -> 0 bytes .../bitflip_0_077_states.bin.lz4 | Bin 0 -> 28775 bytes .../bitflip_0_079_states.bin.bz2 | Bin 2400 -> 0 bytes .../bitflip_0_079_states.bin.lz4 | Bin 0 -> 27204 bytes .../bitflip_0_07b_states.bin.bz2 | Bin 1404 -> 0 bytes .../bitflip_0_07b_states.bin.lz4 | Bin 0 -> 15338 bytes .../bitflip_0_07f_states.bin.bz2 | Bin 2054 -> 0 bytes .../bitflip_0_07f_states.bin.lz4 | Bin 0 -> 21315 bytes .../bitflip_0_081_states.bin.bz2 | Bin 5982 -> 0 bytes .../bitflip_0_081_states.bin.lz4 | Bin 0 -> 35433 bytes .../bitflip_0_083_states.bin.bz2 | Bin 2134 -> 0 bytes .../bitflip_0_083_states.bin.lz4 | Bin 0 -> 22127 bytes .../bitflip_0_085_states.bin.bz2 | Bin 2460 -> 0 bytes .../bitflip_0_085_states.bin.lz4 | Bin 0 -> 26212 bytes .../bitflip_0_087_states.bin.bz2 | Bin 1352 -> 0 bytes .../bitflip_0_087_states.bin.lz4 | Bin 0 -> 16061 bytes .../bitflip_0_089_states.bin.bz2 | Bin 2505 -> 0 bytes .../bitflip_0_089_states.bin.lz4 | Bin 0 -> 24763 bytes .../bitflip_0_08b_states.bin.bz2 | Bin 1469 -> 0 bytes .../bitflip_0_08b_states.bin.lz4 | Bin 0 -> 15328 bytes .../bitflip_0_08d_states.bin.bz2 | Bin 1788 -> 0 bytes .../bitflip_0_08d_states.bin.lz4 | Bin 0 -> 18328 bytes .../bitflip_0_08f_states.bin.bz2 | Bin 1080 -> 0 bytes .../bitflip_0_08f_states.bin.lz4 | Bin 0 -> 12349 bytes .../bitflip_0_090_states.bin.bz2 | Bin 1281 -> 0 bytes .../bitflip_0_090_states.bin.lz4 | Bin 0 -> 17300 bytes .../bitflip_0_094_states.bin.bz2 | Bin 6279 -> 0 bytes .../bitflip_0_094_states.bin.lz4 | Bin 0 -> 31544 bytes .../bitflip_0_09c_states.bin.bz2 | Bin 1431 -> 0 bytes .../bitflip_0_09c_states.bin.lz4 | Bin 0 -> 23829 bytes .../bitflip_0_0a1_states.bin.bz2 | Bin 13572 -> 0 bytes .../bitflip_0_0a1_states.bin.lz4 | Bin 0 -> 51284 bytes .../bitflip_0_0a3_states.bin.bz2 | Bin 2973 -> 0 bytes .../bitflip_0_0a3_states.bin.lz4 | Bin 0 -> 31041 bytes .../bitflip_0_0a5_states.bin.bz2 | Bin 6943 -> 0 bytes .../bitflip_0_0a5_states.bin.lz4 | Bin 0 -> 47188 bytes .../bitflip_0_0a7_states.bin.bz2 | Bin 1863 -> 0 bytes .../bitflip_0_0a7_states.bin.lz4 | Bin 0 -> 22696 bytes .../bitflip_0_0a9_states.bin.bz2 | Bin 3825 -> 0 bytes .../bitflip_0_0a9_states.bin.lz4 | Bin 0 -> 35946 bytes .../bitflip_0_0ab_states.bin.bz2 | Bin 1924 -> 0 bytes .../bitflip_0_0ab_states.bin.lz4 | Bin 0 -> 20159 bytes .../bitflip_0_0ad_states.bin.bz2 | Bin 2419 -> 0 bytes .../bitflip_0_0ad_states.bin.lz4 | Bin 0 -> 27204 bytes .../bitflip_0_0af_states.bin.bz2 | Bin 1409 -> 0 bytes .../bitflip_0_0af_states.bin.lz4 | Bin 0 -> 15338 bytes .../bitflip_0_0b0_states.bin.bz2 | Bin 513 -> 0 bytes .../bitflip_0_0b0_states.bin.lz4 | Bin 0 -> 17155 bytes .../bitflip_0_0b4_states.bin.bz2 | Bin 3041 -> 0 bytes .../bitflip_0_0b4_states.bin.lz4 | Bin 0 -> 24777 bytes .../bitflip_0_0bc_states.bin.bz2 | Bin 1129 -> 0 bytes .../bitflip_0_0bc_states.bin.lz4 | Bin 0 -> 18407 bytes .../bitflip_0_0c0_states.bin.bz2 | Bin 415 -> 0 bytes .../bitflip_0_0c0_states.bin.lz4 | Bin 0 -> 15231 bytes .../bitflip_0_0c4_states.bin.bz2 | Bin 5975 -> 0 bytes .../bitflip_0_0c4_states.bin.lz4 | Bin 0 -> 32577 bytes .../bitflip_0_0cc_states.bin.bz2 | Bin 1614 -> 0 bytes .../bitflip_0_0cc_states.bin.lz4 | Bin 0 -> 26454 bytes .../bitflip_0_0d1_states.bin.bz2 | Bin 5983 -> 0 bytes .../bitflip_0_0d1_states.bin.lz4 | Bin 0 -> 37196 bytes .../bitflip_0_0d3_states.bin.bz2 | Bin 2082 -> 0 bytes .../bitflip_0_0d3_states.bin.lz4 | Bin 0 -> 22943 bytes .../bitflip_0_0d5_states.bin.bz2 | Bin 2460 -> 0 bytes .../bitflip_0_0d5_states.bin.lz4 | Bin 0 -> 26212 bytes .../bitflip_0_0d7_states.bin.bz2 | Bin 1352 -> 0 bytes .../bitflip_0_0d7_states.bin.lz4 | Bin 0 -> 16061 bytes .../bitflip_0_0d9_states.bin.bz2 | Bin 2498 -> 0 bytes .../bitflip_0_0d9_states.bin.lz4 | Bin 0 -> 24482 bytes .../bitflip_0_0db_states.bin.bz2 | Bin 1444 -> 0 bytes .../bitflip_0_0db_states.bin.lz4 | Bin 0 -> 15340 bytes .../bitflip_0_0dd_states.bin.bz2 | Bin 1792 -> 0 bytes .../bitflip_0_0dd_states.bin.lz4 | Bin 0 -> 17854 bytes .../bitflip_0_0df_states.bin.bz2 | Bin 1084 -> 0 bytes .../bitflip_0_0df_states.bin.lz4 | Bin 0 -> 12349 bytes .../bitflip_0_0e4_states.bin.bz2 | Bin 2793 -> 0 bytes .../bitflip_0_0e4_states.bin.lz4 | Bin 0 -> 25961 bytes .../bitflip_0_0ec_states.bin.bz2 | Bin 1145 -> 0 bytes .../bitflip_0_0ec_states.bin.lz4 | Bin 0 -> 18459 bytes .../bitflip_0_0f1_states.bin.bz2 | Bin 13180 -> 0 bytes .../bitflip_0_0f1_states.bin.lz4 | Bin 0 -> 50780 bytes .../bitflip_0_0f3_states.bin.bz2 | Bin 3234 -> 0 bytes .../bitflip_0_0f3_states.bin.lz4 | Bin 0 -> 31642 bytes .../bitflip_0_0f5_states.bin.bz2 | Bin 7153 -> 0 bytes .../bitflip_0_0f5_states.bin.lz4 | Bin 0 -> 46378 bytes .../bitflip_0_0f7_states.bin.bz2 | Bin 1983 -> 0 bytes .../bitflip_0_0f7_states.bin.lz4 | Bin 0 -> 23053 bytes .../bitflip_0_0f9_states.bin.bz2 | Bin 3834 -> 0 bytes .../bitflip_0_0f9_states.bin.lz4 | Bin 0 -> 35946 bytes .../bitflip_0_0fb_states.bin.bz2 | Bin 1940 -> 0 bytes .../bitflip_0_0fb_states.bin.lz4 | Bin 0 -> 20159 bytes .../bitflip_0_0fd_states.bin.bz2 | Bin 2702 -> 0 bytes .../bitflip_0_0fd_states.bin.lz4 | Bin 0 -> 27930 bytes .../bitflip_0_0ff_states.bin.bz2 | Bin 1569 -> 0 bytes .../bitflip_0_0ff_states.bin.lz4 | Bin 0 -> 16786 bytes .../bitflip_0_104_states.bin.bz2 | Bin 3524 -> 0 bytes .../bitflip_0_104_states.bin.lz4 | Bin 0 -> 25780 bytes .../bitflip_0_10c_states.bin.bz2 | Bin 1230 -> 0 bytes .../bitflip_0_10c_states.bin.lz4 | Bin 0 -> 21042 bytes .../bitflip_0_111_states.bin.bz2 | Bin 2568 -> 0 bytes .../bitflip_0_111_states.bin.lz4 | Bin 0 -> 28974 bytes .../bitflip_0_113_states.bin.bz2 | Bin 1352 -> 0 bytes .../bitflip_0_113_states.bin.lz4 | Bin 0 -> 16061 bytes .../bitflip_0_115_states.bin.bz2 | Bin 5503 -> 0 bytes .../bitflip_0_115_states.bin.lz4 | Bin 0 -> 35521 bytes .../bitflip_0_117_states.bin.bz2 | Bin 1888 -> 0 bytes .../bitflip_0_117_states.bin.lz4 | Bin 0 -> 21878 bytes .../bitflip_0_119_states.bin.bz2 | Bin 1806 -> 0 bytes .../bitflip_0_119_states.bin.lz4 | Bin 0 -> 18328 bytes .../bitflip_0_11b_states.bin.bz2 | Bin 1077 -> 0 bytes .../bitflip_0_11b_states.bin.lz4 | Bin 0 -> 12349 bytes .../bitflip_0_11d_states.bin.bz2 | Bin 2469 -> 0 bytes .../bitflip_0_11d_states.bin.lz4 | Bin 0 -> 24131 bytes .../bitflip_0_11f_states.bin.bz2 | Bin 1448 -> 0 bytes .../bitflip_0_11f_states.bin.lz4 | Bin 0 -> 15388 bytes .../bitflip_0_124_states.bin.bz2 | Bin 1327 -> 0 bytes .../bitflip_0_124_states.bin.lz4 | Bin 0 -> 21807 bytes .../bitflip_0_12c_states.bin.bz2 | Bin 922 -> 0 bytes .../bitflip_0_12c_states.bin.lz4 | Bin 0 -> 14984 bytes .../bitflip_0_131_states.bin.bz2 | Bin 6964 -> 0 bytes .../bitflip_0_131_states.bin.lz4 | Bin 0 -> 45965 bytes .../bitflip_0_133_states.bin.bz2 | Bin 1861 -> 0 bytes .../bitflip_0_133_states.bin.lz4 | Bin 0 -> 22696 bytes .../bitflip_0_135_states.bin.bz2 | Bin 12922 -> 0 bytes .../bitflip_0_135_states.bin.lz4 | Bin 0 -> 52098 bytes .../bitflip_0_137_states.bin.bz2 | Bin 2914 -> 0 bytes .../bitflip_0_137_states.bin.lz4 | Bin 0 -> 28775 bytes .../bitflip_0_139_states.bin.bz2 | Bin 2400 -> 0 bytes .../bitflip_0_139_states.bin.lz4 | Bin 0 -> 27204 bytes .../bitflip_0_13b_states.bin.bz2 | Bin 1405 -> 0 bytes .../bitflip_0_13b_states.bin.lz4 | Bin 0 -> 15338 bytes .../bitflip_0_13d_states.bin.bz2 | Bin 4000 -> 0 bytes .../bitflip_0_13d_states.bin.lz4 | Bin 0 -> 36355 bytes .../bitflip_0_13f_states.bin.bz2 | Bin 2056 -> 0 bytes .../bitflip_0_13f_states.bin.lz4 | Bin 0 -> 21315 bytes .../bitflip_0_141_states.bin.bz2 | Bin 2798 -> 0 bytes .../bitflip_0_141_states.bin.lz4 | Bin 0 -> 27811 bytes .../bitflip_0_143_states.bin.bz2 | Bin 1533 -> 0 bytes .../bitflip_0_143_states.bin.lz4 | Bin 0 -> 17673 bytes .../bitflip_0_145_states.bin.bz2 | Bin 5397 -> 0 bytes .../bitflip_0_145_states.bin.lz4 | Bin 0 -> 36138 bytes .../bitflip_0_147_states.bin.bz2 | Bin 1057 -> 0 bytes .../bitflip_0_147_states.bin.lz4 | Bin 0 -> 16220 bytes .../bitflip_0_149_states.bin.bz2 | Bin 1763 -> 0 bytes .../bitflip_0_149_states.bin.lz4 | Bin 0 -> 18034 bytes .../bitflip_0_14b_states.bin.bz2 | Bin 1058 -> 0 bytes .../bitflip_0_14b_states.bin.lz4 | Bin 0 -> 12365 bytes .../bitflip_0_14d_states.bin.bz2 | Bin 1196 -> 0 bytes .../bitflip_0_14d_states.bin.lz4 | Bin 0 -> 16299 bytes .../bitflip_0_14f_states.bin.bz2 | Bin 895 -> 0 bytes .../bitflip_0_14f_states.bin.lz4 | Bin 0 -> 12439 bytes .../bitflip_0_150_states.bin.bz2 | Bin 1557 -> 0 bytes .../bitflip_0_150_states.bin.lz4 | Bin 0 -> 19000 bytes .../bitflip_0_154_states.bin.bz2 | Bin 3137 -> 0 bytes .../bitflip_0_154_states.bin.lz4 | Bin 0 -> 27232 bytes .../bitflip_0_15c_states.bin.bz2 | Bin 1122 -> 0 bytes .../bitflip_0_15c_states.bin.lz4 | Bin 0 -> 22128 bytes .../bitflip_0_161_states.bin.bz2 | Bin 7268 -> 0 bytes .../bitflip_0_161_states.bin.lz4 | Bin 0 -> 42238 bytes .../bitflip_0_163_states.bin.bz2 | Bin 2071 -> 0 bytes .../bitflip_0_163_states.bin.lz4 | Bin 0 -> 23829 bytes .../bitflip_0_165_states.bin.bz2 | Bin 12956 -> 0 bytes .../bitflip_0_165_states.bin.lz4 | Bin 0 -> 52098 bytes .../bitflip_0_167_states.bin.bz2 | Bin 2901 -> 0 bytes .../bitflip_0_167_states.bin.lz4 | Bin 0 -> 28775 bytes .../bitflip_0_169_states.bin.bz2 | Bin 2437 -> 0 bytes .../bitflip_0_169_states.bin.lz4 | Bin 0 -> 27204 bytes .../bitflip_0_16b_states.bin.bz2 | Bin 1400 -> 0 bytes .../bitflip_0_16b_states.bin.lz4 | Bin 0 -> 15338 bytes .../bitflip_0_16d_states.bin.bz2 | Bin 3478 -> 0 bytes .../bitflip_0_16d_states.bin.lz4 | Bin 0 -> 32892 bytes .../bitflip_0_16f_states.bin.bz2 | Bin 1526 -> 0 bytes .../bitflip_0_16f_states.bin.lz4 | Bin 0 -> 17556 bytes .../bitflip_0_170_states.bin.bz2 | Bin 1119 -> 0 bytes .../bitflip_0_170_states.bin.lz4 | Bin 0 -> 20011 bytes .../bitflip_0_174_states.bin.bz2 | Bin 1314 -> 0 bytes .../bitflip_0_174_states.bin.lz4 | Bin 0 -> 21179 bytes .../bitflip_0_17c_states.bin.bz2 | Bin 919 -> 0 bytes .../bitflip_0_17c_states.bin.lz4 | Bin 0 -> 15502 bytes .../bitflip_0_184_states.bin.bz2 | Bin 6184 -> 0 bytes .../bitflip_0_184_states.bin.lz4 | Bin 0 -> 32658 bytes .../bitflip_0_18c_states.bin.bz2 | Bin 1614 -> 0 bytes .../bitflip_0_18c_states.bin.lz4 | Bin 0 -> 26454 bytes .../bitflip_0_191_states.bin.bz2 | Bin 5983 -> 0 bytes .../bitflip_0_191_states.bin.lz4 | Bin 0 -> 37196 bytes .../bitflip_0_193_states.bin.bz2 | Bin 2082 -> 0 bytes .../bitflip_0_193_states.bin.lz4 | Bin 0 -> 22943 bytes .../bitflip_0_195_states.bin.bz2 | Bin 2462 -> 0 bytes .../bitflip_0_195_states.bin.lz4 | Bin 0 -> 26212 bytes .../bitflip_0_197_states.bin.bz2 | Bin 1352 -> 0 bytes .../bitflip_0_197_states.bin.lz4 | Bin 0 -> 16061 bytes .../bitflip_0_199_states.bin.bz2 | Bin 2498 -> 0 bytes .../bitflip_0_199_states.bin.lz4 | Bin 0 -> 24482 bytes .../bitflip_0_19b_states.bin.bz2 | Bin 1444 -> 0 bytes .../bitflip_0_19b_states.bin.lz4 | Bin 0 -> 15340 bytes .../bitflip_0_19d_states.bin.bz2 | Bin 1784 -> 0 bytes .../bitflip_0_19d_states.bin.lz4 | Bin 0 -> 17854 bytes .../bitflip_0_19f_states.bin.bz2 | Bin 1084 -> 0 bytes .../bitflip_0_19f_states.bin.lz4 | Bin 0 -> 12349 bytes .../bitflip_0_1a4_states.bin.bz2 | Bin 2795 -> 0 bytes .../bitflip_0_1a4_states.bin.lz4 | Bin 0 -> 25961 bytes .../bitflip_0_1ac_states.bin.bz2 | Bin 1141 -> 0 bytes .../bitflip_0_1ac_states.bin.lz4 | Bin 0 -> 18459 bytes .../bitflip_0_1b1_states.bin.bz2 | Bin 13188 -> 0 bytes .../bitflip_0_1b1_states.bin.lz4 | Bin 0 -> 50808 bytes .../bitflip_0_1b3_states.bin.bz2 | Bin 3233 -> 0 bytes .../bitflip_0_1b3_states.bin.lz4 | Bin 0 -> 31642 bytes .../bitflip_0_1b5_states.bin.bz2 | Bin 7149 -> 0 bytes .../bitflip_0_1b5_states.bin.lz4 | Bin 0 -> 46378 bytes .../bitflip_0_1b7_states.bin.bz2 | Bin 1984 -> 0 bytes .../bitflip_0_1b7_states.bin.lz4 | Bin 0 -> 23053 bytes .../bitflip_0_1b9_states.bin.bz2 | Bin 3840 -> 0 bytes .../bitflip_0_1b9_states.bin.lz4 | Bin 0 -> 35946 bytes .../bitflip_0_1bb_states.bin.bz2 | Bin 1940 -> 0 bytes .../bitflip_0_1bb_states.bin.lz4 | Bin 0 -> 20159 bytes .../bitflip_0_1bd_states.bin.bz2 | Bin 2706 -> 0 bytes .../bitflip_0_1bd_states.bin.lz4 | Bin 0 -> 27930 bytes .../bitflip_0_1bf_states.bin.bz2 | Bin 1567 -> 0 bytes .../bitflip_0_1bf_states.bin.lz4 | Bin 0 -> 16786 bytes .../bitflip_0_1c1_states.bin.bz2 | Bin 5975 -> 0 bytes .../bitflip_0_1c1_states.bin.lz4 | Bin 0 -> 35433 bytes .../bitflip_0_1c3_states.bin.bz2 | Bin 2125 -> 0 bytes .../bitflip_0_1c3_states.bin.lz4 | Bin 0 -> 22127 bytes .../bitflip_0_1c5_states.bin.bz2 | Bin 472 -> 0 bytes .../bitflip_0_1c5_states.bin.lz4 | Bin 0 -> 16936 bytes .../bitflip_0_1c9_states.bin.bz2 | Bin 2501 -> 0 bytes .../bitflip_0_1c9_states.bin.lz4 | Bin 0 -> 24745 bytes .../bitflip_0_1cb_states.bin.bz2 | Bin 1466 -> 0 bytes .../bitflip_0_1cb_states.bin.lz4 | Bin 0 -> 15328 bytes .../bitflip_0_1d0_states.bin.bz2 | Bin 1281 -> 0 bytes .../bitflip_0_1d0_states.bin.lz4 | Bin 0 -> 17300 bytes .../bitflip_0_1d4_states.bin.bz2 | Bin 6278 -> 0 bytes .../bitflip_0_1d4_states.bin.lz4 | Bin 0 -> 31544 bytes .../bitflip_0_1dc_states.bin.bz2 | Bin 1436 -> 0 bytes .../bitflip_0_1dc_states.bin.lz4 | Bin 0 -> 23829 bytes .../bitflip_0_1e1_states.bin.bz2 | Bin 13795 -> 0 bytes .../bitflip_0_1e1_states.bin.lz4 | Bin 0 -> 51276 bytes .../bitflip_0_1e3_states.bin.bz2 | Bin 2971 -> 0 bytes .../bitflip_0_1e3_states.bin.lz4 | Bin 0 -> 31041 bytes .../bitflip_0_1e5_states.bin.bz2 | Bin 6318 -> 0 bytes .../bitflip_0_1e5_states.bin.lz4 | Bin 0 -> 55696 bytes .../bitflip_0_1e7_states.bin.bz2 | Bin 676 -> 0 bytes .../bitflip_0_1e7_states.bin.lz4 | Bin 0 -> 14767 bytes .../bitflip_0_1e9_states.bin.bz2 | Bin 3842 -> 0 bytes .../bitflip_0_1e9_states.bin.lz4 | Bin 0 -> 35946 bytes .../bitflip_0_1eb_states.bin.bz2 | Bin 1928 -> 0 bytes .../bitflip_0_1eb_states.bin.lz4 | Bin 0 -> 20159 bytes .../bitflip_0_1ed_states.bin.bz2 | Bin 724 -> 0 bytes .../bitflip_0_1ed_states.bin.lz4 | Bin 0 -> 15310 bytes .../bitflip_0_1ef_states.bin.bz2 | Bin 414 -> 0 bytes .../bitflip_0_1ef_states.bin.lz4 | Bin 0 -> 9882 bytes .../bitflip_0_1f0_states.bin.bz2 | Bin 511 -> 0 bytes .../bitflip_0_1f0_states.bin.lz4 | Bin 0 -> 17155 bytes .../bitflip_0_1f4_states.bin.bz2 | Bin 3035 -> 0 bytes .../bitflip_0_1f4_states.bin.lz4 | Bin 0 -> 24777 bytes .../bitflip_0_1fc_states.bin.bz2 | Bin 1127 -> 0 bytes .../bitflip_0_1fc_states.bin.lz4 | Bin 0 -> 18407 bytes .../bitflip_0_210_states.bin.bz2 | Bin 1680 -> 0 bytes .../bitflip_0_210_states.bin.lz4 | Bin 0 -> 8655 bytes .../bitflip_0_225_states.bin.bz2 | Bin 12468 -> 0 bytes .../bitflip_0_225_states.bin.lz4 | Bin 0 -> 41275 bytes .../bitflip_0_227_states.bin.bz2 | Bin 2268 -> 0 bytes .../bitflip_0_227_states.bin.lz4 | Bin 0 -> 26933 bytes .../bitflip_0_22d_states.bin.bz2 | Bin 4981 -> 0 bytes .../bitflip_0_22d_states.bin.lz4 | Bin 0 -> 29127 bytes .../bitflip_0_22f_states.bin.bz2 | Bin 1135 -> 0 bytes .../bitflip_0_22f_states.bin.lz4 | Bin 0 -> 18288 bytes .../bitflip_0_240_states.bin.bz2 | Bin 369 -> 0 bytes .../bitflip_0_240_states.bin.lz4 | Bin 0 -> 8357 bytes .../bitflip_0_275_states.bin.bz2 | Bin 12468 -> 0 bytes .../bitflip_0_275_states.bin.lz4 | Bin 0 -> 41275 bytes .../bitflip_0_277_states.bin.bz2 | Bin 2268 -> 0 bytes .../bitflip_0_277_states.bin.lz4 | Bin 0 -> 26933 bytes .../bitflip_0_27f_states.bin.bz2 | Bin 1135 -> 0 bytes .../bitflip_0_27f_states.bin.lz4 | Bin 0 -> 18288 bytes .../bitflip_0_294_states.bin.bz2 | Bin 5424 -> 0 bytes .../bitflip_0_294_states.bin.lz4 | Bin 0 -> 9691 bytes .../bitflip_0_2a1_states.bin.bz2 | Bin 12468 -> 0 bytes .../bitflip_0_2a1_states.bin.lz4 | Bin 0 -> 41275 bytes .../bitflip_0_2a3_states.bin.bz2 | Bin 2268 -> 0 bytes .../bitflip_0_2a3_states.bin.lz4 | Bin 0 -> 26933 bytes .../bitflip_0_2a9_states.bin.bz2 | Bin 4981 -> 0 bytes .../bitflip_0_2a9_states.bin.lz4 | Bin 0 -> 29127 bytes .../bitflip_0_2ab_states.bin.bz2 | Bin 1135 -> 0 bytes .../bitflip_0_2ab_states.bin.lz4 | Bin 0 -> 18288 bytes .../bitflip_0_2c4_states.bin.bz2 | Bin 5424 -> 0 bytes .../bitflip_0_2c4_states.bin.lz4 | Bin 0 -> 9691 bytes .../bitflip_0_2f1_states.bin.bz2 | Bin 12468 -> 0 bytes .../bitflip_0_2f1_states.bin.lz4 | Bin 0 -> 41275 bytes .../bitflip_0_2f3_states.bin.bz2 | Bin 2268 -> 0 bytes .../bitflip_0_2f3_states.bin.lz4 | Bin 0 -> 26933 bytes .../bitflip_0_2f9_states.bin.bz2 | Bin 4981 -> 0 bytes .../bitflip_0_2f9_states.bin.lz4 | Bin 0 -> 29127 bytes .../bitflip_0_2fb_states.bin.bz2 | Bin 1135 -> 0 bytes .../bitflip_0_2fb_states.bin.lz4 | Bin 0 -> 18288 bytes .../bitflip_0_335_states.bin.bz2 | Bin 12468 -> 0 bytes .../bitflip_0_335_states.bin.lz4 | Bin 0 -> 41275 bytes .../bitflip_0_337_states.bin.bz2 | Bin 2268 -> 0 bytes .../bitflip_0_337_states.bin.lz4 | Bin 0 -> 26933 bytes .../bitflip_0_33d_states.bin.bz2 | Bin 4981 -> 0 bytes .../bitflip_0_33d_states.bin.lz4 | Bin 0 -> 29127 bytes .../bitflip_0_33f_states.bin.bz2 | Bin 1135 -> 0 bytes .../bitflip_0_33f_states.bin.lz4 | Bin 0 -> 18288 bytes .../bitflip_0_350_states.bin.bz2 | Bin 1680 -> 0 bytes .../bitflip_0_350_states.bin.lz4 | Bin 0 -> 8655 bytes .../bitflip_0_365_states.bin.bz2 | Bin 12468 -> 0 bytes .../bitflip_0_365_states.bin.lz4 | Bin 0 -> 41275 bytes .../bitflip_0_367_states.bin.bz2 | Bin 2268 -> 0 bytes .../bitflip_0_367_states.bin.lz4 | Bin 0 -> 26933 bytes .../bitflip_0_36d_states.bin.bz2 | Bin 4981 -> 0 bytes .../bitflip_0_36d_states.bin.lz4 | Bin 0 -> 29127 bytes .../bitflip_0_36f_states.bin.bz2 | Bin 1135 -> 0 bytes .../bitflip_0_36f_states.bin.lz4 | Bin 0 -> 18288 bytes .../bitflip_0_384_states.bin.bz2 | Bin 5424 -> 0 bytes .../bitflip_0_384_states.bin.lz4 | Bin 0 -> 9691 bytes .../bitflip_0_3b1_states.bin.bz2 | Bin 12468 -> 0 bytes .../bitflip_0_3b1_states.bin.lz4 | Bin 0 -> 41275 bytes .../bitflip_0_3b3_states.bin.bz2 | Bin 2268 -> 0 bytes .../bitflip_0_3b3_states.bin.lz4 | Bin 0 -> 26933 bytes .../bitflip_0_3b9_states.bin.bz2 | Bin 4981 -> 0 bytes .../bitflip_0_3b9_states.bin.lz4 | Bin 0 -> 29127 bytes .../bitflip_0_3bb_states.bin.bz2 | Bin 1135 -> 0 bytes .../bitflip_0_3bb_states.bin.lz4 | Bin 0 -> 18288 bytes .../bitflip_0_3d4_states.bin.bz2 | Bin 5424 -> 0 bytes .../bitflip_0_3d4_states.bin.lz4 | Bin 0 -> 9691 bytes .../bitflip_0_3e1_states.bin.bz2 | Bin 12468 -> 0 bytes .../bitflip_0_3e1_states.bin.lz4 | Bin 0 -> 41275 bytes .../bitflip_0_3e3_states.bin.bz2 | Bin 2268 -> 0 bytes .../bitflip_0_3e3_states.bin.lz4 | Bin 0 -> 26933 bytes .../bitflip_0_3e9_states.bin.bz2 | Bin 4981 -> 0 bytes .../bitflip_0_3e9_states.bin.lz4 | Bin 0 -> 29127 bytes .../bitflip_0_3eb_states.bin.bz2 | Bin 1135 -> 0 bytes .../bitflip_0_3eb_states.bin.lz4 | Bin 0 -> 18288 bytes .../bitflip_1_002_states.bin.bz2 | Bin 7733 -> 0 bytes .../bitflip_1_002_states.bin.lz4 | Bin 0 -> 41681 bytes .../bitflip_1_008_states.bin.bz2 | Bin 6132 -> 0 bytes .../bitflip_1_008_states.bin.lz4 | Bin 0 -> 31271 bytes .../bitflip_1_00a_states.bin.bz2 | Bin 8688 -> 0 bytes .../bitflip_1_00a_states.bin.lz4 | Bin 0 -> 49879 bytes .../bitflip_1_012_states.bin.bz2 | Bin 2678 -> 0 bytes .../bitflip_1_012_states.bin.lz4 | Bin 0 -> 28218 bytes .../bitflip_1_018_states.bin.bz2 | Bin 1623 -> 0 bytes .../bitflip_1_018_states.bin.lz4 | Bin 0 -> 25258 bytes .../bitflip_1_01a_states.bin.bz2 | Bin 3415 -> 0 bytes .../bitflip_1_01a_states.bin.lz4 | Bin 0 -> 35928 bytes .../bitflip_1_020_states.bin.bz2 | Bin 1536 -> 0 bytes .../bitflip_1_020_states.bin.lz4 | Bin 0 -> 18953 bytes .../bitflip_1_028_states.bin.bz2 | Bin 3493 -> 0 bytes .../bitflip_1_028_states.bin.lz4 | Bin 0 -> 25815 bytes .../bitflip_1_02a_states.bin.bz2 | Bin 6158 -> 0 bytes .../bitflip_1_02a_states.bin.lz4 | Bin 0 -> 41308 bytes .../bitflip_1_02e_states.bin.bz2 | Bin 2012 -> 0 bytes .../bitflip_1_02e_states.bin.lz4 | Bin 0 -> 22053 bytes .../bitflip_1_032_states.bin.bz2 | Bin 3614 -> 0 bytes .../bitflip_1_032_states.bin.lz4 | Bin 0 -> 35067 bytes .../bitflip_1_036_states.bin.bz2 | Bin 1975 -> 0 bytes .../bitflip_1_036_states.bin.lz4 | Bin 0 -> 19614 bytes .../bitflip_1_038_states.bin.bz2 | Bin 1274 -> 0 bytes .../bitflip_1_038_states.bin.lz4 | Bin 0 -> 21459 bytes .../bitflip_1_03a_states.bin.bz2 | Bin 2736 -> 0 bytes .../bitflip_1_03a_states.bin.lz4 | Bin 0 -> 29421 bytes .../bitflip_1_03e_states.bin.bz2 | Bin 1515 -> 0 bytes .../bitflip_1_03e_states.bin.lz4 | Bin 0 -> 16874 bytes .../bitflip_1_040_states.bin.bz2 | Bin 415 -> 0 bytes .../bitflip_1_040_states.bin.lz4 | Bin 0 -> 15231 bytes .../bitflip_1_042_states.bin.bz2 | Bin 7642 -> 0 bytes .../bitflip_1_042_states.bin.lz4 | Bin 0 -> 41483 bytes .../bitflip_1_046_states.bin.bz2 | Bin 2351 -> 0 bytes .../bitflip_1_046_states.bin.lz4 | Bin 0 -> 24386 bytes .../bitflip_1_048_states.bin.bz2 | Bin 4419 -> 0 bytes .../bitflip_1_048_states.bin.lz4 | Bin 0 -> 30085 bytes .../bitflip_1_04a_states.bin.bz2 | Bin 13641 -> 0 bytes .../bitflip_1_04a_states.bin.lz4 | Bin 0 -> 50357 bytes .../bitflip_1_04e_states.bin.bz2 | Bin 2913 -> 0 bytes .../bitflip_1_04e_states.bin.lz4 | Bin 0 -> 28775 bytes .../bitflip_1_052_states.bin.bz2 | Bin 2732 -> 0 bytes .../bitflip_1_052_states.bin.lz4 | Bin 0 -> 28172 bytes .../bitflip_1_056_states.bin.bz2 | Bin 1540 -> 0 bytes .../bitflip_1_056_states.bin.lz4 | Bin 0 -> 16732 bytes .../bitflip_1_058_states.bin.bz2 | Bin 1573 -> 0 bytes .../bitflip_1_058_states.bin.lz4 | Bin 0 -> 24608 bytes .../bitflip_1_05a_states.bin.bz2 | Bin 4469 -> 0 bytes .../bitflip_1_05a_states.bin.lz4 | Bin 0 -> 36991 bytes .../bitflip_1_05e_states.bin.bz2 | Bin 2026 -> 0 bytes .../bitflip_1_05e_states.bin.lz4 | Bin 0 -> 21231 bytes .../bitflip_1_060_states.bin.bz2 | Bin 1534 -> 0 bytes .../bitflip_1_060_states.bin.lz4 | Bin 0 -> 18954 bytes .../bitflip_1_062_states.bin.bz2 | Bin 13374 -> 0 bytes .../bitflip_1_062_states.bin.lz4 | Bin 0 -> 50633 bytes .../bitflip_1_066_states.bin.bz2 | Bin 3290 -> 0 bytes .../bitflip_1_066_states.bin.lz4 | Bin 0 -> 31576 bytes .../bitflip_1_068_states.bin.bz2 | Bin 3548 -> 0 bytes .../bitflip_1_068_states.bin.lz4 | Bin 0 -> 25815 bytes .../bitflip_1_06a_states.bin.bz2 | Bin 7596 -> 0 bytes .../bitflip_1_06a_states.bin.lz4 | Bin 0 -> 43554 bytes .../bitflip_1_06e_states.bin.bz2 | Bin 1976 -> 0 bytes .../bitflip_1_06e_states.bin.lz4 | Bin 0 -> 23053 bytes .../bitflip_1_072_states.bin.bz2 | Bin 4289 -> 0 bytes .../bitflip_1_072_states.bin.lz4 | Bin 0 -> 36987 bytes .../bitflip_1_076_states.bin.bz2 | Bin 2101 -> 0 bytes .../bitflip_1_076_states.bin.lz4 | Bin 0 -> 21096 bytes .../bitflip_1_078_states.bin.bz2 | Bin 1284 -> 0 bytes .../bitflip_1_078_states.bin.lz4 | Bin 0 -> 21459 bytes .../bitflip_1_07a_states.bin.bz2 | Bin 2730 -> 0 bytes .../bitflip_1_07a_states.bin.lz4 | Bin 0 -> 28127 bytes .../bitflip_1_07e_states.bin.bz2 | Bin 1565 -> 0 bytes .../bitflip_1_07e_states.bin.lz4 | Bin 0 -> 16786 bytes .../bitflip_1_080_states.bin.bz2 | Bin 413 -> 0 bytes .../bitflip_1_080_states.bin.lz4 | Bin 0 -> 15230 bytes .../bitflip_1_082_states.bin.bz2 | Bin 10172 -> 0 bytes .../bitflip_1_082_states.bin.lz4 | Bin 0 -> 48522 bytes .../bitflip_1_086_states.bin.bz2 | Bin 2874 -> 0 bytes .../bitflip_1_086_states.bin.lz4 | Bin 0 -> 28568 bytes .../bitflip_1_088_states.bin.bz2 | Bin 3510 -> 0 bytes .../bitflip_1_088_states.bin.lz4 | Bin 0 -> 26100 bytes .../bitflip_1_08a_states.bin.bz2 | Bin 4415 -> 0 bytes .../bitflip_1_08a_states.bin.lz4 | Bin 0 -> 38962 bytes .../bitflip_1_08e_states.bin.bz2 | Bin 1569 -> 0 bytes .../bitflip_1_08e_states.bin.lz4 | Bin 0 -> 17232 bytes .../bitflip_1_092_states.bin.bz2 | Bin 3608 -> 0 bytes .../bitflip_1_092_states.bin.lz4 | Bin 0 -> 35067 bytes .../bitflip_1_096_states.bin.bz2 | Bin 2013 -> 0 bytes .../bitflip_1_096_states.bin.lz4 | Bin 0 -> 19614 bytes .../bitflip_1_098_states.bin.bz2 | Bin 1255 -> 0 bytes .../bitflip_1_098_states.bin.lz4 | Bin 0 -> 20720 bytes .../bitflip_1_09a_states.bin.bz2 | Bin 2287 -> 0 bytes .../bitflip_1_09a_states.bin.lz4 | Bin 0 -> 28859 bytes .../bitflip_1_09e_states.bin.bz2 | Bin 1236 -> 0 bytes .../bitflip_1_09e_states.bin.lz4 | Bin 0 -> 14735 bytes .../bitflip_1_0a0_states.bin.bz2 | Bin 1303 -> 0 bytes .../bitflip_1_0a0_states.bin.lz4 | Bin 0 -> 17302 bytes .../bitflip_1_0a2_states.bin.bz2 | Bin 7248 -> 0 bytes .../bitflip_1_0a2_states.bin.lz4 | Bin 0 -> 41970 bytes .../bitflip_1_0a6_states.bin.bz2 | Bin 2013 -> 0 bytes .../bitflip_1_0a6_states.bin.lz4 | Bin 0 -> 23007 bytes .../bitflip_1_0a8_states.bin.bz2 | Bin 6270 -> 0 bytes .../bitflip_1_0a8_states.bin.lz4 | Bin 0 -> 30841 bytes .../bitflip_1_0aa_states.bin.bz2 | Bin 8940 -> 0 bytes .../bitflip_1_0aa_states.bin.lz4 | Bin 0 -> 48574 bytes .../bitflip_1_0ae_states.bin.bz2 | Bin 2675 -> 0 bytes .../bitflip_1_0ae_states.bin.lz4 | Bin 0 -> 27316 bytes .../bitflip_1_0b2_states.bin.bz2 | Bin 2723 -> 0 bytes .../bitflip_1_0b2_states.bin.lz4 | Bin 0 -> 28229 bytes .../bitflip_1_0b6_states.bin.bz2 | Bin 1541 -> 0 bytes .../bitflip_1_0b6_states.bin.lz4 | Bin 0 -> 16732 bytes .../bitflip_1_0b8_states.bin.bz2 | Bin 1630 -> 0 bytes .../bitflip_1_0b8_states.bin.lz4 | Bin 0 -> 24606 bytes .../bitflip_1_0ba_states.bin.bz2 | Bin 3614 -> 0 bytes .../bitflip_1_0ba_states.bin.lz4 | Bin 0 -> 35489 bytes .../bitflip_1_0be_states.bin.bz2 | Bin 1951 -> 0 bytes .../bitflip_1_0be_states.bin.lz4 | Bin 0 -> 19786 bytes .../bitflip_1_0c0_states.bin.bz2 | Bin 415 -> 0 bytes .../bitflip_1_0c0_states.bin.lz4 | Bin 0 -> 15231 bytes .../bitflip_1_0c2_states.bin.bz2 | Bin 13885 -> 0 bytes .../bitflip_1_0c2_states.bin.lz4 | Bin 0 -> 49914 bytes .../bitflip_1_0c6_states.bin.bz2 | Bin 3025 -> 0 bytes .../bitflip_1_0c6_states.bin.lz4 | Bin 0 -> 30418 bytes .../bitflip_1_0c8_states.bin.bz2 | Bin 3523 -> 0 bytes .../bitflip_1_0c8_states.bin.lz4 | Bin 0 -> 25815 bytes .../bitflip_1_0ca_states.bin.bz2 | Bin 7147 -> 0 bytes .../bitflip_1_0ca_states.bin.lz4 | Bin 0 -> 47118 bytes .../bitflip_1_0ce_states.bin.bz2 | Bin 1663 -> 0 bytes .../bitflip_1_0ce_states.bin.lz4 | Bin 0 -> 21442 bytes .../bitflip_1_0d2_states.bin.bz2 | Bin 4937 -> 0 bytes .../bitflip_1_0d2_states.bin.lz4 | Bin 0 -> 36987 bytes .../bitflip_1_0d6_states.bin.bz2 | Bin 2083 -> 0 bytes .../bitflip_1_0d6_states.bin.lz4 | Bin 0 -> 21096 bytes .../bitflip_1_0d8_states.bin.bz2 | Bin 1270 -> 0 bytes .../bitflip_1_0d8_states.bin.lz4 | Bin 0 -> 20720 bytes .../bitflip_1_0da_states.bin.bz2 | Bin 2316 -> 0 bytes .../bitflip_1_0da_states.bin.lz4 | Bin 0 -> 23063 bytes .../bitflip_1_0de_states.bin.bz2 | Bin 1273 -> 0 bytes .../bitflip_1_0de_states.bin.lz4 | Bin 0 -> 13839 bytes .../bitflip_1_0e0_states.bin.bz2 | Bin 1292 -> 0 bytes .../bitflip_1_0e0_states.bin.lz4 | Bin 0 -> 17302 bytes .../bitflip_1_0e8_states.bin.bz2 | Bin 4522 -> 0 bytes .../bitflip_1_0e8_states.bin.lz4 | Bin 0 -> 29435 bytes .../bitflip_1_0f8_states.bin.bz2 | Bin 1589 -> 0 bytes .../bitflip_1_0f8_states.bin.lz4 | Bin 0 -> 23792 bytes .../bitflip_1_108_states.bin.bz2 | Bin 3508 -> 0 bytes .../bitflip_1_108_states.bin.lz4 | Bin 0 -> 25815 bytes .../bitflip_1_111_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_111_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_113_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_113_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_115_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_115_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_117_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_117_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_118_states.bin.bz2 | Bin 1261 -> 0 bytes .../bitflip_1_118_states.bin.lz4 | Bin 0 -> 20720 bytes .../bitflip_1_11a_states.bin.bz2 | Bin 1788 -> 0 bytes .../bitflip_1_11a_states.bin.lz4 | Bin 0 -> 18328 bytes .../bitflip_1_11b_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_11b_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_120_states.bin.bz2 | Bin 1301 -> 0 bytes .../bitflip_1_120_states.bin.lz4 | Bin 0 -> 17302 bytes .../bitflip_1_122_states.bin.bz2 | Bin 7248 -> 0 bytes .../bitflip_1_122_states.bin.lz4 | Bin 0 -> 41970 bytes .../bitflip_1_128_states.bin.bz2 | Bin 6269 -> 0 bytes .../bitflip_1_128_states.bin.lz4 | Bin 0 -> 30841 bytes .../bitflip_1_131_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_131_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_135_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_135_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_138_states.bin.bz2 | Bin 1656 -> 0 bytes .../bitflip_1_138_states.bin.lz4 | Bin 0 -> 24606 bytes .../bitflip_1_145_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_145_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_147_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_147_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_148_states.bin.bz2 | Bin 3546 -> 0 bytes .../bitflip_1_148_states.bin.lz4 | Bin 0 -> 25815 bytes .../bitflip_1_158_states.bin.bz2 | Bin 1263 -> 0 bytes .../bitflip_1_158_states.bin.lz4 | Bin 0 -> 20720 bytes .../bitflip_1_160_states.bin.bz2 | Bin 1300 -> 0 bytes .../bitflip_1_160_states.bin.lz4 | Bin 0 -> 17302 bytes .../bitflip_1_161_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_161_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_163_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_163_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_165_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_165_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_168_states.bin.bz2 | Bin 4419 -> 0 bytes .../bitflip_1_168_states.bin.lz4 | Bin 0 -> 29435 bytes .../bitflip_1_178_states.bin.bz2 | Bin 1617 -> 0 bytes .../bitflip_1_178_states.bin.lz4 | Bin 0 -> 23792 bytes .../bitflip_1_180_states.bin.bz2 | Bin 415 -> 0 bytes .../bitflip_1_180_states.bin.lz4 | Bin 0 -> 15231 bytes .../bitflip_1_188_states.bin.bz2 | Bin 5993 -> 0 bytes .../bitflip_1_188_states.bin.lz4 | Bin 0 -> 31274 bytes .../bitflip_1_191_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_191_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_198_states.bin.bz2 | Bin 1605 -> 0 bytes .../bitflip_1_198_states.bin.lz4 | Bin 0 -> 25258 bytes .../bitflip_1_199_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_199_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_19d_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_19d_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_19f_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_19f_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1a0_states.bin.bz2 | Bin 1541 -> 0 bytes .../bitflip_1_1a0_states.bin.lz4 | Bin 0 -> 18953 bytes .../bitflip_1_1a8_states.bin.bz2 | Bin 3543 -> 0 bytes .../bitflip_1_1a8_states.bin.lz4 | Bin 0 -> 25815 bytes .../bitflip_1_1b3_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1b3_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1b5_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1b5_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1b7_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1b7_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1b8_states.bin.bz2 | Bin 1284 -> 0 bytes .../bitflip_1_1b8_states.bin.lz4 | Bin 0 -> 21459 bytes .../bitflip_1_1b9_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1b9_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1bd_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1bd_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1c1_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1c1_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1c3_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1c3_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1c8_states.bin.bz2 | Bin 4359 -> 0 bytes .../bitflip_1_1c8_states.bin.lz4 | Bin 0 -> 30085 bytes .../bitflip_1_1c9_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1c9_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1cd_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1cd_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1cf_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1cf_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1d8_states.bin.bz2 | Bin 1561 -> 0 bytes .../bitflip_1_1d8_states.bin.lz4 | Bin 0 -> 24608 bytes .../bitflip_1_1e0_states.bin.bz2 | Bin 1535 -> 0 bytes .../bitflip_1_1e0_states.bin.lz4 | Bin 0 -> 18954 bytes .../bitflip_1_1e1_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1e1_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1e5_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1e5_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1e7_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1e7_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1e8_states.bin.bz2 | Bin 3479 -> 0 bytes .../bitflip_1_1e8_states.bin.lz4 | Bin 0 -> 25815 bytes .../bitflip_1_1e9_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1e9_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1eb_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1eb_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1ed_states.bin.bz2 | Bin 821 -> 0 bytes .../bitflip_1_1ed_states.bin.lz4 | Bin 0 -> 12849 bytes .../bitflip_1_1f8_states.bin.bz2 | Bin 1274 -> 0 bytes .../bitflip_1_1f8_states.bin.lz4 | Bin 0 -> 21459 bytes .../bitflip_1_208_states.bin.bz2 | Bin 5424 -> 0 bytes .../bitflip_1_208_states.bin.lz4 | Bin 0 -> 9691 bytes .../bitflip_1_220_states.bin.bz2 | Bin 1680 -> 0 bytes .../bitflip_1_220_states.bin.lz4 | Bin 0 -> 8655 bytes .../bitflip_1_24a_states.bin.bz2 | Bin 12468 -> 0 bytes .../bitflip_1_24a_states.bin.lz4 | Bin 0 -> 41275 bytes .../bitflip_1_24e_states.bin.bz2 | Bin 2268 -> 0 bytes .../bitflip_1_24e_states.bin.lz4 | Bin 0 -> 26933 bytes .../bitflip_1_25a_states.bin.bz2 | Bin 4981 -> 0 bytes .../bitflip_1_25a_states.bin.lz4 | Bin 0 -> 29127 bytes .../bitflip_1_25e_states.bin.bz2 | Bin 1135 -> 0 bytes .../bitflip_1_25e_states.bin.lz4 | Bin 0 -> 18288 bytes .../bitflip_1_262_states.bin.bz2 | Bin 12468 -> 0 bytes .../bitflip_1_262_states.bin.lz4 | Bin 0 -> 41275 bytes .../bitflip_1_266_states.bin.bz2 | Bin 2268 -> 0 bytes .../bitflip_1_266_states.bin.lz4 | Bin 0 -> 26933 bytes .../bitflip_1_272_states.bin.bz2 | Bin 4981 -> 0 bytes .../bitflip_1_272_states.bin.lz4 | Bin 0 -> 29127 bytes .../bitflip_1_276_states.bin.bz2 | Bin 1135 -> 0 bytes .../bitflip_1_276_states.bin.lz4 | Bin 0 -> 18288 bytes .../bitflip_1_280_states.bin.bz2 | Bin 369 -> 0 bytes .../bitflip_1_280_states.bin.lz4 | Bin 0 -> 8357 bytes .../bitflip_1_2a8_states.bin.bz2 | Bin 5424 -> 0 bytes .../bitflip_1_2a8_states.bin.lz4 | Bin 0 -> 9691 bytes .../bitflip_1_2c2_states.bin.bz2 | Bin 12468 -> 0 bytes .../bitflip_1_2c2_states.bin.lz4 | Bin 0 -> 41275 bytes .../bitflip_1_2c6_states.bin.bz2 | Bin 2268 -> 0 bytes .../bitflip_1_2c6_states.bin.lz4 | Bin 0 -> 26933 bytes .../bitflip_1_2d2_states.bin.bz2 | Bin 4981 -> 0 bytes .../bitflip_1_2d2_states.bin.lz4 | Bin 0 -> 29127 bytes .../bitflip_1_2d6_states.bin.bz2 | Bin 1135 -> 0 bytes .../bitflip_1_2d6_states.bin.lz4 | Bin 0 -> 18288 bytes .../bitflip_1_328_states.bin.bz2 | Bin 5424 -> 0 bytes .../bitflip_1_328_states.bin.lz4 | Bin 0 -> 9691 bytes .../bitflip_1_388_states.bin.bz2 | Bin 5424 -> 0 bytes .../bitflip_1_388_states.bin.lz4 | Bin 0 -> 9691 bytes .../bitflip_1_3a0_states.bin.bz2 | Bin 1680 -> 0 bytes .../bitflip_1_3a0_states.bin.lz4 | Bin 0 -> 8655 bytes client/src/cmdhfmfhard.c | 236 +++++++++++++----- .../Linux-Installation-Instructions.md | 4 +- .../Windows-Installation-Instructions.md | 2 +- .../Windows-WSL2-Installation-Instructions.md | 2 +- docker/debian-bullseye/Dockerfile | 2 +- docker/kali/Dockerfile | 2 +- docker/opensuse-leap/Dockerfile | 2 +- docker/opensuse-tumbleweed/Dockerfile | 2 +- docker/parrot-core-latest/Dockerfile | 2 +- docker/ubuntu-18.04/Dockerfile | 2 +- docker/ubuntu-20.04/Dockerfile | 2 +- docker/ubuntu-22.04/Dockerfile | 2 +- 717 files changed, 220 insertions(+), 79 deletions(-) delete mode 100644 client/resources/hardnested_tables/bitflip_0_001_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_001_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_003_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_003_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_005_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_005_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_007_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_007_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_009_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_009_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_00b_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_00b_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_00d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_00d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_00f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_00f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_010_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_010_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_014_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_014_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_01c_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_01c_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_021_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_021_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_023_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_023_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_025_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_025_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_027_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_027_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_029_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_029_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_02b_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_02b_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_02d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_02d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_02f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_02f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_030_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_030_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_034_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_034_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_03c_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_03c_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_040_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_040_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_044_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_044_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_04c_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_04c_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_051_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_051_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_053_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_053_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_055_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_055_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_057_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_057_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_059_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_059_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_05b_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_05b_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_05d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_05d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_05f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_05f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_064_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_064_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_06c_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_06c_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_071_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_071_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_073_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_073_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_075_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_075_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_077_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_077_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_079_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_079_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_07b_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_07b_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_07f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_07f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_081_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_081_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_083_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_083_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_085_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_085_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_087_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_087_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_089_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_089_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_08b_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_08b_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_08d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_08d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_08f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_08f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_090_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_090_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_094_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_094_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_09c_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_09c_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0a1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0a1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0a3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0a3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0a5_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0a5_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0a7_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0a7_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0a9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0a9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0ab_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0ab_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0ad_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0ad_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0af_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0af_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0b0_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0b0_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0b4_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0b4_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0bc_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0bc_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0c0_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0c0_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0c4_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0c4_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0cc_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0cc_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0d1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0d1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0d3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0d3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0d5_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0d5_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0d7_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0d7_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0d9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0d9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0db_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0db_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0dd_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0dd_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0df_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0df_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0e4_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0e4_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0ec_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0ec_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0f1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0f1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0f3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0f3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0f5_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0f5_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0f7_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0f7_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0f9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0f9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0fb_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0fb_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0fd_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0fd_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0ff_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_0ff_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_104_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_104_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_10c_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_10c_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_111_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_111_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_113_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_113_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_115_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_115_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_117_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_117_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_119_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_119_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_11b_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_11b_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_11d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_11d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_11f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_11f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_124_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_124_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_12c_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_12c_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_131_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_131_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_133_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_133_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_135_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_135_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_137_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_137_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_139_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_139_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_13b_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_13b_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_13d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_13d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_13f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_13f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_141_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_141_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_143_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_143_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_145_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_145_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_147_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_147_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_149_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_149_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_14b_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_14b_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_14d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_14d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_14f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_14f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_150_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_150_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_154_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_154_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_15c_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_15c_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_161_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_161_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_163_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_163_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_165_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_165_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_167_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_167_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_169_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_169_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_16b_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_16b_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_16d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_16d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_16f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_16f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_170_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_170_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_174_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_174_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_17c_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_17c_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_184_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_184_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_18c_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_18c_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_191_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_191_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_193_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_193_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_195_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_195_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_197_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_197_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_199_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_199_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_19b_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_19b_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_19d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_19d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_19f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_19f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1a4_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1a4_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1ac_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1ac_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1b1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1b1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1b3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1b3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1b5_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1b5_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1b7_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1b7_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1b9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1b9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1bb_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1bb_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1bd_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1bd_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1bf_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1bf_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1c1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1c1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1c3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1c3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1c5_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1c5_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1c9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1c9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1cb_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1cb_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1d0_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1d0_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1d4_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1d4_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1dc_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1dc_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1e1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1e1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1e3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1e3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1e5_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1e5_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1e7_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1e7_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1e9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1e9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1eb_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1eb_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1ed_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1ed_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1ef_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1ef_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1f0_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1f0_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1f4_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1f4_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1fc_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_1fc_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_210_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_210_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_225_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_225_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_227_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_227_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_22d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_22d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_22f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_22f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_240_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_240_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_275_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_275_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_277_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_277_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_27f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_27f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_294_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_294_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2a1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_2a1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2a3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_2a3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2a9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_2a9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2ab_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_2ab_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2c4_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_2c4_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2f1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_2f1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2f3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_2f3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2f9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_2f9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2fb_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_2fb_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_335_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_335_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_337_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_337_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_33d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_33d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_33f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_33f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_350_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_350_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_365_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_365_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_367_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_367_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_36d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_36d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_36f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_36f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_384_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_384_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3b1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_3b1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3b3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_3b3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3b9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_3b9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3bb_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_3bb_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3d4_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_3d4_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3e1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_3e1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3e3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_3e3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3e9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_3e9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3eb_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_0_3eb_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_002_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_002_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_008_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_008_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_00a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_00a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_012_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_012_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_018_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_018_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_01a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_01a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_020_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_020_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_028_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_028_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_02a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_02a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_02e_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_02e_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_032_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_032_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_036_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_036_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_038_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_038_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_03a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_03a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_03e_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_03e_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_040_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_040_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_042_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_042_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_046_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_046_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_048_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_048_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_04a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_04a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_04e_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_04e_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_052_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_052_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_056_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_056_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_058_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_058_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_05a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_05a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_05e_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_05e_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_060_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_060_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_062_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_062_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_066_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_066_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_068_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_068_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_06a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_06a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_06e_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_06e_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_072_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_072_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_076_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_076_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_078_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_078_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_07a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_07a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_07e_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_07e_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_080_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_080_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_082_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_082_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_086_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_086_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_088_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_088_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_08a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_08a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_08e_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_08e_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_092_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_092_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_096_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_096_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_098_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_098_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_09a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_09a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_09e_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_09e_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0a0_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0a0_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0a2_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0a2_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0a6_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0a6_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0a8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0a8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0aa_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0aa_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0ae_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0ae_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0b2_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0b2_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0b6_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0b6_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0b8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0b8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0ba_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0ba_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0be_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0be_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0c0_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0c0_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0c2_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0c2_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0c6_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0c6_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0c8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0c8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0ca_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0ca_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0ce_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0ce_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0d2_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0d2_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0d6_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0d6_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0d8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0d8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0da_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0da_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0de_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0de_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0e0_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0e0_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0e8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0e8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0f8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_0f8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_108_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_108_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_111_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_111_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_113_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_113_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_115_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_115_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_117_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_117_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_118_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_118_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_11a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_11a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_11b_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_11b_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_120_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_120_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_122_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_122_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_128_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_128_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_131_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_131_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_135_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_135_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_138_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_138_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_145_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_145_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_147_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_147_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_148_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_148_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_158_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_158_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_160_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_160_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_161_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_161_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_163_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_163_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_165_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_165_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_168_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_168_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_178_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_178_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_180_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_180_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_188_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_188_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_191_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_191_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_198_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_198_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_199_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_199_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_19d_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_19d_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_19f_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_19f_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1a0_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1a0_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1a8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1a8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1b3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1b3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1b5_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1b5_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1b7_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1b7_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1b8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1b8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1b9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1b9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1bd_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1bd_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1c1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1c1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1c3_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1c3_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1c8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1c8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1c9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1c9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1cd_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1cd_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1cf_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1cf_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1d8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1d8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1e0_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1e0_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1e1_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1e1_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1e5_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1e5_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1e7_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1e7_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1e8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1e8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1e9_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1e9_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1eb_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1eb_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1ed_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1ed_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1f8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_1f8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_208_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_208_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_220_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_220_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_24a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_24a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_24e_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_24e_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_25a_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_25a_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_25e_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_25e_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_262_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_262_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_266_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_266_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_272_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_272_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_276_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_276_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_280_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_280_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_2a8_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_2a8_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_2c2_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_2c2_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_2c6_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_2c6_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_2d2_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_2d2_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_2d6_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_2d6_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_328_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_328_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_388_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_388_states.bin.lz4 delete mode 100644 client/resources/hardnested_tables/bitflip_1_3a0_states.bin.bz2 create mode 100644 client/resources/hardnested_tables/bitflip_1_3a0_states.bin.lz4 diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 385e5b29a..ce7e36938 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -183,6 +183,13 @@ else(EMBED_BZIP2) find_package (BZip2 REQUIRED) endif(EMBED_BZIP2) +find_path(LZ4_INCLUDE_DIRS lz4frame.h) +find_library(LZ4_LIBRARIES lz4) + +if (LZ4_INCLUDE_DIRS AND LZ4_LIBRARIES) + set(LZ4_FOUND ON) +endif (LZ4_INCLUDE_DIRS AND LZ4_LIBRARIES) + if (NOT SKIPWHEREAMISYSTEM EQUAL 1) find_path(WHEREAMI_INCLUDE_DIRS whereami.h) find_library(WHEREAMI_LIBRARIES whereami) @@ -457,6 +464,11 @@ if (BZIP2_FOUND) set(ADDITIONAL_LNK ${BZIP2_LIBRARIES} ${ADDITIONAL_LNK}) endif (BZIP2_FOUND) +if (LZ4_FOUND) + set(ADDITIONAL_DIRS ${LZ4_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) + set(ADDITIONAL_LNK ${LZ4_LIBRARIES} ${ADDITIONAL_LNK}) +endif (LZ4_FOUND) + if (WHEREAMI_FOUND) set(ADDITIONAL_DIRS ${WHEREAMI_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) set(ADDITIONAL_LNK ${WHEREAMI_LIBRARIES} ${ADDITIONAL_LNK}) @@ -495,6 +507,12 @@ else (EMBED_BZIP2) message(STATUS "Bzip2 library: system library found") endif (EMBED_BZIP2) +if (LZ4_FOUND) + message(STATUS "LZ4 library: system library found") +else (LZ4_FOUND) + message(SEND_ERROR "LZ4 library: system library not found and no local library implemented") +endif (LZ4_FOUND) + if (SKIPJANSSONSYSTEM EQUAL 1) message(STATUS "Jansson library: local library forced") else (SKIPJANSSONSYSTEM EQUAL 1) diff --git a/client/Makefile b/client/Makefile index 2e241ee1e..bb15a9944 100644 --- a/client/Makefile +++ b/client/Makefile @@ -242,6 +242,9 @@ endif ## BZIP2 LDLIBS += -lbz2 +## LZ4 +LDLIBS += -llz4 + ## Bluez (optional) ifneq ($(SKIPBT),1) BTINCLUDES = $(shell $(PKG_CONFIG_ENV) pkg-config --cflags bluez 2>/dev/null) diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index 377a5ea58..0cd148fa3 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -183,6 +183,13 @@ else(EMBED_BZIP2) find_package (BZip2 REQUIRED) endif(EMBED_BZIP2) +find_path(LZ4_INCLUDE_DIRS lz4frame.h) +find_library(LZ4_LIBRARIES lz4) + +if (LZ4_INCLUDE_DIRS AND LZ4_LIBRARIES) + set(LZ4_FOUND ON) +endif (LZ4_INCLUDE_DIRS AND LZ4_LIBRARIES) + if (NOT SKIPWHEREAMISYSTEM EQUAL 1) find_path(WHEREAMI_INCLUDE_DIRS whereami.h) find_library(WHEREAMI_LIBRARIES whereami) @@ -457,6 +464,11 @@ if (BZIP2_FOUND) set(ADDITIONAL_LNK ${BZIP2_LIBRARIES} ${ADDITIONAL_LNK}) endif (BZIP2_FOUND) +if (LZ4_FOUND) + set(ADDITIONAL_DIRS ${LZ4_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) + set(ADDITIONAL_LNK ${LZ4_LIBRARIES} ${ADDITIONAL_LNK}) +endif (LZ4_FOUND) + if (WHEREAMI_FOUND) set(ADDITIONAL_DIRS ${WHEREAMI_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) set(ADDITIONAL_LNK ${WHEREAMI_LIBRARIES} ${ADDITIONAL_LNK}) @@ -495,6 +507,12 @@ else (EMBED_BZIP2) message(STATUS "Bzip2 library: system library found") endif (EMBED_BZIP2) +if (LZ4_FOUND) + message(STATUS "LZ4 library: system library found") +else (LZ4_FOUND) + message(SEND_ERROR "LZ4 library: system library not found and no local library implemented") +endif (LZ4_FOUND) + if (SKIPJANSSONSYSTEM EQUAL 1) message(STATUS "Jansson library: local library forced") else (SKIPJANSSONSYSTEM EQUAL 1) diff --git a/client/resources/hardnested_tables/bitflip_0_001_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_001_states.bin.bz2 deleted file mode 100644 index e65f2247125203d5685229230b8a857e03ce5c57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2801 zcmX9_CX(b0BrnXI3|bZuDCCU@A&}RDLY5a>?R4M_hocl1 z2nmp6(5xgD1q2Z>qe-lDI4&(@BMZkOQ(K|d!ML30fTb>2H#$z|e%z1yalh`e^`npf z#LP!2T=WJ#I1n3JyjA@nt2OEvZPrH59*-rvg-;!KCty+{e!K=P_0zf|a%Ku1$HN?g zkeGfY?A1`zb>2RX2WIPDCMH|y_6nQL&b`%~ncaT9|cw8k4FMlx1%TKo(%Vk29!dg@~cjTDQGww(OuQ#HY4wmCn z)EbZ7X|Z@^8f%K3I&XsX+R#&c8$>4-QFxCKt$ly;^5VH|QTnT3vYgikDm`W5ot8jB<>ev6C zonKmH2D=GDv4O04j`DWNloUvnp}>T8a}jJ-rWhD1B8U1Y=QQWY?T3@gyI&rve%ie0 z48x_?**;;oi)5{Beuf0$sr3gq(Ops{E{ZCTwp`lY6B3#aHev)#86vhU|@;Q=Kjq2AC>-4GEieyi%PVkjgr638IsCL_hI! zq_-BEyKlIHW9$PDqD4{PMFw*A2FH@)UWleo?3mCrdU6Fjn!0C%CJMvivziQ|uIk6> zm&o?ffF>KQf{h*#5xy1`6EIV#*--?i(WO#phqeWaORD21BVk7xZEVNYxa6)1xPV-| zxHV{##%gTFBeYZELZ{IesC0I(Qy6%~PU}{ePQ~QXfk9vxWD&$(IXvZRPmZ@DVxb%2 zfr2iEBaPhJz^frm8K*2zLWEH@GH%A>!1x9fgX;%rKBbgKp|-NE5=4M8DBSg3)q7O9 zwYG%d$|-gCH+bHOm%-Ey$j#zU`{*Q91weA(`VCebRWu8cLPij z(7;rJsJPA#xx{Wn+(7Ce(kZcW81_sUAPhrL*otYh%UcyF{mbp&4`g&MkuE@5doLw@ z!oW8Q-2nD3ejEydN$Jqol&G7H&76}>V|qiZ0kPI_*+{)IFt_ zTR75*#^OkNbVTjQK}rq&di#D*Lh`Ld^tI*8?8}LS&)wLyCdk~SoNkWJ9H1`kSYmm9 zm<1<+7ulPe7Bfty&oiwDKbf8LN3x#gKJ(jywYW@a2H-}f{4>Y{v31Ys&YrZq+nMR= z@ygr3^riJLw-n!eu_3$EtP#s0NNltU7tTCEa-?sf@4X4<%*t+lGc9~m*zq*17UL|<34@!e~W+&9IL1-A2LlaUtUm%HmEP?OB!GJOMi>F(XlFTQ5 z(%w3l*>KYxO?#0P{v>(eeoOMI$DgZes;3(o(3%=l$!?G&MRgm;tnPY$+tf8FyP-yS z0MA5DNmG`$;G%GeJUOe~(LSGZ?{&|f6Uy;G4LC1J%Aj{?qtDJ}@55@D&y#sAxBnA7 z5v~rZ9Gm8rYo)fY&L6$T`msBS{@{5T?m)FDdnaHy9}3v4+DA2+8=Ek)T3_mp1krAt zryi}LCMN7T-dpYZIl1}k;@fXU)~4N(%?I-xHx_Km*}JOSmQKs`cf?E2n#Z0jyk7N& zCw3J--P%iSX*ZV(GSt;!HhGCm>>PJ4oR?sRmPEw0yi(KD_|?4?T-v z`8DL=9~tQxk=%ld-%a%u2`A@7oo+LtdHE43LYRW(H!-bV2t@rnrUCnVW z?k|h92U@g`uHLTATFlw_*+l|{7aB?YE!HR8OsJlq+zBU5g1_CN=0F< zOG7hoQz;a3eCCoOZ)KYvixca-H2rjhuzU*LJvKDGmZ#Xy#jd4vL5p72}|Te3uxjtHYdLmr0<6r^e`= zcX%#_rFgaQjBYqjU?2$iu%DpmA<@_O6T8yuXN00DO16|562Z(8m=fZZASOIZDUpW)LKokr1e0 zyq{_UY%VR4YT{$6VWxy41Z)OwI*YZ&B%xCfm``MYRrwl8iGgZl5sOk(gKtwdmtKYk zV_^=JNb{M+ejEyukJ?BWEF#&&8MKFCf-WEJLBc&s!Ae|}3iI`YvKw7L3h0VhN|J`C41(M&9{FqUoH=+_ul*X81 zfl2^W#b8FCJU?l)Hy!BKX##OUn|X5yZ+dv`xE}%`fhmcQ-E`JMXmW{Nl5&+=fr7?y zpFcdVzPG4Q9=-^?yfpbycvHBtRpH=K|p{2rcQ9R#Ny_ep~ r9r7!#rE~+s2;Xx$0W4m9H!J|3qo-`A-Tl>dOT9gQ;~z?2rRV(@@_o#5 diff --git a/client/resources/hardnested_tables/bitflip_0_001_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_001_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b343718e708a4cce45237838852a4cd4d8181cbe GIT binary patch literal 27811 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 A)&Kwi diff --git a/client/resources/hardnested_tables/bitflip_0_003_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_003_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..61f52563f94e70b098196200eee1c89ef122f432 GIT binary patch literal 17673 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 S{g3=&Qg>PbZ$o@X*#86RrkWZ6 diff --git a/client/resources/hardnested_tables/bitflip_0_005_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_005_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..5e6ab2676e074d45df5ca41d18977aba49f9996a GIT binary patch literal 34843 zcmeI53zSt?d4Tu1uQ_w)%-KU`!rWn?T*CV?FbD`p5>8AauZ)1G1c_!M!3@C>YLXI) z(M>U8LJ-mzLzZ1DlPWf?C5g2uL89K&XtgN|ZJH|8RM29QS{f7+97Ejw{(bH|8DdCQ zQrmUzT5#{2vmgKa|M$QDvrp!{mcrHR_xYbxs#ER!#Svxsq?@fhG1q#kc<@v~jhcI+ zsK%t5hpI{G=5b0#${RQLM5Lyim>a3IHfr7!YmFMDl}EP;2T#?gOr4s1@Km6JX2sP? z+RWg)N|#h^xL)z+8m&^+-jpdS|G3ITD$}Yaq??N>ACI3>si3G*1r>J40AC7KP8)BH z%;Qz%I#h69YRbV=8C4O|US(!7qDQ+yOi-l@s*-EgKF<~YRd)t$9zgHbDzsx5qLc$5 zuU@NQw_gAqZ##EqgsoX!R4rOnZWSbA)jilw1-8I$_mO_ zZjI5tLx(?t-Qi)SOPNL)Hv_}cO zzbWQ^MhK{mPDwW#ulBrj^E0V1QlXQIm42l1MI|kaw-gkCBvS8!Kv^9PK9~N!8V~;K z^kLNm$+N;5uK{SU(MC_?&J=*EPGwZ?gDNON(!zEw-Yh(L0VFE4$pQX_C$ypW}Wf1mEa5 zZ*o_L>KvKZ-d;u@MpjM{oUHu}?JM}Xj0WvcYo3#jI~jeR-xdbQ@Dir;-b+uUF#uF# zlL-pY($tLxtOLy2DBuC+cC9Le5@zr;$1joVqP-Pa87@E0r)iprmeU;76YO&K6F@mb z#3Ls#!XZ=(%nJ4=PA=_nCzz_xsMQjnoMgjZBIBAOYwq)-SjZMS7_Hr@J!cQ(o(hex z&6E~U*`Zaw3Rs)8`rr=X+O?3wL-g0SyN((VVV1rg;K(zsDF-airbr<$uAq=&TY1Qf)!)8%Y z$o=n^_66y0wOI&<3iblMCOO!(^0l4dJITq^c>eD*U2CRl(ibXERY&bR~;` zcr$WF(blMX{*Tmf_q$3YQq74a+gI7#WlGl|uNgH`FX3Bxz=Ad!Z>DZm^}b5yi;vT% zsH#Gd;7n6!WG;=^R%2!>;;YvFl#87Z@rV|IcPcO>3xqc?RXu-yLz`O2@dDbG502pfJqTb9w%3 z;ejeF#$1fmksd~qEm%Fq_r+Zg*&7zQzr=n^X2R^K>>+x0ib+Ody`ydUdKY$AcC0UP*({anO5dAEnA5j=j~Gi+=O zAoA5Cbrg!I-UY&9f#MP5KE`hpqXbZAlpV@2i$V6Jn+^2F-3z5)n!d+L8P+z)&*ibTebv;f%=Z8{GF-b!BjYETPOk9 zo26BTP)yy{64nG-bv(@s5H!2b#RlG*$r8zFwac-@J6B})eiwb9h=gYnh(+lYbj0J8 zgczyKqCvBq8L6}QsgxZ88&<`}P8fTg2$B(9X#*D|3s)F+cup8o82KFF-*|vNYk|Ys zo1KdnWpkuTZw%Mx^^y%RGzAPd?vSzUY_0BNu)l&{*FdK`5Ql0k3Jox{cgAyL?knfP z3EF)|N8?62=BXjjx+@e2*M~#{Q}uVldTxSM;TKE_ed9pD89=~zkRd~n)^R@+#QD7B z;@%1vSOoa+2(W?h+^eK5Y<32$Am**;S|g~93=T)ft-)V0NhH_fPle!T^7Xp)ys0!O zU%ft-gaIACHXpfCpHdriGf{Qc0qG=QXq?}ZVt54GRzfz8@aqMjnX*1lKf<9ismLclus z>sT>rpJN51#X)iJIN;B;c~8Y;oY;JP=IGGe##CQKANK1~bvBHkc=ZZrhA*7ySkVar zM+Ip4oZ}+f%CvJCaU`*usgSN-G^O22!22p-%GyLVPC?P zpP)Zm1;}%JEOzUOY;d^*-_>-G@VAoXmR1KnR!>C9;;N?U%a!M6xJskQt(|K1t{_Wz zJz5ZQYXmru*#>y~>2MF<&*3JlpN|?sgEdy$rJ)Dx5DrX!fM3hb2|JL=%tdmMz&SM* z5x7O#`B>SU-6cQkSl5Wtbk-%mELJAVhzkXjquMOHlY66?RN~e2lYJHrO!S^V#1&%- z)kH??UO3cD#JjqMLy#e4eU@Rll4=2NG`?r$u+$M!AP$jrAxsI@)D#Xw}Hw?{ftw z--gt;y3vt9;(4@2jiPt+Q3ooNE*ucY`htIWGqNJ_8?C<K;@ z@GU{{7Uw-AdNST_d^UW_5K%$Tl3L`(eI62wM=0!D81O3WIRY?fYCKFRQ5v58-5?)q zc42CX_MfQ*HghLBlLZnFkrLv=Q}E1P$yFIfY_cywW!EyfIxMMt#0ptAF_Wx9-BMbV zrD*MNfE%q_t7`)j`qQCpc97^rt_8Us!LZozp+~r4QlrBNbs9Pon6b9G4WY>sfeDF4 zP@1Gyfn}0OUyN+l%b(#)RAvK`hwVt;4tjihH|c1SAk`T-NDg93%o#fu!?7kdk?Xa2Q@d~I z+SuZl+Z7^Ixe%d9=U{WNGhI$V93l4k4v;{a(AGHmz-mcWEOJBw#Hp_s>l$je$fwF`@12s;R7Q_#Re5(z9=ErkZH$Puwtb<)f! zJ1GRyc_h3#52G6iW2W*Ab)5A;3xdszMPnBjiDPR@d4I(*!0gr~tt+6JHy zUHJvGxdg(Hc6dNQU6y{if5=f9W^$_N$HDiZXZ@<8i0uuEKXo%O=o)*#3`SRvmSN!TCFbssy>s~ zV}SSd&wQ*V*YWc>l6MnXD0Ic+ask^g8hQ-mIxxpi#zZ>qUxD1@;uHo0JnSF-CQ{Xa z1oU+o8%R>3l~+NQeURne;PB%?@o_vzH7Lyvu_h(8*b(zNnlyrAzFo|`80a#itfCI%R#6?2u>s^cps6QM{v_S!7&G+h6s;< zC>S&}_0DIEz}ZY=1{Tk#xkQn1w6+Yy@fqbLhIxk=*tr71KuHXPkrkV_k%>BCd>1+E zMMV%ZOwdh`@7Y*duwZgUq-Ok4F2AVFd7^jrpK}qCH38Eo$<7Jr?U-8t#~PuuWS??( zAbst4jO##UtS+UUMfHnA$z8BG_ls$iy3pe2+&nga7>&nBtH`;;>Oo-#G;aPOX^iV| zpBIbgL9DV*>nH$@8cCPp%hF+MCFJ+?`6RSla;p|<2QG^=o8}?}F3SZxv5H!vRxBC{ zkRnqnc?>-7C5UjkU7IH#a{QAVf*J}B^T6-27cgrGX0C8UaG0>YQN&4I0mB2R=5iPe z?gOC7)k2&{!>*<5G(g2L77xjs7WA^ju*&{D_V9#cbj%Q-Y21UMs}3U4Z>&8t6Y=>7 zMjN8z6!#@KaTPAY?c8K>dAWIe!tQkZ+GdA%W7FT z1syHq&Ngbb3MS%~4K7_Rp6Rm_W$mbKI*`Oi#|+3v$^kasHpgW?*rre&5I4O7%(Ah~^TNU?Yp|1R=yG3gOXFSf4D3anK>P_lcxu5T)!sdN&}B zH^fNzAadqBiKsnE66|OtG;#4oJM+vFt#P@OLt-9?*vi3+x?qHp7csn@P^iGq~rUDY(_dAuok zwa{l<4SkR9A4&d)`yDVAO^0h9hSeoh`2AinA!S9s4<`IZpPCyJtNed9yaY=!hD`#A z0p05MV`3E>`74Fl^;W@3es{%v)&{y%HIfz1I%JAAU-2avRd5=@TbP2yw?SXQJG(L>wdck?Y?(F8-Y4%?pBOMJ57FOWtOS0v%h&dTD?bO^M z03!aeu**-BmHAPm|;}r%0pYsSK z0ic{jB!W^!#_bUfY!IIa5~al;eVb^%oj)e`4CNY#pL?4O_*s0L6N>q3%K|a8EMcx4 z=5!3P!`UW1;Klj&QU!dl`J5tQ<)_b+>4CcP6B(a^hc*$gEoy=30nkV5O^_u;;_b zOrq`g$!vU6{0<*s_^QxAqd%zT=Ux{LGI}I83+FIR-? zxov{}8B(CE)KCYPfL2HIrK{0+<6)gvvx0cu@tM>{h>Lr&e@+zAv4AYBMtmiI`>L{{ zV0q#0v&o45N|$pQW5E((JNt|%L5q{?AHWe|zEKx545ZJkb|Srj1Qw>WfEOOHe&Wn& z3^tWb6)<_Dh4@RLnJjEDamDYv;^YNBcHtV}d6~Qg!MzzW0(e`bP5{<)%gjLK6>U!A z&XlN76VYd^alhIM$;6_kXNUyUO)e5R>vV+rByOr-i3MvSm!N&M$%u;3U_<8<9#6-& z#2#Omx`@BdREF^iGZVyc6BtESH@zrKx_>n2M_lcd<&J(_)@#wX(|3pZmt;K5rk^A> zMmZI=5{UYT`+K2^{&|WP!i;hUzEGXBsnAG8xqK^mf}9?(NCTQhkBYmOAm!xC)o6s# zHn))_X;BHL{}(GXzK)ar#1`4BH!n$u-czf=4fdOq{R;@2)N3U58cDrIY&gW`NXUvI zPU|NH4vXZ1)52{MwHZRpc#t^ceW8p6D%e58Y-#RNa{7*`k%~^ zpVVvYby_0BI+uWv}bMv@|Vg%7bLDU#%omgJF^-;+mLN`8G9 zjVGx`qTi);_mrP!nL~*O#UqlnCq?}dcYB^`2}^_7(n)J|&CGJIy9vYwe5Pd{rCpLS zzDrWlH>Z0{Raxb9-#;_h(r4jI+0~?m1M>`@YD<<&r+l z-0OlKo}FVOmil4lzmi;iyW2{Ugy}|hQ$5{!YbCqbxwZw8wxr@CH1DF~V}m~Y=@Hal zG|;+*0;v&Qb*%1D7ei>-`YEkT%Byv}`vz zwRtD<=!#=Mhu#ldb5eSYXHO@Cf-5heSedQiXMT(U>R)b>i`Y>}ZdoV!piE-Lf zp^IK^|I!ol+g_HY^CXrA2zy(at#R>5x217=*gV+S>NfvZ2(8%eq6#FgZj2vNpwcU6 zFBdDEd)eZ9MQMszCg|*m3sTDEG?aTuH3~-ipH?!|Mhr_m)f8|czp-o~B6Wz;1qxmV zDv|FgLg}%gzoRz3PXUUd9F1*oc=V8ts--#_5h?Z&5#!uSoji;9%CBHSUsJ_3D!ju_-87ypE-)Cb~ zS|O-iwJF!qv+zVNYD78?^{GwaM&r-J5>Es6uT3#I?seCu6Z!*eB@vDJU%u-aX zZpP!OrNApbM|LY;>MBrC9ycNMEV zFC~GmOP$K^&B-3?dNC8#Ijh=}G={|0p9pJS^T{4st*K_5Ylt=S)cOUhoTS6)*Knjq z{BWKms&7WoUiFb4JYs{)QMGnfr+J)`DU;JYT2Q+k7~}yfPS&z$>C8v2Lr+E~K%97JOoMGNV2zNKtu!P;+CGI1M&!~=IA(EWtk(}nyt9+4+ zPjZ@vJY`5+>~fd8i2!*tG3s7P$q$xU$!Q+RX&$Ue_OrsdhwtZDTXbSzNngl$gmTtH za+(KEQFMLCB_yYL$a5XZX&%XG9?5AQBr}uKJYMSqG{*>0lG8lM&pjC@$CJ}MlG8lK zCZ~BMr+K`_bVqWUhg;0JGf$J#Jfz4dInAS-4oOb)NKW(Ucdl`tVhWX<=8>G{(dYdq z5}N-cIn5(E&EvF;XmXl|oH$WFb~HK7zXp<4SUxNAmWS-ij-|7 zZ(rd79hJO&g?b8}5jx{LWnXK(Msk`*a+*hS;A!%LT4dn=&#*XJXkojyN7QF zc%fZ#nnw~j?SCC3r{pvb4ogT*^EmUHF8dUqB&T_}tmo@`n#WVTxsH$GvtiyBg8uVqs literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_007_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_007_states.bin.bz2 deleted file mode 100644 index 0cfda87cb7ecf925a5280777a88cf09bc69db73c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1591 zcmV-72FUqBT4*^jL0KkKSrk613jk6KfB(S|0TGkknIHVUfEb7xoSev=fE|Dl03HAy z03Zk&2r1wUzW@LL000000000000`qIO&SA6n2e1KLjq{i5MneKKmmstGHB2mG{j_R zVi*%fn1d0Z!T=07$&*Ha(WWCKLlD54G{hK<1`q&Y#!Q+t28}Tp8W@HI(WW58XfS{S z4l-oXpfqWS$k4s)Uo{6AlQ$Tv25*Z$uPq*%< zf*!K&r*g8yIHwmCM+){GE(_RXV=Id%VO$K4c_v6Rfc8& zPAph5qt1>80r;NVE-sg0a3{*}Tp3R)%HqX)j~5cUSRIdb@xAwuzGiqXGdx$FM8S&5 ziz+iFT`6TtC6tn}Ss`b%r5z&*u@zw%WPSBL)btip-Z~C1z;-$-@IOnr-S}Tg(dAVh zmB7lzPb#>qEWbL#p@g_POMzTn7ZsJk#LJ5#jxGy}iziEqESwz%F~>^j94vGkXGcRB zQw&`(aLXeoV#(6P=`i7jFvd(`#xTs7Wth5IIO8rmkEn5U%Q_vLW_0<_s5)H?ju!`u zBPKq>A;;}Jqow9WdJ?C!Jx?;=zZskiOVI4#>0#(FxUjfc44FT~VfkMR((b-jm7Zto zc%P~3sUGVwjQ1C;4mvZ6Sz@?xe;Ma~b>?0R!2HYGIy;@03m+o-j-5VZ-b3<+RaQ!v zsvm@|%Pg{n3?j=Z@g`XlvO6lH;4bTnp*Xl-sbxnNN}kvq%Or5Vb`K&Q*A_0z7Z-8R z=qxau7Ao;aMV4GH3l0v#;KK|ji1~-iKOxaxDtMMzQ!HP|%Em9!%J|L~lyrxXV0SRX z()d}QG1!Omk2vujyZeuE!`3`sK>E%Hurc(rv0aWnqoaY`k1+m$!uJeWk9@CrC*EGA zipl)Xeb|NAuIPFMWXc9Br8+N4yQ{)prHjIGcyq~7E;WnV9aKC6&5TU zD->{HVTl2=LhY^z((Er5ZzN4{ppS3&}a+#HkO9o@a;9=~M@;o1Np~A}yU7p)G zvcZdvoN>jO+567t3^C&N6CNszr($s7SbL16=p7IEVgGKNE-%1;Vf&Ygq1;|)1B{Hp zJ+bTuLx&TGOFJ`*J!1|P!Pz)v(0cBUh9|noe)sTuCr5O|Wn^O_|K>-Llf~IS131b1 zkFEC)1p7|w4n3BArXFLb5c3_E6TsocUuT^XPvMGD>I$l-ESj)o ziJ6pTMv!Jq3`~qgmQxlo%rh!tV=BsG%GAuVF)uTcBn1zug1~lA$FBeY diff --git a/client/resources/hardnested_tables/bitflip_0_007_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_007_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..8864efd2dfe3f555eaebf1b3d1ffd7619236192f GIT binary patch literal 19198 zcmeHP4Qy5Q6+icV_4R{$9<&TbTOMCAAe2_<5(G*gQzJr4+s!x`)YeIY3YD_#gH3_E z#EorID4WJODb$a+B^%Ny$+Ec0Tgc)z3VSXlZo;Axx5d>$m4#$TJ^P*ieed~HvP2{g zO?8~0HYT4)A5*Zly!rx#@E$<7oM$Q!*~R_AC{tLZ3ggihl!N9~7BUsd2OJ3>G5}-+ zQ|=)wA@^wq0KPGWnL@IME39&+S%;aXDqOuTV4PVkB3pD(jBjC@EA{MzlJhYtqL{QA zGyq9)KF1UjxsGXuLUFIjx+X>?o3@pUP^HMe)N+?Wf4#*$)_e>s1+LwI)qq}*48qH7 znh2^++Z1B*-{aB-$lK8P6!8B+x&@7I*%VB{l}DKJ*0^|qB_W9!cpaFx(lGMvBqPBe zB|L)07+DyU3q)Gju|Tr_Wp@1XLuG5fnFIv<@|!d@hQtM?N7fol%9tWYn5F@*i1q^d z1YLTL2$r5Ja+6`dnfN1j<>w(e^RBnWHsxb|tdn}HGUYt;qy1o73mGM@&^U_AEPRKW42kPEbFhuw*h!8&E5)eFt9vJ=oNV^GBy zJb*>s1pDV?y#$g9xuyuP{CJ)m#Y`h4|Dy`fe*$9U@}&gwl|OULpATJumUBCmyLf+r6QL;V{xm>VSQyw|05W{C z$KYJ0VBb+23aFt6)vPCo3}~nQH)D%!z^W<5d=V&_l6QvVbEBX^-hnP2!BX#IB8Upy z3}7)@W4A__u4&PgegTqavy-!%9bcIpvEY*?qG>aC27zs8GoH(^Uf1OHFp@%mUuL)Z zIT9#kCkR%lky?^8{9NOk0Qv7m7lh`k;+g;u^n(cS4G1{?YP&VW@i4Fo zRVhZ{7dXZcTgeWv3ZTQX0H{H6LtsY)YvvE=I+6=yzo=lo&raY@Wo~#kFf8ME?ri*S z;-djzACd(&*dj-g{ea1b7(O>C{G^X z3RMAyhKD2!kh-k<}%?D9~e7%~6`%XC1@;$G|sG+>4Z49P!J7yWpCrAX~%B4nTv z170Dc$WSx8!s3L_Ol=>cD?6wWS~uFH>iswX zI!L3&enl0P73q17UDKIKa;l@#rhRaU9f-WCrsOXY1(TG(BX1nmmHpLZPD_ow{;m)>L2(1em_B1NUe&jL<3qDAwb@|M{!kjBL#H z$d`<#444Svm+f|E0EDGoY)C3>`aC=ely@2xylxZ;O zeJStK%G6lxjtk3++&OgrxZVCYV+W~TH8USY@Mn$}9Ci~@{A%1i2?haDmV`8(WBkdO zQqrSWB_*|;Tab{}*^WB6n~k4)PvF2l(JZuGw&R{>AH~+HUVd-KiV;7gfKUxM(lD6GSfmYOzM5=$nCX%0nSPA9$Zwx4hfFlpAAdIUU>XZ#Gv6~uen`tl zxQ3)M@4C8>F%*b>6R&U?)-I;4_b@%bjp-YZvg*%LG(V+V6ZZnF2RgEyN1Zx^Q={Y{ z{Cu6eak!aqF&BQ}TE9U%!r+Zs^g_Sd@m(w!WegX5v7ejxBQF3NEx{YHA!Tlz_(!rdK@h1-|33`@iGCt5K z=4?v8&0oeYzA}yZ=pV4jeuXoqzJfFQ+JYDk++xF^;6oM8v`VB$xm40UTj~w zSV7l&zzrmQ?&Z~3c{Nt9Cam*nth^d4ug1!&v2s6$jOl}xS7YVXSa~&8UX7JkW98LY zX*H@>W98LYePRXEIO6eYtXlQl;i~;fj#p#VX3j|Ry&5a8#>%U)au0~S8Y{2HN~4Tb z<<(eufBk2^f3L+S2=A}|yc#Rth<{b=)mV8oR>@C|89!c)RR%Lge)MXrz#DAuy&5a; ye{(>Mg!jKWT!sJ5VPtQke-Y@_SS9&$k-ZwLk5H9QRgKkg_m8Cs*KO}zJo;a<=7O;R literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_009_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_009_states.bin.bz2 deleted file mode 100644 index 1103e29bc6263b22d3155916d735792bee147b5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1780 zcmV7hs0g5kLS07GMAZ z6j5Dz;0)gY000000000000000<`YInhK553(8y_{Kn5cwKrnz{IfT)Xp`nn%G%^}! z&;f|akPILg4q-H8XlP_GjSPmGGyq~UWCI8W1DH)28X6f4BSRskjQ|*onE=88faViM zMuvt%2++uBqd*2DCO|NNU221_v*WK$MY0bzR=MID@9+C6Li%ig~8iSoX6 z@t2ZLi=ttNd&tbi@(w2+E7ZThf9Q2DH>kZu+`6v>nc%Pf7e#yG!OkGdy#?6CQjaAkj@{cH8F&b{lfpQy60&OOZWGJR+GzPDqj z>{z{PhkN5?!TSr)d8|DLA3*3heen6lA28zMKk`1&^t}M|Uh#jKJ%^FmeM<`YMD-7G zV)vF_MDQ723m)-@MZ<-X`IG(*i0m?1lJ=+G4}^S5@_xnKJJE{|)cBX|bSvD12J?FLF z=y$u0Cm!L)dg>lWbM~JjxbRNl_8&7n2f#mo@IT1^qscvNC#_?PBQa;R=sG$VqQ@DY z=2NQ2ayqA-N@N_tn+8;3-Qo)emcMqU^Z=8IChj{N< zFy~R+u3^F4IL?lxhd|75xWMl^IDYpN`-dGJ4=0)VkIFkQTRxHEKS|L~BR;p^KLOBr zk6Y;<1CEQ>dfZ)D>iokv$7RF3JxphNgNuWOj{~y)VUK}+Ws}i=L+w1zzWxUu#(v|X z#!p9}^fLCZTK(sl{%5TI#a-_MA5-|hi}b&#^c~9m3-maiEPN-u=EFZg^`1<6&Ob5G z{Db>eABpphiu~!-U%~Y~7Cjz^W#Ybd-o6*SzM{URRsQm=zdeo?7so%cn*Q}7s3xUFYs7W z;+$Mk;3e@7m3CRxnfD!6dmR^5n0nak%k=+`XP9;!m)L)j>UB=3>JOdvyB=nJVeVfN z{we(*Li~rC`X4d=$K!o#*nMxbdlUAb_kFHD$I|=DGJVy@^_?9bDaVTF;`X0#%iv6( ziT7Q{6~*+QI{DM#KiYYx-Cu=1CGCDC4~0J($^B>UKI7(mFInzPdzHsRdM*!AT^1~K zc_(4~oleKbN8w^dKjf2uxJE3P65>biSw=Fkl4C5zkJO)tXYwpl62&@-PUTUK#f**x zIxDf4^DwZm>Z`Drr0iTPBu*sDv66l@QTxltvdahX88X8REHPm^7X-zLaSj+*oEA7- z88FON3;(X-j^o7QbaxauGJ%*5rak%hbYQg^Rhs z%$UO?46Y6rigXw-V+)0JVqOBg6BFrG??Ra`B07$zsKC5e8H*|`GGUNBlgZg}WsF#* z#$z(!W3kY2KE*-&RJa#p5#W;WWU^t=c&1YIrwcC-F61(b^$G9=-cgd7D!-teT~u@| zld5=_ILbPTox&-A>{b(jjuNiL{L$v8n##(21BVtpj)Q}PiN(=niH2i3l)Zx)FJSg5 z(SJdPUBibL6NI?P%*JO22M2ML(Q##qqoFdx21X24Oq>~9S!P|zxGu_cEOceZ7Z*oF z%Pg62;;DQi;2yGk1rGI3B6<|;FkzL9W2ky6dMu_{8G6C%F9GIxk62;R(Bir}lc8`~ zVmyn;yw!Ot2dPKGuM}JddE$02S=j6>JxcOjlf_+?b|x(FcPqJfF6VH(Q@n8)%$T|! z1JpX5&a1IJT}jo|)Do%o}wLn|v8jF~7&KdB-XMIjtjfhwIvDbQ9#z_CeTQvrm= zCRK{W=vgXOSgBcXNpO@7913tzlBi$gyOMU<|BGvkNB~WMmb= zmBT8@Wy377MTR2F7ZxTgs^MfTWTs<_A;iGqVv^y4SYcK$RtzzcVSsRCIHw#g7*-f? W!jpp%oH20!_`8xR!i0o~VJztO+gs)U diff --git a/client/resources/hardnested_tables/bitflip_0_009_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_009_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..187763ee6c5b4ee85b5d6b9d1eb9dfe270163b3c GIT binary patch literal 18034 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 diff --git a/client/resources/hardnested_tables/bitflip_0_00b_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_00b_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..085a4301c910cf1e46bbf159689d539319a59de1 GIT binary patch literal 12365 zcmeHNX>3$g6h1R;0c-nCfkL`LhYE<&WhAJ$Qj0&5?oO+!osyWwD zOVjcw3%&Q5vPGl<&Ci(f@F%^l-;HEIMO){S;A~G2qM05JGUHmj!v7BH99pITNAlxMIhr5*lc4RB|t@NCmlFO39hBZ2pd~g zvUspsiL^mEXrEGn#dI_JEHe@?O*z9&kCby;{vvKEt5V)JLg;TYV!|STvn!ni})y2bf|8=Y%7SHj7|4 zAvp}xB(1(oFJb3}*fc$<&Sod)E@=(r#{6ka-^pV2z?A2&q_hiF9IEd9O!HGfye4d? z!*u>(s>2S(i>zTPm%U7HctB`?<~*6Iepe$aGl~Mhy?K9gIn!V`NJ%OYe|v!P_Np0! z4BQ=H%Z`|S(COF=qZAcjZYvjz@>6hoPczNAJXbEX|2v3jqMXX3H+8wV)G;-P6r;0$ z46MD(5A5|uxr(V!`||7PoVpp@3Zwg&7JE3I8fTd{&(meMh`>SL4BJtp$-ZL5dS5@bmKQnzojF0$#_4eQF2Oc zW4UjpL&=7fsN?)$rZ0T}DV;NBxg{$1r=ar)rhpf!w_-CdXKg7|dZu{{TtqJBXEa_p z>dLIsn&mn(v(s><0XX0OO!L=b?g@suODmX-(KKZl!S4#5J{G}0;?krif1GKfhYQnh z^EyuB0A$%;y=kw{08i_(l?np&!$uJNqN?`km!PNbc5urrh=H{!5bq%1!tY`_blNe! z4m}CdK10-nntQ~`Dw!Ts*MBJOVreEyIo_;^My7a){OMDJj_o)OhJjYOLF{2O$}GowrlIuHjEdM(bIaFb3$ptkt9%ifT*@ zc>p3{Qg%)z0>FW_o+eX8U&B5VL%R)WB;J1j<8$r2kL$;*gb_aG$;*KGUT-;0@Hf*P<|LFl)yrNV z%oTQyC`UNo_uw0wkjSjMPooc06?PGq=a~*C(SC$Dl09vmN1(zMSNX0HaCu$6i)ilz zwIqpOG9CaoKn&3mWIMa$1PI!+1OxUioYuoV61BQg2sc!lo>Qsmy|qLWwH!?(9sjSz zCUELJ=^>$kenbC+{}ueT0Kt5+qk9FaP=z#dLZu$s!_a3d(*bWl8;H1xCBcjJY+!I7&Xaq-CZmU($(4$#kj~o0#Zd=dh=LC~(_|#Yo*MM9lyQwL3>&_j8q}de?%RCPi*Tk^?s^!m7kuH@0v0E3-*6Uk<-cGNi@v3G% z8B*h}Xz7n#WbRj(ZFf>9Z6I+9Y63w`z;(K1DHqnDCSV*Xs0jo$fn-DtY63}FNKg|< z5r#-m69{SoK7;5+C#VSoHG!Ze&<#fs32Fk}5>ppIK}{g233z4^)C7W>fM*OrO~4by z|I`R-0-bBLK}|r7FXc}bC_|gSHc99IM+P;4peE2osJiN!z%l1vPK4)%qjygD7XVq} AQ2+n{ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_00d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_00d_states.bin.bz2 deleted file mode 100644 index c763016381ad805e6c5bccac58280e495fd192c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2204 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_00f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_00f_states.bin.bz2 deleted file mode 100644 index 39e7afc470e0d56ea57eb3b710dfb73e6a1a0452..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1214 zcmV;v1VQ^kT4*^jL0KkKSI5G_y0Li8yrh_2FFoB>n zVq!D^0B~d)Gy#)LLrn%jh+zXjXvD;5007{~G-v}Rn1-4RgAl?7fYFJF&;S9!kZ8~b zO)(8L83rMQ4FRJQ5ugA7q^N=*nh0e*G7+?y9--b${aOzT$mn{-22OFI*=_EuaE z1^&lFqw8O6>bZ3>{ED8?nI5wC*?a1IC7d~9lH_nYBdDt)%3~>o4>2&i9`V9Qod1Nl zELc0N8FV_H>5ued@}B|n9gdF9<{TfT!p?`lJ_Yozc|FtiyoZa_GnbX=r{h*12!V&G+r#x53M%e2XG3*)o%d&Wq^-Qp_cV;sygMp3%EVF^g zvxZ|R!z#rwWqnT+?(lfH7mKS0vcC%bDe|8S_a~i`vGbfKC*4aW=uQQY`_2U5WO>iH z74*11)6^5eipChr46tItxiE0cgMek}hvOWcu0zU|QftA1x?98XQ&gTiqT&2}vOQFi07X}=zRxVyA z)c$wod7Vu8j^_pai-({xDL?0M0daL19t>^L|)PE*e1-@4^EqLpqO!DxWUR?av6f9t6fu;e7|DXnV+D-M3T8sg zWf-Ytl(B%uC6+8Os~JdTkjaUL6*DC>5W^zORx+`aGb)*o$%STAEW`|8EXcz%1&jk2 cteIv8VOYjuq{c-vBR~9I$rRy2Lppc^C|HV2bN~PV diff --git a/client/resources/hardnested_tables/bitflip_0_00f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_00f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..65e43f1589b2a903d037bc7ff4eef2e06b04ddcb GIT binary patch literal 13684 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 T0)uZ-uI5}ISJltHcL?!+RbPMp diff --git a/client/resources/hardnested_tables/bitflip_0_014_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_014_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..44acd9e897302c5253bc7a73a58dbd52f9f7d0a5 GIT binary patch literal 27232 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 OcCgvHW&Q6;v-}_0I>G}0 diff --git a/client/resources/hardnested_tables/bitflip_0_01c_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_01c_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..81d4d9de3b52c2819e271a3dc23f22b3c643fc31 GIT binary patch literal 22128 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_021_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_021_states.bin.bz2 deleted file mode 100644 index b2fef5781e88b30b5e63963a650864fae5102c55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7328 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 diff --git a/client/resources/hardnested_tables/bitflip_0_021_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_021_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..fd5d540d75780fba33fc7f21383557ef44ac1a24 GIT binary patch literal 42330 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_023_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_023_states.bin.bz2 deleted file mode 100644 index 32c7adfd59bd1b0a0c6ab194de8ccb355f5708ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2080 zcmYk4YfMv%0msWz&=V92c)B$7qPC^wg!UXv)+RiHULM+BlxKTP$L%?NsM)g6@?jl% zQ3P5kXCQsi-Y}fvV<1teUtrOzeVn%Ev>QIQg`34YC?M!{87MNY&#`a&efTH;Z~y%A zKXl@h6s|yd4d`Yb>SCNY`f=;=o`g#Yzt7A}>C4V4QDy%wS~hVVno%vpI}y-u*BB zpTPdF4o3W1^|wi>te>5}QN`S!{0J0Bo_>XhJs|JA&s_EG>A~)Z?_g^3wcjQDfpLn# zs6Sfc*fkTW{qk-WEO}kHfsjI-m}&BToNiYrwTP) zEOmSm7Lj$GKUuwlZ_=HLYorr|39zYq#4pV^A1JBO-m-C$kF@l*WZ&<0OGxEtDiho> z`sweg6q9n&9}-GPB8Onhn_>#fr}CfoJ)xSL;r7zv5r7l;cu$n=y`MMx8`0xW!zG)_`rqRX{MxL9y7S>5<;rQ ziYyW#Wce@hS94wn%AYjSb@7{{bJ1Mf1h9AzHh(nk*kVw-8F*p$6hB>S{SP!|eW>uY zHx#mTT};HIRnoMNn8b0MrARB~+IOuXi_nx^w1mvQV~^ylRXRI<>2%zd+4<%p_SIoa zkDXT~cL&4e|9D@zTMxPrgxciXdfCzS;r`QShvN_GSP~!J`ei|DW#`I>&H zVf(7vtz|w#TlhiEOAo5};k)=xBHOvcYh~Pys{>a88%HqF{U+^5f~_!EUSW%}P=wR~ zK9`<{d6clbxtO1Jtn!RxrqU?0sm8syr{N0&lq>6gpsSBG1cG#^F&IE(g9MCOUgc~s zgCS*Lr>_TbRmuDqW(JEli_O(w>+Brq>+)H$H$>x8YPW3OwlUDQW2P@}@mbyr^Mg384JxBhR79z!m&2mAA<8ryi#~~7JR6H?Ucu9fuZ%dZDcapO-(JdtHF4>g zvcAXh4d@=27b`7xmvL4`Jf06_w}xh%mpQl2Uf#DZZ7G|T5%2Rn0yC=yL#&|#8xs?H zs9#(QMg?c1>mt(B(z{W{jjUvFV3#-wQL9rZe|l@TfqJ6}npXbYvxaSyEiK(U*}Z;F zsEAd%kU)+ZN*UCOu9nYq{0Q;Ty^;JaC&s^uM0A)2h#l~B!l%&Id=jh;SMumD)KbN0mKbJ>^)jRl?vYG#i zXSO#&DQH$udz^xuxSLGxRl0lIq2r4TLnmo<@!(!Xu7Jc;G_MK92@DelK>3tyYLI~1 z_6=)Rd3Q>eiCgxdQB>!TOhCCtql#yLS3jm{F@D$?k`UEVvEwGKCR8p+JNHtv_hI_hPRRuE!7+<3LSKsn-5Wgn!O(~BkS6my+9L zLB?1Vi4{vI58K!p*GMJH@V2TIV3Dv}ASGrWo|4R<8iZApV@g|>Ibj}ymYZvI$~v2O z*G}zNdx=o_OY3%)=U1nRCJk_BFP{e)j8SNc&YE$K1UqE36x-@aJsjtT>kn=RnFahcHlT4nduEf`}XkfJ9; wJR)KzuUPsGvnhomz;xOoGc38X(B%s!u7?K_2l9XiAAUh)FC02N_glU4zrk3WtpET3 diff --git a/client/resources/hardnested_tables/bitflip_0_023_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_023_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..d3fd78ebb4d69f995f7da0f95316af0d8e422988 GIT binary patch literal 23829 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 axWe3ibP!jVmwoxHE^oqx>*J55ulgUpCgN8B literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_025_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_025_states.bin.bz2 deleted file mode 100644 index e21a5ee9374aec68eaef5f2cb0a7cce6e3f82c17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13155 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 bC(5qD$*#fC|Cg@8+25~*e|FFMbm#v8=uS6Z literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_027_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_027_states.bin.bz2 deleted file mode 100644 index 7b51fd6b164ffc0f88bfd552eb8e808ed6b3a12c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2632 zcmZ{mT}&H?0mn%Q5by~|4CYR=Ncb|?K4IVSFpwZ=l0u3(l{m(5w^`t?gFRxmoje3t z5~l|269L<2Ooc)Tfd*q0pLu~QDY4C+Kb5BK6fFTkK6EUr_?@ictapw)0KWg#>8$@B z@ZQ_)e^pNP%?p1LwSW4DPSI!IMv$JR3k}szQk&-w%y+bj)mMt2rZkH`8dHd!tAbO= z40SJ+nx`G&9-mp7KS^O?dXl1ivf~bMy+ZafM>_fXhs8tQ^8&^wV=IBE0^9FP-( zskv8)CjI8X%bgxa_OYH_iFb8fS8Lb$8EE7YVKb+LiBo?o+nNh5##V!g4)J6nrH?~( zUy8|&8hfifE?N6W$$V4SaDjJ8GBjoB8n>Je&y?;VRy6#>G~~qtjD3YtAkK4wYIFao zXWzy5xAvJ!fB!CVL(ry{#p(`@n%ehSYY8Vou7$=TrC3|nk^r9MFqm;NV+>7AU8VdC zeYWQ43ZYQ(Na%FbX_@=X?u)b6H z1~W(CW_>1nsl27A#6+=kd4+m8JL(vX6hSBSpCcMwlkkqPDZ+bc8E!uReQaO*Z~l)L zPkh3=y!wUoWPm8X_w%OqaAq^qSD=p;&n{{(hL(pnT2FkqsNGPe;Xya6P8K}LPy6u2 zaC4ggGP@JPw)YjI*H&H~p6yhVDo3dABde2xG4=L1{tSErAiF!(`yHPgNgawSOK-SafOM<50XA4u+z#qC8#=O|2l*NcpNjV>vM1m4}EzuS2=(`;y-ixz?V1FP|o=Ay;j!NAtRNKtrsulMGTks1{>LXc+IEaT^aPgv@+ z@3#|=%lLU!)1fpuz0@mf|EgTLCgax+Jqu@|67M;o=~!lKuQ48mE#AcXEt7@XoX@oGws|xbaEtoc}$0=XTyJu3ryF z-$1iw7qIOyVr$Zxz6YC+%(O+tN-`?8UUEm7K40;CUtgqjKUIBv)#O}XX75XF08+qM z(RS+77KQ&~=x|(5oEe8T89Zk8dw9HJBcl(Ux8K^UwONovzoz>;NZl|ts9WLIi zF!zHRR)io9_kD1~(}36pgirg)WMKokVHmB`8zjkz_pvolA4h|0z*BSF{P04AYX0@{o*Cof3hv>WHTv>g)D)mox5z^fGC>KWaPAr}_N z4Zs?(gsvR%m&LLcU*7yI++{>A5>gmP0R}`t{|d~@7vZi_S|47<{Bc55I#aFZ{8C5GRJ|k|4n#l?EZ1&@uGl~WUjWKk8!QhwSL{S81vbEV0$ucCR{kMs zAs6BS3lJWnNfZ-b74lEwxz$0}aiW5~5CK%B=H&5Y&Qv2l>62XU0x?~c1!#*Xr&gZGt_NPp@P)P-O?BMIDL)0c7w7CM39^H5IV{qr)&gH zcDywK#psC%LI7$4XxJbO#&uJ)JpzM+J24JjXBva^tc|DwmLYk!oa+FpQ@*DvsR&Y2 z!I`)GCPf|K76*3M7G7kjEnPge26$5+0EvFHKR!bxILy#!(hzk|0dm*+4b+dpg51_I z5?8)?J!B-Qp!y2D6^naHF%C$goD@*cxCD4U-6ks0%XLm(+GjG!BVuR#>RZb~4G`eJ z9RX)RZ9+|#x|4ziey)-VGH9?XiDJ}RMYp;GCOue?z|oYSL1@xzs0(@e31jTxZ$&8J zT>^Bp4u}Q)0zE{!B*Dan#55RVT>$1+Wed97AU%gTM3_e<(2b9K2(!silNxL;nLExn zQ!7x;9!cxT-}BvUWV#BNw;p0UyS^-SMyg;5OSGNzFQC?%;bUV+^XVrF-^t`6_!)t6Ip{hD*MX(&|QM0`f}I^AApewUV^`!;l$s_u2V6t0ipCs wlqCD*5ua6K0J-VW1>S?~s6VxKncBHG^HsTR=+NVbvR}%~t&JBZ|N9*O14w&%>Hq)$ diff --git a/client/resources/hardnested_tables/bitflip_0_027_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_027_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b1816f47ea5a89ff5a14076ddc4019d70f6b3d80 GIT binary patch literal 27144 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 C#r=H% literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_029_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_029_states.bin.bz2 deleted file mode 100644 index b5555669281a061aa00ffa30d77d5ec7ef037a8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2402 zcmaJ?`BPH|0!ArN;SEBTrF+4hjnZh5G`#jg&M7Z)U`XaGyBtiKYZW! z2Ykn|KfNvF9aXTZ6!(vOvKe*y%x^EgsQIEIwL0l!YSL>-Q7Klbw4x#@D(Z67TX&bz zilTl;^xA*qf2ird{{NV)!xTqwR11usi;(q?A9mjQm$SlYk$)Ic&nGPTbzgO)0cd-iQGB$_?hC1TGZ`XUeS$vS`viiEcuQhF<-{-A7S3`MDRgl>!SDU-n%R4Sc_{?R|p5yTd!Ry7rcJ$^QNK2Kr}& zVaEe+!?Liqe&D;Sn+18ICEbkj=ls0)TGK)0%6`9G*kPib*2pam;AWo<*mHG zJkM|Y^sz1v zyIVK6w37z5b*<$ycmoV({Wc33AF?U;HZ#Rwt7y6Ce(G+~#B0*_GuzD0@s+C&HT852HN4G4i-&0mEBxTi%q#radX`{_ub#r z9Oee69qO7$ZU3m_tmy~k)i&zSEkiGd`!HMb(RvSH~d!eWywJlmlukqeh;oz ze(_?!ex70B6r$oeU)s^Ww4{3p(J{aD6(88RaBk`1>qWON)(~|(N7xaXpRMS#<Gv;T8qSa)!hC>7NEgE+mDZ_j8;j))I? zU~BLtqTW*6}vzFRFYw0hh4S`hg0PPPm!uA(#KnfBN;1$742Kb0I1DR_*yE+ zXL|BwaqF`3Opdkh@ra?Pw}bB34LoHp%{J}^HYJ^7gE5Vg3&9Oku9@2Y7c1`rAvj=m z^-36tlGp~6dy5M3Q=J_?`p4x>f)&9j+9SaNpwTMU%Pi&~T+_W2B5Gw2GA5zwWyt92 zSPe_+lYF!zxpzC~=|FIsIT69PzhWCEBW;WVW(@mFR0yAq`{)U_(#)Q|d}sfS{x*g^ z7k4;uo1*>0gr_}+A)rw( z?O2Sh)s`owv(y0_efm_QB%Q8Bnp}(NfKL8ArN)&i=d%=$-=#l+%W)hWg2~e;F{$8U z@V0rlF;T`6%PR3|zq~`OzT!Q4iKra?Y~)Hu>j}I(%UT?Bo{o$X6#v8yG3ECTMzheh z0p3Dps!a@VRj3JItlC|B=i=tBi)taKCZGwJVvqZ@)elpDIf139hSw_t2|t#`t#-dK z1LoO{PCr4|j?7dyApKl;Y}8`)NA$eRz?ZV)G~SbJ=o&11Fug1q8vf7$&LI?ht%?svxL ziCV;25|5SumOiUv3WKgas>_GUpQ70CIl&U#sJQ*!j8bWH`qY*rfLAjQaJ7g(`o)-BsP7cmf-#PtfHEZMB4 zKb(8Wk7Ll9o9j#v>9vVgBJ$g>*1Wl##^AHK?kr2@>mN6C(Suq|7iI9$4u`rgy;zL!?D5nRD_nudW08QwdY|GcULn{VtRXm#*W1&3`tCNU#X7fa9 z6Q|5$t#Z+&^CZPv`RJrO4e5%76Jh~3K%fPOTBz}1J(s}Mb6RYFI>85RZ#~o9rjuih z({;WaJ>d6(1i7errqIk}=^7qnZ=pmZk

I;EhrlKp<W1i8@zrNPoMc%ATx;)6c=Wcmt&_!FAp=|Gw40*ylSk z{@S&T?BMYk8mEh>&ABjd_Nvl2i2`d6kE*i0hopLC38r{ds#f)@%QK9nM$d%YmW6VN sw9MG(J@QG2CL;Fw4!BcX-Q4+FT9qleD?09__kLe_%Ar3dy^(+9-#zUu3IG5A diff --git a/client/resources/hardnested_tables/bitflip_0_029_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_029_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c5599605a5544e38ef81ef8acd870fcf107c39e6 GIT binary patch literal 27204 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 O{}*yaI8cx`0uTmV1eR3* diff --git a/client/resources/hardnested_tables/bitflip_0_02b_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_02b_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..d0906edb9e6e365542178b40e15a5df4d0031fd4 GIT binary patch literal 15338 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_02d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_02d_states.bin.bz2 deleted file mode 100644 index 54170b83b35031af02b477d6a26d694d3528b39f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3826 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 aF7s=|nY_g2^WPuc@(tWNa`m&RWB&_8CrQ5m diff --git a/client/resources/hardnested_tables/bitflip_0_02d_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_02d_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..3c1e1727b5c496fb033f6aa9b9ec805e7c97fdff GIT binary patch literal 35762 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_02f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_02f_states.bin.bz2 deleted file mode 100644 index e20b10f3d944a193fa743956d646b035b01a5634..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1660 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 diff --git a/client/resources/hardnested_tables/bitflip_0_034_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_034_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..f6270b397614828b9959c302670673a721533649 GIT binary patch literal 21179 zcmeHPeT)@X6+iR7cG#Ua2Npt~Z

XUAL6wOF$&F$}|eaupn8nt_9oIvY?h_vxx*N z7PxIzEGQk5rTc@7)6Z!qbIZEQN)@N}r z$10&$V#K%o9`Z4JKum5{V>H#DGkaUpw!GiODFvR z&?mmjit8{!*Z{f{=K)uc%4proxCVR2fLupJ5>$6!>IU%iD}Z#58Ha-|kh_~zCc#v{ zTF^Tk35rvIF|T#TSIyXY4i^|chcQqFc^DB5DnSL^W`I^f6anLLHHIeSE2n#mv=|OC z4EVofnuRfep%H%_0FZx(&^AZ@6LIpjvH-$TFn2mrtNtoeSJBu@oljjbsvB8t20@q@ zbbCEuaSlSAm^|Wha%3Q$?gnGSRTRxkNe=g4huI+Hff{W8$n;>nn8(dkhEQVld%|Mc zR~ZrU*@(x|IjvJni?p5twY2*V%x>YFizlm$)i4!0x&crKTUA)VT-F0kPakC}%J_E- zEPuOrGH6p(le=jDEQkHC`|u&EU&Ay_PXpPdvHitEAHXbNKr9@eDNTcr>3G#N?{bjd zB0f)0~9Au+JR%4rcBY%#3^L zSB-VGz-e&y2&ZTUtB=k1ikrOfDzV7+`n?r07)BRuLVGnWa=<@!Ng0Rg}6YO4G0R`;Hj{%%qqbVB1q^uQ=U{@ zT&-vp|5(qodMyWcLRRM!*oR&q?gjiBVw!H~!_Y(hm=KynCZo4Awau;tYyoAj)e8JCxR>dXmtFdy>k{vM zc!DR1WABgL7qEF8ic3LVX~`}KS84o?qoztfF3`4s?|+;5O;9o{?To}Yb9tvQLp=mY z;N(7Sm@L^e0F9&CeHC&4g(2{>!ZLW#p9L*rzA^Utb)!ybdltkA4DI;qBz*ssiUA1r zqOGr2VGT;x0%k-rKb*{($sfQV1hXOcYvIrZvP2~ z6D9uN2DkQ}VYOD`e=n;e5=L4vdSj$y*QDsfFG>}Y7OQ_U4)0Pd8s2meB_kA!QY;P; zf^!DtD2hcyG4Wxfwj?}onua9@bT?D8$t0e>)9?l}E%9cI8%f0&w~FYGAojo^^UpBV z;#vreY;dMe@Iu+FCwY78Of2-GShyGyBJPYQ{JqkJDUg<^men<@fbDA5&NdFX1^ZE^ zuBsFhD3~(81&?=>O$g!7|2S}jQ@AjFWP7dOM#|bUM*6`icq-yVx36GFc_3>_gnFDv zBW1z#M7h-XqcKKD^o zjx7lDYv$VO(N>Re47jSem#rQ@g6c7gFo%-RTZSz{^ZSOoW~xC+=lul%Z{<}N@O;(4 z;ciq|AM9=!{f^TdOy0!m;jVK2iGum4Z=b{8AOScBm>P&x!#1Yh;r7z`5)udW&{7_Z z8{A)@2Dsr-sWeg2R&IMPDKw+Im7g=cAy=dNdkEF*9we(TY-M`uw5wKnCp6E~S)>d~ z-Nai_fDF+jlm|0ewSk-V*`WV43XBhUpYp2V`pp`2cf$WM4Oia zz)V-XD~TG$ltK_HkK2~3sw+8s-jrF1^oM=h14Tohwjo(*3K?g^7wT!-khBd++mPIC z?gUSnoDaXS4auMsB4m5gHY9CB(l#Wk>PXv=G!0MNkhBd+cm>+{<<6?f8>#U=%C-$j z`#9S^&b|VVvu#7ttlf#8z}SYQZAgwzWVRuR^nSTzlC~ik-6-Qhwp}6FjaIu|AsHD2 zz8}DIBs@-t7xLK^lJQ-FT_I^#NX9;5S4iTyqFo^=E7{~@S4e8RLej2~M9E!Qt7un9 z%DXjoh2*I9&=M@|`!)9c8d+I>>llll{*NDL+lHiVNZJ*W@~)lq4eScZ@xHfh8U& tgOvV3hHXgNhGewp)mD#JclBr+lC~jf87P1k+D?!UfIL+}6q literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_03c_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_03c_states.bin.bz2 deleted file mode 100644 index 1a354ec8a441b7e60d1c5d2e50c2669d27a52b6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 924 zcmV;N17rL`T4*^jL0KkKS^H&50{{?Y|Ihksz6}T{7y=8hu#BJp1CT>&00IjT0D%f9 z1E}B!UjP6A`Tzg`06BmHWWWMpFiatUBLE!00Wx3#FqkF~z!88BU;vpg0GLb@2w(`n z2QUCkm;g*B34|~NU;!#oh&0d!fMPNlG8zV$hD|aBB`88BQ^`FVnrZ1YG|`A?(?-%^ z8I<Ji*3uwGKUWrOvGA&M}a1v-+3BNZ?f0g8%w2XJ1Z;XWYpk5N4Z z@0XCT09+#hV!Iv#7-4*c=`Rs=Db(;U7{}5t0w;(%mtgK8!-sJmvll}QaQg#?Lmdl) z9e}$SdV4h&b7+8t!7l>l_ig2+%5$hhY^N%>} zQ|b&S&^_Y}FnEQE{|DASqp3QR$~Z58@G)WblgwU0i_BabW+P7{LmpBayUzd>{_V5JPe zDhvQ$0F)3u1+YUPXapo5Kv;W4<}YdY9|(BLdQZUdp2Ml|j85~10r{Aops(CZg-#WC z%jOrvUlD%t#ojLQbD?(=mw32c3%p!9mtyQVE`q}y3xgLz>Nrk^L;eU11&Ms+U-ZH; zFj!b7BNbfR2Vze-jv3QgFB~0-jR3j98d4SQ8MZi0 z4```k!A1NqsaFaTsqvN+N>(lrR9ImpMl2}C3am+lm4L)bv5Jvkj1hujMkR@fh%6={ zfr&8-5@Hyu5@4{F1|qS9V*;@l5@Cs0m@F(X7!wl}V!&enVqsy7Mii`A7>p@lg0W&^ y!ZBe?U|3*cVv5EIVTD-1STT$i7zP*^Sh0m+hA^bV5}3u0{x0N-aG@dg%9IAJmVe&> diff --git a/client/resources/hardnested_tables/bitflip_0_03c_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_03c_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..f89025de1721dd08cc4d4e0f3269d2f64ecf6811 GIT binary patch literal 15502 zcmeHOeQZ=k5T8fyuGjYZ1}v6RXs>}%jYS~{NQ98HiczU8;s*vRG^8RLL1IKqFtSyH zNU)N|K%+)$jNuOj3GoXNt@sh61pUj4F#!V+(eSARjVR-9_uajFcU&t?3i!vqSTo%zkq^))o==8CqZ+g3~?S{j`rBuQ~-oc>4<;)FAjsh~5qx`=D&2Bzp*?jaXMm=KkJm?AB#!jNX@ zeBB`(TCUTqLXBvkJF?f4UIs&^(oy)TtU~WvR+SaFqdijOc~-^cPyjq564sI&WL40@ z6c$mK|2xyA5M5tKKvK&pG7Kw<9A&D|z1>U+eaCeoo~)q-ypKY>q{IQ!dQHO|rJ;~| zj8U!2s76yj{<>aGUnNju4^!b`sIlKLzt5OhkF8-x@4zuml-DtpPK60q!3-f*!!HLB zK0^+;O~f>Kg4RGza!*KWx6|E+&d3aJIykJrYOrSvibj_iQgjw!<@r!4WDMAxQc2`7 zrb>}Qm#}8#S6Ub-e~}0b9m6z{Co*O+b^%?@cEjYLroKmWT8KVFJOoU%Om8raU7RtO z8GC_g;%7!@^N2-_5P$e`iyY>}xLT%q!QAfU*pnGBLWH-(YvFY8t7@i6G0!c+(9RR^ zR%ix4h{+O2wK>4eEYkpq%CXQcaDwg?;P|Dqf*hWj-tLq<+N3lTpQ!9MqWS$IP;9cu zJXSL!xhn*yGt>FcVMr2 zWzdfSIHl)%Q0__WmZ#VRZFGY)KC8d}Yr!F`whH!qCBo)?e_C$i8(1F%&d1>YVtVZ? zB7iOs&x`(S5k56L{|G!dYeMkhY0dHg_yaS4c!gOf;6)QCU1W z3q2Yu6IAUEhA$P|5B_kL@JAJ&U%#T%4JzS8B>}T0OtDCPBv*Ysq@F- zv6o<%48~~7GEAAa_UK%{0-OPd%CkVq=j1hh=AMN>nDHLM0I|+MOSu@E39yK2w9`&= zOe0_J^&Hb&^wqGsO+!Z~s~y(+tYd4s&yWr%ALoZ2-oPsNw{x+9jafD}^Z$Tg=A^{n_czQ}) zWJ^J^Dy?AE087`HnIdIOU3;0w%zW}0D{PF5~X37RQF#!H~c04c*g06T}Y%zOL= z&2a?AM-L7osVkj3sV&`e3b_+jGP!eev)hHE20^U>PM@DM?S`~x_`*pDhmXyiHgm$M z2QqU`WIBY<{1r#S^w~6jv|UyhMnZ@IuM*CAjW?{ivgup}+;^--xB!H&&m!oK_lb{b zpg7BWBh#8XR?h&@X8VxZ`~|DV>8$4J^bHIQr%pvEuku|fj5Sz_YGFM9FAv13Z~$Uy zAa&3(jbhb~jM>NO^IP{A4u5Arnl49j4@KKqy^TW-fiI3L+i-H(hV#w`#y53U+JlVy zpAS1FJ2G^P#riXG>xv4s+Y%CIzaj8qGbl$~w=kFjoTiOWS61_uEK0R~YA2L=WX2gW}ooGi=^K*W?4%Ix@x zRaMl)R&B1TQ|L!EFOO5oElr-2Rvz+Mu}0;PkLN+H5WfdPg$fgsS~+cAc`VfnRpeUB zs2;?r=Akk(L~GSamdURQJ)1lmlDsPYURo^knKb3qWTr`3zA6_aJy)7c<}_8AzhJV; zQdzcOq()eQml|S2tH7Gpt Cew&K` diff --git a/client/resources/hardnested_tables/bitflip_0_040_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_040_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..016ecfe67461561c6ebaf7087b6c1f051ef62fd9 GIT binary patch literal 15230 zcmeHOy-EW?5dI>U8026OEYcZ-C>B0}O5bPcFu z6HPehUStKk(#5f4IMDBoV8y))YI@JD%dk&hP|ttn?OL+rTyMYS{hS*J(&7KZkDFrL z{eKP9MXschlRc1j(vcJFNVD3JZgp>r?9Zah#~9U0*oHg%jpSQF^JfF|UA3fLSuOVZ zx)e5=@Ixo*6`Oc0?$&nb1tQzYN0tH3{0dw$DUu2--lQnQ-3+P#kOHuSw7b z%0G~eCTc^_1`5rD`@ZA}TDr%@Y2}aO0zpgAst)i>8!0qkV(ST7f|j6-7tbST=Z`Kj z5XI;*qsNP85=<=5GLD9&CERBg15tsVRv;Tq)J7*^$|oetNW!ToS-FW z3EC)?@OCZ&K}*mQv;=K`Eb2S)PEllsM3%wPQsKAQ$8$XWErDl WAZn(Bn{TeCUGj1%X0$J_c?6JwhKx$A54%XxRz8hTIgJiKU`b>2+Zy zA|J&^H6UZzZCNl%4+xZHO%7cEfkN=(Wr$J`XtGC>%mjh9+EGcDRqYYD-~?nUt-q$n zB->;)?0VavdN)e%p3+fE` z&PQ3G!x1Qtz4!6UyT-NOT(6srGfSK^Yae3A)o19Zub-;&cjwrv8mk5Ef!^~v_PDE! zH0F4fmr0i4x`@7Lj>fK%gNux*TUZths%tF@Z>Kf!F0hI_ZDZ;ZiIIXV9x2W(;c@V+ z8GcbJJ*O^Hcf`UQ?<|V4P+w80E_4{XgpV*MQCc+gspO;))zb_)HqCThhPpg*fffRG z(3Z&YQ_dxz=~Qe3`jOw7c&gn`ae^I2O!Kax*>$OTz4{8HpvU^Dw9%`ztXMBf+JGqd)0U!XocH3=6nDs z6a%!Y{&p$QKjy!?_^$T(N9*Y`v2*K31!od!!5dam>OVq=(^AI&Fip47WGs25a7O_J z3eCGZeSiY-*LIJdDcC4^a`{Po|J(DHZM_%AaA;s^0}^$RZ&uVsz#_iSa|o~q5W zd1Oz-RUVv=cRxB+XEf{%w&chI!d?Q-QzldCb%%<&3tFK=#(h71IlDTwwsLA9uy^>N zdA#=Wt5>mmFSN00EThM7-UPCCWi>r60gqOnoTZdN3%+@AuCjYI-u&ib>%#*DbElkh zHF+;D8odQ$v%oCvsPyF>>-uDmRm)$*~5UhppX?O-%#8RHT37(|9t#bHY{M;!g@ zC=+Z8QO9SX7ES+t{KG!>8q~_S8-zm>x)ia()U1nDY~9^2wut>^XzSc@vFteoh!sgg z7?<`rq*6emf^fOvDaC(vZ1IJ4&qNj^&`tjp!8+8j+L`KH{9U3Fxg`{eC2d(rG;=Hq10n{0e1I%eQqXf!8nxPuZ zpwJ@~0&X}0r8|3-=n0EQq4Ob}Jeg9La=MR8<}-K`?So-eyl{s)FfDt;$VL<7HWp4z zF@Y@t>sD)|MPaW9v&iG)Gx5Wx|6vBKJx z3`JUiG~z-uZfIuS>k;t#y_vHVB>?leVOCAIibfxb6q?X^^od}i0iM<#P|}s7G(ukV zYh*Ob;Xy}nQD)M1C)gsFXQuc?$pkC{&eW$l$TeilVl)A-(D=;MHWFXxNm&AveM&$L zw@R&H{-9SWd|(Gc;tY-w(H4jI!Sqd1JZ*e}-zV(x&{vr}3BqzdnXMf*ViCEEGZzpf zy~QS5wO9EfAgn3LKu(TX1T$2KDluNRIDmt7sBl(N3f@4@)*5xTLL4_7H8>5&q6S@7 zg&u=ns>GLy0HXnzBE(VDs~wK4w6?=tyaoIC$o$H)^i)Tgs&idw@jm;t;C?6Ic^@<`Kyer40^kOpvDh_XYG%CGzU#L7*T7C%=f<37SHH zQ|$O}xV+bOHR<-%UGcq&Qb)VQTAvJ=*_m}EbwLw;o5 z2k$x|4bi*GPWFBn?`-j7H$7iQ=j%=I;vSq_wlAk)3j=iLS3~z zpejLf(i`$MhRyrIT{OPhYL_D|ii{0NtfuqFn1l6I>Qb50WcktYvnzRgsQx)-{s3>$ z4Z{;~H-G!~tl|0%=Z}9e7S;H#>xyTJgWesDtpN6W??LM4pPYmmNoEmXMq@(;tFM`+ z^)~NN0j)i=_JiV1_Vd%6ny&d<+=&CY%V1~cS_CTHlrm5EX;KZE!u(R9Zil5>A#WLf z!WDK_rwg?2Z@_YV1T~R57+nXuX}nS<{p;UL4;^c;>PyhkySA22roRym6mo_R2yPDF z4Yyj0Tep}W{qor#9&8lfD&nsn?tJTQ^Nu;6#vIy5J0q(ZI2yb9 zU}NC!5_6}t;=6x#Ub5YyGABoQQ-ly9_4!~}vspktp7`bS-E`_-1H zlr#&b7~}yszwykQ`UQ^5DU?m;*zcbW7_yv#IiEgA1lSmZSPp+|D8wMO7D?|y|3hSl zN|~3wzYBO2j_~rrjO&kdar3EWD>pGR@!@1`F)=E`*36*mNYZ zmKnB?j9V;cz+HefINxhPLwJvyju5Td=6s#4i^HIzV|pm5y5E{b`l zZ&BM@u=#h488Z}e?-q8!>(tq2+XAfLDDUyzithqT(VgN2`ok+SK)NqRKM2Z@gMXu#E zV=EetF=+jdFRHKK)O$yNu#P&PiZ29q=-gEBZtxK(5#pXMWeGcSXtx}gXt~*jM<2Vi` zf$jPKi?aBe1bVh`dCV-}c%@Jub7YyO^@!c24>3;gSK;LdU~b0knC!~JNHg^Wyr(sr zV7-C4@0!IgH_@kb;_WjY(+#q;sD<1mtyJ$* zDn*5OoLuM>eNHe6B$FCZg|EVO%!QakT6gwOb zAz>8bf;6S~20}P99erEpN%iQvKK14GS;}J(00MSDCR?N*gomCYLy|2I-{0%}?!CdZ{;p*!A31qIWoao$J`_`wag!9V3YjW^6NE{7GQ#n;e;F!lXTyxvyuw#4O1cq&ZA5-F-&#Hkay>IVE_> zNS0}58p&>IX2M9COfhl1k*3OV6_#CWB(upK4HF~$-|jV%zR85CMMgS@^nhLMXb+5Z z+20u{AcXx!x_eC6-OJdJ?{>aVH!|7&O$YH=Z^EWajZCrjdIS5H}c9W(QV zNZidBp^k83n$Gk2rWvBDT6#|`Xa~BUg}=PY~dSzRD}>3 zrk+O@$RqQLlPS2sM)Y%?2|JruFkL*$FX65i zS@pemfP#_uQhTw&X23|9p{iiDpcPd*H^wvUM7lZiIG#h&$fFy1sH{T0;^3dJ*BF#- zU*_Tz45G3|Ygwunu0y2LnQSD#OXpr#=M}qn935sL#M#6?BzZNG#N;~QeN>XpB(nCk z)?(_&(lADmPPG+NkbM?{>2HvyT4BEMq$xg$^~gfbo`rOozYue9JDlec#a0l4G~B9t z;dLp;!B58iMM0!Tto;$}aMd;w2!NP)e9MDNaK_DR2ACBmC=+r8$z}zNpm{mLMBOYb0{)p!DdnZZNk<|v5pAzfyu0z zF1{LtCZ3BGri5_>H|8AGKWb`zbCNB$_1I#zHLox!-iNnaQI|6K%G#HzGjR1jRXb)i z>PEU}8YxB2Yjr`Y59qKm}Y26g$Kb7_}3-x z(BKhCPpP0H{3Em+%bXV?le76Aa+bQ%gbVP7iSNVjLnbgt)DUj&FGHW>vBaGv@e zW>j`i(XwT*v6c`t9kNbr3_+{W&1EhGg)GQSb(>!sixR}EF6_0a?Wh10c=>;MkWUautQm^USM&DPVuiBx!?W9%Bw)Y8f!diJVCjIEzCb;Us=^%?m#vc7Y7kB!!M z&a6~^{vA>d8J+mk`TXWIFbt6X7(IQM81?jhJJA)&@55W}958a4H9fW;PG`Y*QRW+Y``L^mfc%a$aj_(uHJ||WqRT%!vr!YNC61trBLOZngCmzF zm~dfUb68N9!qe5m{BuT{cS8Vwge~+`)$d1^I?f>NFx#6r`ad2L}sHI6z=dt}#WUIE#~<&_y<_L1eHUR-Q27;AM3* zkOJh7VeKsl16)?qo-joMlE(Tv&Q~FU)hea|&py1hk=Er^5O+WfxqNPpk<*csBbh_Z zMmGN$u~R1{`m6IEBw2Mc^G_d_xN4{ub04kt^dRs8Y6wMT>OOTRB#*WwBS}3|oKiYS z0g^mL+A;#CsWBEHITQV+4csj@;tG(HjQsHCTD5y@r7{mb$^OF|SK^WmXEh?-vrKV< z;t!XWXa!uTqWeU&u!^wMF_&1U3B@c#1-O9p$G9|^ISc!NRbQU?^2C=XzC5Wp`S*P1 zh*BKfZ{*ddjl4|O?2@Q@{K?DdwG7?b@g#<+E<3y|OZF+*rw?lsx^p?f7Se7o@*s)D z4@fM?L*KovMaHm|>gmSR|01I7gw=oH`bk^}*-jQtVDGoT^#Ktj$Vyg{%tsk?_(Dpq z9At-61X%XEYRO4G8HSCuCfW!Aw?064UD=SKgdLipY<1a0$hKQJZf--SvXsmK0UWSF za~q2wkKdc<7eh>xb-Q))5{Kp)`P84dnyhMeyP5Zy3?ZF0wf1Y=H|RUEVFO08WZKj_ z!e&I6pu}sejH){kE<1V6)l2Uw{JHXFmL_-FNcFm5QLbL@Pqms7zp+kt;tO(qCOns< z(9E+(P|j+R6i5crkKlWDyd|>sa+V;wC8a%}>?Z>VQ(6r@rjh{t?<$960R)iGs|ff& z%8n^;{Y1PUeRhMeWv}i4jUf+Y(=BmFpqn{?Zst&A99*X#w#=Cp6UCl;FvO1UF{Y3j zf=TjBXZK~;Six>qBTx=m*kGM*H;WSHDov+;tCbC`E_M>(pE%KUzp&FZy8vajpVMhf zf(&*v3&zH_URksFXrx2;9~P4yR(mwzBcmHx6c-U5VLNDxAYOYchwQhs3{SveeJq;qZ?^a+TdXB~R)N5cFx*`1K6=jw_r&-oTVio=LzI8A#Xs4iPa^wfi*L5X zPQf=@{F5#J)pPc~+2Ra|8+84>VE$gP`Xg<=Jc)1E|3p7{@0%^UukM>IzS+|FLJQw) zaqooi%@!Vb8qvpa_Oeg&e|?RZZ?^bmi+dvOgCDc>%@*Hm@y!-r&G>3Y-w|`a+w1Vn z7XKPC{~ECb8N`@g`|6u5zS-iNE!DkY{~9sgjaGl#;q%}MYrDdicCxf&O{%0Xq`GXm8m1qO{3f1_W2_|+YcOm zn{3>V`}V88e)Lm;YU7F3W#YR?WJ*(A-JobtXf$66YpoW6T!l5lH1PPQYS@ygM4if=Xk}`n+(n*wrtho(d0V2yKIae;CF<(j)H$Ub4-;x)6eIzUhK^{{K9g38S3QHwI=a&l|8Vg7Ht>34 ziAaz4UR%|1Q%sANM~9NEPZsDjH*L+R@As}-nBB%at<&b3WNh+94832LSb8ykx4YZ1 zaCL2Dwd~u)+egKBHvI-aui=B7A0yeTsV{HaNdp=K8PymnH7A>NJIP+aT?5Jdv{o0@;P$!j)Y_$s69ZZIrWkdGmHh~gfQ$*pgp3hmqA}bOqorx8b)juJ zenyrsftILqmN0JRAy|=tRBL1*jCdj<84avqSRrn=Q%sD`jH){=jEBxMh@EW9k_@}m zva1mDo2r+)aWHH93|(~Ea@={{i6u*YMPh)L+iQm=hPZ4f3?yl`@E7&U)|vudAKQ2T z_=Ff8R*F5R?m4Z2^)Kg>Qf;X#6N-uw=Pw!Lt|+?9(B^la6q>i6l(O~?OSJ2nyi3RJ zLTUNJ=@OMd7Lydn0p||5j}vC1H1pKKJR9!mKFA!Kf9&ky?{*pHd^a3D;QK`$+4Jhx zn|aIcBmndgkmFcCmUUw@8*fPu*%O=Z)DKQxy0_E=>uB-Vy8S2V?1Qc3oi4L$rM4^~ ztsLJSe>to_;z&HIx;%f=(b_vdCOvfL-&*AIF)Gz*hSj$}arKAcTz%!E(*7qU@?*q= zJw=>lBG|nIW|V)z@En_&yE5_6{LOodtEKtDk;_-dhf@y5H@5F?hizsKCo~89cc`=r zUo^<1yHL77U(g1VwaUStbyH^#wpJJ(L_1MWxwQ9(0iPa1y;iR=PAJ6oCZkAFf)L02 z8XPfcdCcBCi;0nOOhmmZg)kK#nReNC(n2~0BQVm=>sU#SQ!NO^w%OYoc`QmLbODvMR}G>8A0w8Y|Pf6Av?FX6Ll6>r2uZ>HzbK*{4AKvJ6m7_ ztPcaKDG1@(jGhbIaALjqZvt8`O`4QRmI6Gcjx~m@0SyyOVZKmA><|2H{=ntjGxA?r F{{S7z=AQrn diff --git a/client/resources/hardnested_tables/bitflip_0_04c_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_04c_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..0ee52357e10e89099011e21ca1f3769576aa924d GIT binary patch literal 21042 zcmeI4e{7Xk8ONXZ_TJl4Zr`UXZPyj(y+J_KItr|V=rC8^@FqZqgw2K&Q)f4((oGRI z+(meuj>N6FUuIS%6Jw?(YJz5&u%TXwe=HeW_(O@y&^3{aWf6wDn2C(D&w1bbqqi$9 zjU{Sw-lTos`<`>2bI$j9&i8rFx#!&YytQoupFfmdFS4Vz>0e^<#*<|^ldBW;BoS{H zf1YSouJGGL12M+zNaq8Ym(B&UC6%*Dwf4oJO3avVXrsin%S&lSJj&Orct1>t|2SUSD(}YT?b4->;bxByI+XgP95>lha^81NkZ6{ zsFq%*o&hDANLH>|pd)wJYL%uNEPQVk`)15NAQfhqALr?3ln6Br22D0sDl8BDC2-6h zvMdA=vNqG%P*yC$^rS7s^$?Qi#UehZuD88yh_DM~@$X*Jeiwlpy{e5Y=WP7}ip^_D zKHCghbLce5U$+(+nWYX(OX_xy_x&M;do7uZr`-wuQhc`hF;9cd36))x6>~?3*!RmCdc+T!5q?yqeiJX>LYCRCh2h&M zw9P_akS03&ewAkpZNe^%hIN)qdn7b%OtI#aN`uu~ARiiq<`6L4hp?M8NOt=N#D5ia zA|_T;(AJWP1aWI31AY&qwV|Cy+RwlYRQ4Ei7yUb4Hi55dwsj6YJf6;Fy|pD9xPn>$ zsaj{K9z`s*_C?dbqOx$X{unx7U}mKuofGdPBrQ*yKxR|l;wnA1YA_>3UX!tQ0(AYz z_;pFIAB=kNVkFv*$OMh5`(9*W0a-6{J+5-pCVhbtaizZq+5pf=?f_jL5L6HYwirNQ zEkdjYk#_+8LeO((Bx`41qz4=5N{*5nz!F$2k2RvmTCq~CyL`z^ah zy&v3jTps+-Dhk+zS@*o>!T`lExNe2$oQKBLXN>254zS zVWW%udlGeh8~Q;@-!;Ef+0Da23jg>WC|HRY|3UL7m8XnBZSBDLoquxoRgQg8rBJD~ zuDXR4jDZkz?<%(lL#(S1LUR=%U^e(VLH|{xAhn5fE+aKlVTP^>GjyJyZ5L1xje2Qw zIPQY@J}dEgxa)kG^@5t6A@gRvBI^|$Y>&!yjHM!5V2#8ImJRofA`BZoyou-{_5T(n z{a)o9W@cj$ztMw>Kb0&p`uPHbZ`q7XZwR zF~b_X7mM=Y#VWmL2j)yc<$+gG`KpPWLC!2kQ#b1rj6hPSY4Yr}ncNCSik1!$MUD^G z^wZD`g3!;r4n=M*j|PIClpS9-Yzr?uK%3cQ--g%M7;FqsoP&Ipr1rHceKuhSPQ!vj zOay?&yjU52HqHq>Gj@AVDbBG3H=ehExi+4#t%C_Sl$oD_ox#lVD!(}p5+x&Y;|mdG zs?CkV7(m@&YDo{izEfBW1&6c6_)H(uI)3KmWB5@+FnO!tSq4$a%>^lBgtU0}Uo#tZ!5? zUl06Maw5~fd@7F;g- zG}zAc>%t{Zcydf1UI}|cDDM&4jPc@yFzsXr=qHO226O4448VW*uqq6|K=5kAzl+aN zzooL3F87Aj{e4tqWnb6{DiK-#6JawM-C-bfuLe(+3|r+8IB&$W9|Gs6%X0uGP=zBZ zhc9pkeCa0KZ;m1YxAGWb?N%P$%Ht4oaJ#7PRvz8T{cG#%A;F(wBK;O?p7Y%%476BwOe^~UtWhZuFAj1-Iv$y%j;?T^4hIDR`1i9uJ2mh z%A;F(bSsZ;&!gM(c*);eyFHI#kmvS1vgyO^d31Xo-JVCc=kfBMOYq#DN4Mv(va;g# zJc5PW^B5V#P;qlETcF*snFtcM^5~AuOy98?xAN##9*?WIJ&zH&x;>8^*l?$<-Dzuf z9J|xjV-MK5)7G4C7>StD{-A(6ZS785+k=u-I|?}~;7(gJMke?j26x&zIz+c?gx8{lwfZUvL;NB;eN2^|N94f+{&X{d2}m} VWnR0CD~~(Zg|!IRk`MO{z71!dD=Gj0 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_051_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_051_states.bin.bz2 deleted file mode 100644 index 3c889d07cc75ba1944dcf73cce55cd0da73b48dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2568 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 Lc(o)tu)XYm{7RK; diff --git a/client/resources/hardnested_tables/bitflip_0_051_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_051_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..ae0d8a050b71752132a01705a60b2ce4f114870d GIT binary patch literal 28974 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_053_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_053_states.bin.bz2 deleted file mode 100644 index 751724d3d866193c6811d7a55f2d58155109fa41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1356 zcmV-S1+)4>T4*^jL0KkKS*>MckN^}4|Np~X9UbwXuQ>>~;~$8Tz#qUJRS|$4T?hbx z062g_?1|tBzW@LL000000005QKmarv4FQ4xXlbTEG&E_D0}wO-aL@n^27^FgfEpTU zkPQtQWB|ks030*`13{qB7$63Qnq&h*MwtLH13(82007WvGzJI(p{AJt(9xzq3_#EU z!$1Hu8Vv!00BC8ZKr}RIkOL4j02GxG0!)dTDY9t?r=%K6yXP=9YzmGekJre6QNjO!Qe3b z4#CyY_uusDb~{E#z-BSPz2W#qFGX@PN5F@W9G;jsDp+KfsFld9j2FJX!!yi%voEf@ z0q+cs(7Ro%&v}j&!}1(B9Y<09?t_JQrXKnE9m}ab)2dzxm&Cd+%01UcW1`2PA8_E8 z0&pfrX?sl1@m_Sv&<90T!e1+d;W{tUW&0eLd;>MB3 zJ>l*ghm2jR-d)CC`D8q6m5T|&#p5p!c83M(FI|4~qU;Xy4&xR%SmZKZAn05UjAH+T zp>XJQP97qj$$U!&OvWDp^BkNn&Yv1`y0WtRix^>+84swuqx{dR_gS4$`JbryU89rC zcZ0F`&JF`Fp?zb3_89vsE*@8j!}GuO!`MYXSGxK~rxiQh73)*>Kc>f1$wDb$Pe1oHhjIwYX6R`G|`Yukz!1o_$UtLcHn7DBJ z#U7yX6RIoK9IEk?10{)mwev0xrTpq-#lkXUEKJ4JFpQ3=)qkq}FO}Yf-Yc+q)$co= z1b8LYaIcKze5OuNyo$Y1h8>1j%PtNKj)BNOsgyA#n=due1Z zC}Bn&33;AJkY$%qPmJa19#ZNu`QEd=JP#W323b8f z&~S7~)qU5_@}Gt6zK8q1XL;ZrGbUUl;futaj#CUdRdVE>PdeW_vDj1B9jhEJ6^2$> zn916*xHudPBABl?2wWt{RK;agVPd70P%M>Ul*$ZK6-y*!Rgr?GNXZseWlUL8)J90e z%4&=mOw3F&OktHWm6lAH!enBsS&@Ze$g->|%*Mrv%Sgr;$}AX6875372BBuDV+=7F zG(m={88WOH85mfm2+XC7rVOF07P3*9lNJ^rv4%4;OfY4cF*2}>VOYVHg3K|IV=EXF z7|bRzOtM(TR!lL4hC*gc%2O;xF^r^TlCvu^V;N&GLoiIj#tE3S48kTbt1^`tj4?|e O{x0N-aG@bu%E=&1w`zX? diff --git a/client/resources/hardnested_tables/bitflip_0_053_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_053_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a1d8359ae4fe59bcb9690720bf9c4d9affad6263 GIT binary patch literal 16061 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_055_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_055_states.bin.bz2 deleted file mode 100644 index 1cf3f2ad935916102ba1f429ad761ae628fdd45e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5503 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 diff --git a/client/resources/hardnested_tables/bitflip_0_055_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_055_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a7e1e35228da266368e48e1c7eadb92563388885 GIT binary patch literal 35521 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 diff --git a/client/resources/hardnested_tables/bitflip_0_057_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_057_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..525db3d7ef091d08359b0e070a268210ddbc355b GIT binary patch literal 21878 zcmeI4e{ft^b;r+JY2~%Nx<`&gP%QZu4vCE|OG(5S$C0%mv^154th8lnjANxSIL30~ zbW)s&1m<%`{Ug6<9p9N_q@BRep64=rtObk`zInBZ+r78@sZSA&~-8| zZ@K-IdeKPcw%JWqV|k|@kOq~=dtXa!UZ|01efV5T-7MP7R>^ojs*>$#>pCelyHu)a z?|)(aUWD9!Yp_ox*Up2#lZO5(o@lb%2-(f`)}&pf(ff6j6(pkbOo&^}0`EID&Mbs_ zoLy0>j%!-2&zd&xC9{>nIMbt21N8>)VaYw9an*d4CS%1nYMcw))%yWsl5w`d=DjNC z`Xd_G91lZ#kF2$!U9Ept7`QDF{zXXlCOqF0${(UP)M1V5CS!Da`N`jCJW;caVmj5r zQ^Li9;|Kf<_9?QBPsebH?-xuMrxlI*Qi($IV11LZ>a1 z`LChQkJ8|2l`e$NjaEeUeup(PHK3RJ{VH>iw%r(Jm^$NOu|3$eC($u_4cd4&LMIh` zUg83j7%ldBjc;I-EX7Z$%nEJZtMN+8X87F*c&o}~tH<|F$jo)}F_o6b%Y8!Wc`D6M zs(kKfLeRrugPAI@_zNdZDtT1&#)Jf)aNO6$AkU(dHkA(ael-mY(U($;30%_l-xEcw zuJp8tdKg__G%*2A62WdlLKjF{D?`+so#%&wcd@@oZz^d^Xz_(P2R(Q_eiPzQUl-qqo)otvWX- zJlq1I1}(@FnEwhV836T7IGXKnHBx=tC|B(XpV%qapv9<1>t%x>_-zzG{uID;FGFS< z)4a&o#YXc`apqQyXZ;bV_a6dx-aiiutyBbeb(K5uK9%cMxnYKR&km}pps>pA{s2-? z3LlxfbhjuXtk8B7BZK0q??47cofjDc;OY8}Xz^a7TGdH4(9iN$=lugJ7eF#kX~f8R zT%9Rm7mr^pc@w`N6k&nl;`yk+Gs(}#Rt3K-@V|=Bf^@s0>1iSGUI`O^pJ@+}7mTM4 zWRz=kC_4*&wsOA+ue-vmwIW3yozG*>NR%sOb9$fg|hA2{C2{Pezu z`G9yG{)oAldg;?b6|-&zv#uER;$^{m4G_RV`ctObW5&`+1}+&@2L(hlp{CmBU5pmr z@I40dEm*+ZOgxiuGmP*y6qwt?2n`z7&ShTiG^a5@;X@_uzHDx?W*fz*uh#pSFbcyF zT92!*F+}9W<+g=WKNcX6SGgtT6XG88LXpnF!zHm#HXv%ddl(UybuDfVvO+n={Zhm3OT-me(ME zac^Q-L;WFb%!hf$e9o=X!I^)}w?8zFOsIwa9Ol85Fwlgk5v^K$&TtUf@>N7oKvceR zTAYOd`6soA!Q$u(IMSnG%q!vXK1B6Ez^nvE2y=zi;kTgxoy%c%X`jjvwQqr&UUYRU z-#r01tkyeSOs@_Af4~2ji>qk5)wNgYaP>ls^IM(SxZ2Pb=Zu<4+3?zpH23O#-lP18&`IDjV9pTevOrVg1LLQcKez#TROt$QP zYaX5(_NbiGW!22$z~Su_nCa2rhgIIH++uSJZcKetGFFp+4^&6TpzsQ|K})ulv z2-{d)7uxvKdA#7|5H!vLlZ$O;WqJ%CnYk>#txVC1+q*vS`hd#pUK=>9!E^eIeuO+V z8(e#&!`7|Edp;XrIruaed==7Vf0DSe0E;}j#K!|6+!UT{Cy$597+a92<%w~qzSs#6 zY+b1%0=AYi&m;2+m#7S!r}DRc7-xjWs}1ZQ;rk%tjp|6UP_<}$GwkHCLou3

+qH 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 QdU$Psfp871`sw2T0zXs6;s5{u literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_059_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_059_states.bin.bz2 deleted file mode 100644 index fea5cf3e8286222bb847d6e2c392d72fb2853361..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1820 zcmV+%2jlocT4*^jL0KkKS;op;8~_r1|KI;retZ#CFw_@ea4}E-7hs0g5kLS0HXr~3 z6j6P8;0*r&000000000000000aL~!7hM5`~WMml`8W{nJqb7hdWMUZMp_5GwGBh;E z$TBiCG6NGvO#o!b#4*D|CYl;#XlapOKr?n@vDg6}-`eKx!{Bazp%GreE@FzVs^2OM-j^>$Z$Ikx<1q6 zA8c^*4>HMzI*!Wb936)l(bTZ$8IBhi9>kB(vW#V8B*s~b9tU%&{_ZE?9CUO%o|E#Q zNbX*ye^Brr_c|%!XVm+r&~zR{(Eg$6bWhAP^%g0KVxH9%*~RWXZZ9((Uz}$c?p!=W z(#Cn599$eMdCukb20i8Z)=y&oNAo>EdJm!h(~o(d?sQnm>w3qm%e_~=y({+~gZ7@2 zu|LIBW9BSmWnK>xABpw8xA;C6-a9MmUsH+T$F%!TCK>e)LE^`tADr?#m(Y5S@z6gBd%*Hi`c@RU zr{h;cFWzBcadlGYKebo&iHc8@yug>lK2_qgy_xr2SCbtVRhWAi?q&WS9nV;I4(0Wq zv2{A9RP%?-{!Zh_&(a?P_*eWV*!#=!o=fjOQ|Emz(!FQteh?mkm5T4eB2eG2@KxbHZwFQEBX%AVu?XQe*k{0a8gx%m`5 zsrgnYsnwI#x(_6}ELiCCr*d{5#oTr}zXC)rfqoMt;;8+_ z+*xIV_zan0h87sGoeP3u#JGnHEKUm?E)1AvD+R${?Ceq4=nL_k6RV*^gD4q+9ZZGt zs^cdDeC8FHvBaRl;&6sTz~Zj*=w)4n@D^Tn6AUa}oD9i~GBC>E;dm!Og9b3TS4Jh^ zE4?v0#FyMv>_V9?3#iMfmz>})1;%2^iwu}#4;1lsTv=llDRG$0xLEEw4ky;AKjBM( zcOZ`Rq29@4$PSCaGMAw^S$F|C0E!dS5+MgBoIGZ~y59370Vi;FB>9SN2gGB9GYWZ=r;%QEb%g6>nHW1}uOxVkzfS!BzH6-(Y8 zk?1F+q3KF@s(H!kDcE4cD;URccPe_8Q!I?V0Q47l@;ry2FzD!UT^&i#xGb?ACE{L6 zyj6qFqkx|Byb*K>>~+u>gA)v^!92sF z=!{%5i;0tkj`8OmPR^?CCxecqj4{=nO8#X`87#zMkxW?vRWPYk{&<3-{(+U1jK)kV z5jv2jRg@HDQW3>jDyp0%QsHE&Sz@JSij^41BPuc$U@WX4#wbjdN*PS7GAj%UEWl<+ zsf4h^!b~PgWLZ-p#Kg)hSVYRoSTe9+#gt&PGRziaGNFXSD$J}SBFPvTFl5P$l~}SCGE*^@Lna1HQdq$(Fsm3V1{ldOz%a;RV#XDQ7{ZebN@Es3{x0N- KaG@cMl)5;~NPPPM diff --git a/client/resources/hardnested_tables/bitflip_0_059_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_059_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..3fb7f1f6094e9c7dd3fe6357ca49315d835891e1 GIT binary patch literal 18328 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_05b_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_05b_states.bin.bz2 deleted file mode 100644 index 4dd885ec3ec6446a721dc82f6a42858f71069e03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1077 zcmbWr?K7JP008iZ2sg=vA{V*y*6Ag;lS`9_%}XkVq26^$JzW!t$k7_h1wkxS4U^@H z#!KSRx~S3WI$XPOXFQTrB9WSExt?=T)_NJKMlnP7VgJE?AAb>7bAzej5Fr)vc~f2m zAPJS$e_rNGs{(DB!|{L|a0c9M@!`%k&Ncwx;Vcv5x0NP)D*zk;DF9#_q?0C6D6&?{!da13>ROY^MzX^XB{E;_$#jd2>>4x{cm1<#1! z4Uv9MXX)_5DB342!(%0KA;U0{+|!!+->F#J9!EL=6qzrx$5 z-d=t3nzxp%Y4ddgcS=3E)&hszL#HD=6S42NuM|9{?Ad$sw?xL5qQ}T>CSq@d?20b! zQf;`_d>HosRew+Dl`uAC4!f>BM3*N+FrTt@0fq%_fzS3sygyqS*JT?6(`($uGU$Svm6Oy%^6#Hi?|$9w_RMXYowg6Z6@ zwr8f37@w85$rmj&$@dRW7PNP>cop$SqfM_nzmx5EHY{y048Qao1k+&Yps*E8%Gt|| zmFp%dBa!oEm>j4TY!>n>q;=oa%<`dzN9AavRB9Y@p^vS`^~iQ{>H_sUR<~4VK%OoU9!h zlhbb&p$|s&-2#lX(L!5VTB_xZkM_sScl$kzs|g+ubI^lawl7J1tAa~N#e&%i(q&Bw z(UF=Kb^XfodfnH0XZ7TzS`-3>a+C}ckg`VASy`W^1uf534`h=hm&9yvNO7hGOsJ`6 z1q?LhRueKbV7394;Yp+k_4JVJkvR9kjEg!q#h@o?xw+aKV!a=@*bcervGVljC=v^z zWU$ma0ys1s&2DvL-;q-jK&+&XdTRhg!;%(`iwcF$m`sqhLJ-)a`%$9qrKEG?(Ngz; hNr-#d5GAu``#bhhI7t6G-15PRVV zAp%1D0R}-f5y6Cq_(+V3f?A_Sz}82iD25=B7=%73K_WPQbMEfl-NG(Zs^Q1IKX&Jw zGc#vq&di*-JDXKrUo@}zy_*6=Gxu*55+Buc_2BaulTYMabyp9*>+~x_WHlFLH|RnU zCW16Ok1{cOgDFcy$^m}BlrPhGt*@FRzDg!b!c|>8{u~Yu_zcU;VVcO4xt@3XK$-Cv z=6nZx^u*(O=U!_+r{$%wHA(H z8o5v@OW(BuIc#Ul<$zU&2|J?^jJH|-VH~8LOhcuDZOBIhR&ppS9~eR37!GD)so)l- zGLfYgB&F+RAO|v;iMMk>7IyZ5&jb;CW}O6d((sl#hyO!Bx`t;LL~PMv$f7C^7q3@wtHclV*-TS`v5cvBWK_pGv5caa4qyrb`mY~k1cwVY>(VG_D00E_!_X6;b0~+Rs3JB_2FQ7vVC2(g~J;PpRF)s*^qt6NYe})4cYc(cGE8gpZU~s%$%8dkB!LG(~bBBsGWu zrkgvMO6%kHF!S4(CIj8r&rFOp0(85wiga_Zx*FuNo2g~6RnP)+)U(}G!&EK{m?lEI zjf>zuj&w4F0|UTvxqO|##PGfgDjE0sLh`T;n683vi^SCt8OOAt-GY78segy2O;F*2 zk#Gi6Km>=Md$S7p7Snjc*7-Qod$)u&ku0X^bD1jiTw)FZgr_Zfm}#~;_2k=_!iMG# z#~z)Q2`@Pc(m1anOwU5|LaAbUNQ2Iful0h)a&taB>vMTdBQfDQ8#j2NI-#C;8`Gi$ z6c>d1^q9flOtsM9PLVZCqvaseD=rcM@NAS>%B@;frZokSbGWU2G}9=AN=YJcp#HtTi~sbva@ z6l2gf6%JpTjO>mk#SW%i{VVy5{?tfAWMTGersrImi-0psyBc-d-6C+q6&h2HJuX7M zVGzUFT>%bgU>h3QDu<)`tS_22=Nh- zwORp0n0C0daQ#kq-~fkU%V8Q#2a_DIOSi316dXTniR2g1V}H08dFo*gAGr}ZFqnX` z6$uw{7uKmR$Mt&jCP?{=(GY6y7cZ+|x?My6j+C3FSQyEXb}c#5mJGV$Yi|W7m=tC1?+xU9k4 z5=u5k#b^-R>C>VL;^_nk0ikC&sd?XL3s z2DVSbBhwTV-|JbpLYeI*;EIgy+lspl^e^JNJ>et^%{{F_YAR0%C2@+8yI_}1UT9PyDt=a8VF;;N)K2n4%s ze~B#bB(pe+AJQiNLEsW7L6!5B`~lFWMs9rpQ90ga5Y&Bqct5r22?Y^MQljNqww8}h z+y|io?wW^OA^;eNhDBqq;Os))*gexZc||JM<7j4b4%8*P8>iX9bjY1h0C_f=UBC{O zYG-;X2_ZHhrr`$0tzX;JUq!bSSpvU0oHj(fn%k?nV_v9^kF@61+^#|X2jH5mxf3$G zF~b#Rwf^gOcYlgIH?jE%;Q-Dq+_$&j zB9v+%u9W?t-QpW;`EgC=xiTJ8zHPm0Q0oG}ulcprT6fga8 zi_9ApR?X|3{stTcyk3CU3-EdYGQ+%~o%DJEUN6Aw1$e!H{IoCCUN6Aw1zcQcdA$H* z6R#Iw%&-_41iuQFdcA;)Bc<;%UN4~UHghPvUVzsNi29D#3-EdYZW{4=0p9;_-2dNr hy?|@JFYEOJyk3BtydB`GdjZEoh7sYp|JhMB{{UWj(Ww9c literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_05d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_05d_states.bin.bz2 deleted file mode 100644 index 7ea71a9c6a21618fc2cf146b821a0502248669bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2472 zcmZXWYg1YW0){bK42HoN6%QG6u_}t3Q8=_6)_6%`)T(E_aq-a6CdZf4sfA z!#bwDI*wn$5%C&@>@dFO!wwwdICPwN`nXqL4Q}ev+$BcMCH$v2FIwL95<)jlc6jQK z3>qzHuJ7<-(DFCC@BKBfvd<9sdNB7ZM0NU!{wO1qQE0ET#I+x5>kgD?eXnIzO>Hx42dfZ^W9&x)(Q;8?}Q=MTECZq-JaQyw={{) z7fD|RD*t((VB1_yivG$&LpqthmhPGn0@_bt$NCLNtU(q`0y_;0pWGf;@0scgtCz}` zSwyk~lPf>!t1#|{#;0^_{>M;enOWS?B%biM7Ia-M^6k1>@16u-wO{#}JwD!kY1v$}uGaX$|O7^mL}(35I6(rTpHXFHk*X2#>1)%Fic2R)kcd&^t? z#-DROeKl;~OPUS2ZvC<9`?Qvy=ASnpFnV{Rlb3g=w?Dn{` zHj`WmNCTv)&}EufzyZf1a|R0O;S>%j5@n2e8Cf87lhdG?k6CbPx|x#Xt}-VD1H}SN zA6$`F;45LOqn&MkT5yYns1xH09EFrJwqX?=$CLq@ab!xw@=eS6Eia-FjCM8~L`NNA z`tzdbJ~1Cwb{Z{;I;@H!LI4E9)h z)#NljQ%wi#Tq{OIkmxyp0zoEPvs@*pae{n&jHOqFXh90h0-0*CkDsStn8ow7lHhu6 zOr#3V7iKg^Hn6$30yJj*IYp#`iIUMFXdw+`GUj8do#^M&CimxMy*40oO5C#1Y9h7iJ^dL5XI(f1URn$RGW8Ez>g<;w5&52+h!RMMfc`c2>ss*Ni z55^3Nc{Q@B1hwmmK!iu^hA%!fVp?#F#flH9U0*QKnX2bL9^wFF)EJO-JIk4gWr+Ft zBkSt#2U;No*GvTknC*tk(0O%fj||>R-6Mx0Qj?5UHl78>x#74uadPc`DEGxlK1IP; zVoR*on5KV=USJwl~#?UM9)VMyjgNP4QrALpK@77D8poA_5QY9=)&vmV-J zNX%!6p=9BA^e;oR!L|5g&cSE%Pbyv(!owgm>$mo3lYP-dv$k$CWo(B?B>~EXHc6a# z^H+=Kr{sd>mFH#H6}TWRtz0CFn!J{7Z>pa-lij|#J6IL_ZP)nSwXHb&{?JgEbuwqmTrp90)p4=kJ;J*jRjX-AvA)h$y-ezKyT`{%y#eX(WS{ar zxtIM&dVhJAI4ddr^Ub1De@_^B_^kNCeHB*OzqEBPOZjx7;;v_xpbQ~J1vb1IDzH|D zNXm^bvQMo$1V2@MYfnyDKlSeRWdC64qw1e~_M_(Zm2;|5)w?PeM^2cNNgB8tLBn>gm8 zL%-kHtA6I+aZ5FfAF!#wb8SJ~>z!t!{jQ4ce*7ORX7TI?E)fzp<(Od&N=7B}OIKo$}Hx?$s@ublL~ z=1hE^3{bT{I?J^m_za})SfiVsM{wV;TVjegQ_tVY2x?v#h#3v~&6c|w(-))mVM@SG zwI8hTJ)D=<5Opk#YvD;i46#hRW*|&~7*HcZMOZ|eJq4deVG4u_ctFDm2LXet_+NpK zY($ADSOtNUk~xxzhf{Ai5gviyW% zija0-D-UX9I3iFBD_Fu1s##P4;>3&?s6A@e;V}gdV=!&9+mTwTAbO`{!NIKmn(e`w zjXEPDUVt2^zGMLr83m1ygcTCXW>JMRjj{P>xVLImn2exPkqEYMz%MpD!d^Do;~H+D zl5Eacd%m!_02QWq`&l}s9nh$mfwIiOj|G64PsPAN7dmRQVU07YZp9J&`wlqDyDQ|Q z{EZ5eZ>H3!^->2bPH!CB=1n*1w17|#%m>J2ASqyR0zw>uvfSxy^Wt{4#utsOv(jXT t#?(|_zfFcRRhX(nC*VUKVNoN)In7Z7)=e==$o_9a{*ubhz45;?`!78MV5a~8 diff --git a/client/resources/hardnested_tables/bitflip_0_05d_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_05d_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..f149660c50691ca3c904fe8a81901c030414b83b GIT binary patch literal 24131 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 SIOX0k&zVDbeK33I#{UHqqRZ|8 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_05f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_05f_states.bin.bz2 deleted file mode 100644 index bda71a64e2f95bb8fa9d600b29c13fa68e27ec6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1448 zcmV;Z1y}k)T4*^jL0KkKS(fx@)Bqz{|Nr$@L9>bUK@`9d5D)+mL;!)90r6lFKm-&y z0Dy=91K!{ZKL7v#00000000009MO{#022{`8el<)!7^YGhcslwzy!o#Mwk#{Fie;P zVa*vaFaa?b5vBwfj1wjS7;{EUOaM$q1ZjZ=BLvBSMjX+T695wtff`^zh`};o5rIic z5RFDgnomU3^l3j*JwwT<>VBpuVt6U$si*f;LV8Z&eJ(zs=Reu|k4kr`#bGk)eapFc z2Z7j*50vP~(m3dHtMxyltK40mg7&Z2p40L_(C{x&9;3># zy(#BElKK`udg`m%`rJeLK4+Bjh`t5#od*|-51nKB40#qW75Y9Ff9vOXyOS7U;<$U` z^gYq|A2alKj`e+y$@#mTPrdM};{OGg2ZH>Lr&qOlj?1I5kEv7l36b|NnTq^N9Akxp zqB@|)MU=5j6lGRiI=Y-PW-}P*oke8ItYTuAGF3cDkxLU9PXJ7(aX!Nliz#K3EU}8r zF_pxfS3|LsGQeXMmRV&(p&q5xVUr<&KJu3ngE5sd2MA<8vRPGOWUBBfb_(J^${&h5 z2YSOMTmj@}V&QaHjs?)H%ZrM`BMhmGI2mPwj4Uv?Sz{fMaI3*MJBif071-crCkumt zj9p523B_C&R~ea^oy_QrWn|3koEK#1%ZrT3oktu-XGRDguX*;KXNll(!=d%Or*Sx9 zn0$-4y=%bF;$4XHI|6~9t{g2S-tFY{4!|)%1?_WZHQ^nqQyDv%ftJps=-mh7D$G(T9;#Z09 z2kknX9};#rkIc(2FnlY}zSPIw?4JAo59V}FLE^l}pg(!<1v-bwF=dR(#vX%*yqym7 zxU-4p`}leo`X0macsnO$$L(KY{a^BSd7gH8oenSJ^(^~G#JCwa zUi0E#z;SgQlb-5spe$Q_Za>H@-J}9&^`cooy_d&x;h+B74jVy=6tVt zbUiH0nVFZ7`nB;uV_&>c&mJ36NnaCUK7Fra&K zqN4o)N?z4cmBc-{RFx>=7!DIGqlCCr<0@H(GA1lc z#b!v%GRaJsqmn}u;g&}!Ck4YQ##wPLCRH%FF@=;I6yalwhFNkPM-wZQlPShW2+Fll zg{o5q31%ZQq-6_YH%#ubdNF(l!Xrx{#-_`8xR!i0pkqeh_b Cx1gs0 diff --git a/client/resources/hardnested_tables/bitflip_0_05f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_05f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..472f2b8540df66a0e094c68abe108ba988957cc6 GIT binary patch literal 15388 zcmeHO4{TNC6+idAS7_<$J%u8a{#jquEjat<8DJC{;i1eBp=*(4uodQWBO5~sO>~Ki zU@vS2xALdXWK-+pS=eGC|CX2y5u_QLG16cqWK+?B&SVM{1ezd!%GvLH_x1I?@*X2) zqFe4wdf&a@cfRlZKi@gucN@5|ws2w7OF3UBn*Emtg~X!f=3bGh7x6U1juKn+0Fxzh zuDZDwzq9nmC$hGB>c!186L&NgqH&3@AxM6JZet3F$c=b>nJG`gRZ}m9EROoW!wyyI z09z`mntMY-Ihr*QP#c*1l{&5eH+m1$a=w2y+FLkm6?0dhoGDwRlxfHccCrlQ$Q7n- zErXN}rb3ZhxRc6ta$g?M$PT8E?8kKBtTMF5v^8rY-lKR2lH&XIUh*fKeCz~}Mu^ z0rVGO)>4eaWMf4D7wBdx+sKslHq$8aF^zhNr?dm1zS|(d7PNznY~?2~2Ld?;L82k+6gp+BO(W6S2-X%D zRAAo_{{&_Q4|gz4S6*6d8lf#qFnAnh{Ma?TFDdj1D5DhkBJ>7#TDj~@s05?;8BL7g ze44|KACrfq#%{`jj?@C?a>xgchDe3lz|hI6W}3+z#wH-<5(sB1xM{H+A4jZ*F+~|T zmIH>oVpjo|Fp8{hrV^3vY7r`cWa7H~nL)3li<~jq2fyko@@=+AfAw0&k?Lu%yIk-F zCHjup)XW`^&Q38nFOjMw3e~ZScS9k71d;EdYa4j%HG~5?3FLnSTKG&!M0ca1x6dJ>2l~CP2rnexV=_0>X zlgS3!yG)eGMT8h8OXEhaGl~3;DR&RkQjtcE+_ww{FU!*5bfIyNLHy86jcmr`;o9M< zF2ux%rmY>ECLsGC&NKaOjylw1Fpnu9l&me_4}bF%s7^;g=7u%|G!cY%R~`o-j|IvF zY(gn_jUqFJVTicriuCLBX|FL%vp{4_o>Y7>Ij&SK#q$y$q?$&>3%~*-iXLcek-TFf zibxs6F9+izCZo}Xk=vP`msVrlA~z{8qN}3@w>=#_Cv6(5)aV7f-&(CNo8h$>8iOml z(wdPx^a*)Mn~x=oe!G!$jjk^q5O!&zX#W6_1R z1_Dq8o#2DImKAPgdN%=ke8yl=IXu=6ll%k?y{N)9 zXtyDtnZ0BdiTj1tkXZnbFZ$7G4PiC98s>_3%kSie!g z354_139j%4$)9gXF?e~J>8ZnUC7w!{`HJ7Tt9L8;d?2CXm8*k8gAJ}P|=J#9iX?Gft=}aA&CXyjc zdop%r?%1hV4Tkz-z_XBQneLG%u|zfEHB-PBsYWaU;hKeEbsnR(x)`?VxR}Z{D1S@C zyt&re6mVhlw~YnBRMWyEY8>DQ`Ero8X}YP2C;7&} zi5|wth=oWJuXTd!?TC+~qZ(|7xG77M?tEH+L~^wqBV;iR9I`Z+$B>LVrhrJFl-eDD zE|7dM3Ik1-k&f47D5N~J!7)yz=A*gr%da4~sdT_e9XwhDu5R@z%3<3C`!G<)V`_$6m7eLtVSY!) z3e&I7Xv+1UuOg;D9yXTNZ4-z=ve3x% zHU#;uR0OxX&h$c^@t}arfcaaxQusN##q1`4@2Dq8r>kre!!RI;CaHJb-ZGW>15-d4oT?@r(oAhIt=PRf6{;GP3P10M zdlRyPqDuN(@boF_BgC0Cno%X`+Rbq)6m;Ms`%udGk6==7*sTvj<}hB3B}eVnpC<7B z1To|#QxiUlAOuk)UwPd5nhB_{!_a)X5kngNoqc)9OL+uQ1=2h6ckQyCgKwZ)5y6@? z7thkNL=`StEq(wF=b4xI4e#{@X25%*xaKFMuj?9?FYFdN76SeiS2eQ- zipji{Eg`;v56E@Cz}un&slA@>o4KpaY@M|=AnPzEJ)3|ZbxNRCGt%G7^Vs@;3BIUF zxY^xtw|ubu>8pc2t z-_)ekJMg-FMa>i zKBDA!UfuDl6+bV@2LJ5*XlMJS(%lVoCxzrYAwcE?4naViI|}Up|BV8#zrC9Q0NEuF zI6YJ{vIhX(0{#bORaME?-`)Ljr3gNTtk=(fFc`d5Y_`?+$DE$ky}bhfe!12?`q_DR zWP@u;SH<$n(KmUzC+L(MLHQNZB~O2tpQr%w83gT^duQ(cdh;w5X-5jQGleq0xSo4J zQf;c_a8|mfM&@`JBsbJ=)TvAd9(iL*&O5+*lD|THs z-x%4Rr8=XLbFMLTuyU$ETGRD(CI!}tzgVblzxE|pAkEvSVAij3frzR5W&hKnt6hf^ zB)=$9)GF5Do9Cm&pKPh;zfmrqtURlDd?Kf- zDNEOfK!agZ$>60ST%bg$T52$~ASli-R7i41s`@l&0B0nc;*fYMjYyUHveAH0<;3wY zL*tT{tMW>o9*-U6ZQj5Hs6pv&!rOvQLnI%OJY0hbNti|ji}PN%o*5Uk9g*+&JfmRg zWk!+_lUf6FW!$mA_y9`aG*KOeD@uy0SqI9sfDrk>I|CZ5Ca49(sN%Ke)W0r^O}UO_ zR~+x1REl`*V&itEJN8H|pyMlKIfl*<1U`7XaErYE`iO8Mp6Y|GM^^V{ucl5o>*-S7 zH#d;W66m$ddGb^tJKjS@PTnquOp(mfz7;G}=3g>wUFnE#PnjPbvl?mwE_G`A)q~8v z`SG*a$>L4U!nMF;vlu1&)ICrAa7Gv{2-8-Qr}_md4YE8>*FjX+aoZ!#GQ2=72SyJ= z#FpZh{kq_4{u#Pm*;ZIfERYa+E9_zD)+&z!HaEa#i%+!yx7H<5(-HfozvmCM)AhWw zX3y6@5NWyLFxen;p9-S0swH)AG^T^_nAv6z9+f{mA&v%3za0RUmt*@ujCMhdmg&Wg z>V$RRoH9{qbD~~OOBDdj*!CgD$Pe4)s!=7~4160h&1LafZCX&q>Y00J%EJ9pj4WZ% zDMZV2Hj$xdMktH*!Mz6;gUrqEp>o8?kIK<$)*CbvcGRi}U8?v=pD7eP!+Et@n_1c-JM{-%WNH-Z{c7|}phZ%zQv8*tGd9q8Nvslv()mH)k1w?mOt4( z#J3&`Vx(V@um*D^BQc*tN-=USNuzU5X?_fMwvJUb&M8UEh)yCnP1|U~IDr_ja$}i5 z=ox0j$n!W)dnrgys_d8sHSETsKy3J^`jEraNQp$IYZS;_( z{4i0*8JWiT>RNjWo`BynmuV6pK+2gkR{s6sm^D#51R7ZHFin&rSr1y&ax}NcEiiZL z*f={=r;bzlRIJx-J1VQUoAns%u9K^-MDK=;5irMIPc>dn6*4ddnw}=Ocfc4k c?~3vwKinI_akYHM_f^)7y_MBND{I~V01RXgWB>pF diff --git a/client/resources/hardnested_tables/bitflip_0_064_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_064_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a596bd59c6c831cde67bce2900309055f6a7f26f GIT binary patch literal 21807 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_06c_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_06c_states.bin.bz2 deleted file mode 100644 index ff80c223390f495eab4e1d2c27f54dcffb92dea8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 926 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 W0a0eiJAeC!O&3x!W;R^n)c+4N`g(x? diff --git a/client/resources/hardnested_tables/bitflip_0_071_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_071_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..15ebf5ea034f20e2247a5fde6836f37957554be0 GIT binary patch literal 45965 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 Fe*t=46y^W` diff --git a/client/resources/hardnested_tables/bitflip_0_073_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_073_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..bb38d5cb46f358f78b73896fd35b3553e8e8928a GIT binary patch literal 22696 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_077_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_077_states.bin.bz2 deleted file mode 100644 index acaf1e210cf5da1b8b11e7e23d53fe909c4cc29d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2916 zcmaKu>rYb&!p7^k6oIoM0_B`dUlB@6FK40W@P434Bd@xM(vxwxw481TZBKh}ce9&N z=EKm0f`~2Bo&|d4G-2tiN>yl-)-RF}MtY@}jLzz2Gs$LSfyy}9Oj^`TUqoI1f_?si zCwcOF@;mq2-${_ON?wn0;@2;IjDIwaF~2`CaiZw^q7z3dj-5Dn^#%hkeeplvF#cPP z{22i+&9J@(;Q^y63W)*7t>m+bv#vro@o^WF@3%wjqcW3gpaC+8gF)Egx#XPd+lDpT4y{@pp}VdX1}_H^PJ8u2Soz;}uA9ZT3KOX_sO;-40~D;oleig!iU`h>e{ zQb?p=p6GPoP#kN5!7z*k^oNq#M7;Fl#D}TU!ssic5V?TVs$PG6JrWcGeHw$;U@49*)(OQO2!(# z`NgiGantrDZc|N_ByI2ICxg!S*L;=L>WFq*m~YUGg}grnK6UCc7Yk>j!pKaiRGjV( zm)ZZCZ8x^#$@t+nQ-{*@8X4a=jNm~$hP(yRP+K{>Ut_@h-b8M7d-t_BF@uv+^tz_) zEAP={Ym9huYYG90aBAvVIoekGD5}4{JDkgW3#z7O@7UgXYMJGsae3YQ6a7VFTmEaC zy7Na5^W)r6ft7u3*ri8f?PhM0f7q!I49#-NfVH|2W|`|$`^-stc}>$lAzgM0lBYP0 z+>UA0*Mdl4MYu3fU05B)qtljkLLrH@{ndP?ssG9wBsU29(88Mb|7*8C%!~&LjyLq> z&3D4ZK2tKe!mIfqns8$avrl*Pm(5@Pm`K&H8=~4&+@&Yopc3|zN=o}GZy@8djgC-m zRJs964FbGm_7dvH3}7-rM+d=4BgmbiC|MZp?eU>tJl^rG!Cb7HYa2yNl#^h0sbu0Cu zxrLFBsXzzVcZlccAKWgyY5kM)Y>??b{#PYlC*L1->Z0{BMTp{de_( zw!-8GJe|Jz5!jO~3_HyIEg$F(H%XKq)O@r$SEACTfvWxa>VdA^ne(PIEg7S}U#yuf z2gBedfZ@<7|z(WhmmnUCDYAc*Cdra5#_J>wetbA6G z?x-o6G-=G@1$V2YPY~HO^FUZ^Xryv+foH@&qwH|@EbMs}hlUcUF5x24M+v

N2!S z+yf)61HeP*%jrFC+zp_lE)f^eJ8W%I+X4+r(V_ItLOQ*si5aZGe*E|skyuZYM1rPi z(oT|t&=cu8{Q!wqq_0?{7)Mm+GFiisV8~Dopr61XDJ8EAVlPpCGzFly>PALhH!)j- zYot|RayLSB>uQE==y0i1oKOHI>6Dv|C(K$f-gIg}KN6ne@0kXaJiz3>&@9NF>YKKy z5f72#37l8Fpix7|+D8_z0E>E$WB`lF&7b!OG5;hQj1E6ulZKmqla(7XdMoTEvKGTj z4%gLFm89s@$pIjREND}SMf@Rq-vj7kEEvXsJvNDwFB|qLd2&Do;c_Plbq6n$psD0r z<FfP!d2gZT71CkBc}JX{I+r|>lwD8qsvb4*Kv5Y7fOH8v zO^cJ8THzL@fP-NO>VvV>1Zkt_&=z%Tv(PzfxkPZuLcNivWR+z3`{?V~Sg|8AEL0D1rB|jy)!^pkVLWb~b$_n$){o(OPd@|E~=lM{4QHt(FQstA)mO@}afoDVE?Obl}8Q^PP zdSg_{%;k62nX;NUUBRHV3(V9tgBWRTUkRVYIuCNivjYSoX zLwF;=#`z)b~qtO5H58Dq}L&07KzPZmV3X0F{DJ2-Ij?f+*6ZGxI~byAl7g zPVAGLKsOCoyd&`yNA_&4dsR!((<%VfuSoRFqm*a>J;oorYW%>yP0tYNDm;9urv;6M&rT0 zm3ux}Rlo{<%kE=w(_m_QG6Ov1vC6nQB~Nau-HV4gFlqNY@qnB3XsgY_bi#~ZKOC!M zDiJq6EDGICe{vJu(aNKh{7o}hzrS8NotaBaY$ZSM_TTmU@BmGJdM?+r%kER!b)=^h zxcUhkhJ7eGDXN5b@0g&uWI#+jJdvs!9+|I9SW;Z8hyw() zVAR2r39RBsg2-ogShBR%}ipLel)zRaf;Qg_uk5Kem4YZ z6v8Cxxj+_g-|sxUlx?iDWkz;qd1pr)CTWMAeN2MMHMrwwwLRh|ZBC5pPNF@{llhB> zN5Zbph4)Qw&-jCF#V53w^2vmkAuU8d=D%v_F_j!U`L92y{{wiYEJy$V diff --git a/client/resources/hardnested_tables/bitflip_0_077_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_077_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..4e9d451b5d965d85118dbc277642ee5edccdf55c GIT binary patch literal 28775 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 diff --git a/client/resources/hardnested_tables/bitflip_0_079_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_079_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..3b71ddcd2e6aa574949dc151c1dadd1ccb5a992d GIT binary patch literal 27204 zcmeI4dwf*YoxsnXS0(1kjs=>y74>jDQg$(u%5bP@4mhJ_)VR>cVAMa`=~*C z_w`YFj7oaS_-fo>Ykk$zD9>6O89aN->8h;%>@7((c<(;tjTp3Ghp+gv+GJJv-~~IB zS5Bu9Mn$ZBz$*^zF*5iIy>-ij6iEUYS{@2Iwlf#~3>$EsZL-eNq*1 zVDOb2&ST(4x@2W2ZF}gfmsV-UuQw`vr^&0jL=|nkl30R)qVsenVKQonQOQ;O*$*gv zZytBn)*6+V&uAkUH?KUSdW>_=zwdzMzL&ip*sYyuREEoDeX;T5qjXl*cZPn7pTr=e zdjFg8Bh$=gW%!+KRMne|`7cIwvx7`N-DLdeA^`0PNJC9F`Zygbjf(%$s9GAOtt~Nr zYJyv<@2xhffu-9~4D}8G$@K$9rE0kEXH=grgPIGB8fGm(X60Y`l=9>(qiSxHXAxGj zrYz3zjSeAdq%?U=7BbAJv*l(Lvq8X&{W&YB){}&+HAW4(gxe{y_?=p4SS4-04bAx3 zWA-#&4A>A;-@{)ZJ8})(-qn7DrJhDlYnPa8pK7jt=DH{TF6c_{Ye9ekn)TrK8rPJE zut1#F%_{}z?-i!AcD~@ED$Dh!)j5tAJ{@HmY9PQrmB`-_`zXyJUSgr~ubU1p&M|7S)h2%f z$n;8#%H649o}Eeth?^Ew&MZrex_7)$CD1TF7ru=qW%3-0Kp=8PRoFbZsL{LN{Ag1u z2>|6yW}S+POhmNL^wF*Kf10_M3&u|M{t6L&&~H)QgC;9p47V9(?)2(|5Dqw4AWuX9YUq)u?AhqJ=zkl+@iXRb7b8RFkI z>bTu3V-ah;!1�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 K3K9}X#in3uEs9M5 diff --git a/client/resources/hardnested_tables/bitflip_0_07b_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_07b_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..e8f500c82e9e2769b970061afe4967e14e7d51a3 GIT binary patch literal 15338 zcmeHNdu*Fm6+fTtI$0Wj$9-){)5NA5r7g{~1-7M~JvIs0RyA~DunjgdCLYbUq;#S{ zY4afjs9QtKL$Hi)%a{PMHcO=o(;wbI2D z+=(u6s%Kif6Ky&kMolnPi9|R~@+i|nk$!Gkx`>_X9jFTFBsC#U)SLuugdJZyr!D=x zpQ#KZ*kp66auo*OXU7+E+`68r;2 zpU7?r!&XS2@=~tHEK8Bx+w{%oY6Y0^--hwelu=01Xiba_FIQNy!$8)>R6FAu@lJY~GmtjW8 zc>`88G~-@c?X>6_eY%9S#*sdxavd+yXN{^EM_Kp^ zD7FtU9T34HTT}+|!e)7!=|WM(_?Iv1@*ZI70y6sq^9?EkhR2hMK!FTOlId4aAUOT4 zOpiXvbPTLW<%!>C*1L!)EizwWu@Y@R0kT?gc)>ZGT2(g{=v{>s8{M4mUGfPBVl4!> z4votdMSjc(#Z-$b9EY+HW=X``?P1cbx7lI*`mO=ed+cz46Baaw|05g@>)0`jPu(n%Al%0GQfUx4=GU@Z>Np00&eCscdTpCj%Sw zP*efDO1~NB2%>*h1gou-yP$-6v?XC5sB=*#>K&{+lY3ELWiiY`-H+@8I7UrIYbV@! zr~m#S>==$_ypVF6!a7&;S$Dkv1V%1huyrTf^1>Wti`j4zJAf2?U>jyvehf!qnjU+= zYezldd>Lf=xpCc8L=y|n!=UVPu{#LuvKpVifUM3Y2vP0i>!mD2>Vi58IJ0UcQWqHm zykw`pQ_N*d(Hq9IbM$uPV%r>VKssH9j1@pz_eAQ zSKCwh&i?@3fT}SKu~ysFf$c0-JnskHz&Oa5QD7)=U^HfUB$joQvQ8}Q0+f9(l>O89 zt4agQ_rm>|*X{bN5ur-zg62%^nvb*NSgY9Sisd4VK=sT#Sf-)FYItCj_X9nxvR|W+ zaCS$~^Rx0_6GJ!aF<$mCJXw`wJK~iHb`DMO-*ICr0GUv~+C*5pB~V7ep^}Gdjjis# z1ys6@E2LH3Xn=|D3N=cF9@ynf&0tPg;?VH0xazvxDDcyl$Uw>AbNF~s(Rhzqw>%o_ zrnhq+=6Ib66UO{97#X8U4!Va2mEn^DpOLPw+T8C zE+x|mYzm`+d5PQ@C4aAGrv(G6ZJeS&+HJ}zby>9hEyv~M@LkXyI{`PpHx2LHzW5F? zZ5v^F5D}zu@-+a2C2tbz$ALlCW=Q|P9t zv~m}Dy*1aGZkLtHgg)7C zC(_fH(e-*&KxIeW{ij@;DIMsac+-T5VXO!?bchjliu?{I7PRF@W^Y1ahq47o^{Em> z5D4KRTryWF+UV1DPa8L;-fiN>$Bi1bcz8WtH+;^H5;PpEl8LqJH)2TJu}~KS42lEE z8~y}E$=s=m(ccAiScA)yW)Ay-{+2GLjs4iC2Ih`c!^GVt*0f=15G0<$lCkVrgqz=C z+G0XQk=^--Q+@O{k$Qxj2p8D z5sbcQeD>$`*m;4dk=`U)cM)k0=;+>c`(O{o$xOBe?0+NZ}U<6z1v-Pd($rRviD6@PvVfdUYEgnMhHp2BAPN zR-W^n_lkT4&RnBjRj$D>$?}~V<+iOx^3Kxa9?jq`Y7!@UlB+1coKOd;QvM1@x@Xpo zbf%}&wkE5)%{ZBG7xk*JZIm;U5&lQ&A)-$CvmFQ1ks%GY%yN>|Q-ovkCgO4(577kN z=%RwF)xmCZ+A9=Z5Xj(6~ z>*aRU>Uz0dS1;tgz1*&s+s$EN>R&Ino9B<0+jajv>g9I5+^(0~#s9Ls+%D53*HT_? z*URl@E$3{4Q7^Zv|4;P(WbFOPIPZ2AJ>ja|`;&1IN9OQ?%t7C!_9tU6x9jD0i;s+# f+x2q0#fT_;gTX=O^U}`kUg73`3FY`t_dW10RS9E& literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_07f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_07f_states.bin.bz2 deleted file mode 100644 index b56e0f7a0227fced7d53ea61f77645536cc678a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2054 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_081_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_081_states.bin.bz2 deleted file mode 100644 index c5426ace646e99581c9bf3e599aea1c528cad147..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5982 zcmYM1`(M(B85I1|p)Hqz>YAxdM=sH4N%NH{TBA*2qd?=OwFODG6%+$9+&y`v^X9xY@e!iy;j zy$)qD#8ymX(jgF1?4pZVX?bz14K~B1SXNyvcJLTVR0s5KooH)5;dc;+l>4`0y3~@5 zO5XJM_gAj;w!bn_{`zV1YuYqU7NHGczRp@2_Z{YD6arp@p%`66Ts=xEddUXKPWXO;%dgS0Nnww|3F{DbxeNMQdkQo zExY!dX7PuPHbb3G^1|R_fp&K>jbMlsufLRT@vj7*Mf8CJ1i;cbH9YWd`dt5KUv z2UL6#Pbx%@qs&?0$wmaT7;H_BMI#_QtvU-v9U5WsIbj|W#_IKY;3^ZJlZ+lCcKI-N zk<}9{WUH}Z!FW=LDZ!GUP;bXL%|r#4tD?&cp_xMC`T?MISf;NPiWOX2WMhQa+pof4 zJXx%wYYU!PR2CB2SI-m3U3y(rj9tQNgqz%hxf+|;L%+N|Da3GM(3m+~;nO#Siwz#Q zLkn*Dh(VDFwi(! z=$)PKVQI#bfoSRld=NpN36L*Dhb|LFVkU($S^N(xL&7&_^ey$@36O_q4@1f4V?w>T z4U&`IM#wI_VI8!6Gm$(j#}K(@$aX-cLc$L$~fW`8($+5TPQwo^|+c{dx!@}Pe`&sNXLY=#tbDbr{chQ2?llSwlE0gFBHqEu z&fV3m<^2#q;2MrrHh;H;v=p}N#EGRn#QoW;g7%ZLi5Oo7k>Nq|-W;2r8X)mAzQEav3i2|FimN}h4XZgGU=kP zAQ=Zif!+Yy!CR9{eHl-=gJdQhzPMbH-H4o26~2qu z|NYvB*CxJA3`X|9`+m*s{r@cgY~0;nQ#JmutZ|k7{RZ{Z)ThuoAPBZ%T!0 zG((OpuZw`@6TqoNvBhmBV!E7-BA3{J_A%ije7;sGXV^q8KA0cRqwHY8*1rvWl?p8m zFKg|i9w>57HUwuK3vIT8MOv%22T*zN-UaVFPR$xHL9LefLTO)`Jn)V#IP(=w>s&}sd1!u1VtmS!2WehxW4a3P`YS`moHKx9shLZ zy)HZZ`S_n%j8D-gA~{4jhQ}LhKy9sA@N{|Zqubtzst51>zSJ4pH0Rs&^Y6c{Vr@0j z6?bp!y;IKoex3dy_d~2~U~GAxVUtO#0-Lau9tjC77)z3DaQ5H+*g5}aQ%C9Hrlu0g z3;p?o!RGV9Ym!rm*CekCI=_H$pFcW$Ixqbw?A4vCk(^Z-CEF;2gJ3{8uR6_Ykm>#m zVu@EX#TR>EYijNaInT-`-lINrvdg_6+;`VetN*eS^~X^(29rE${WR(<$?#Oo{nLra zkpoc&2Cdk#vm`zr?l}BdmcOTH8{ysZgeyhwn|!D9=)0uOVP#|X8d&tp^t(5Rm(C9r zv`zArO$YBC&1j1HiGFrh5=g}%+8BRkCr7cHjtNimnKc7%cumE3UVW#I+~W+r-*W9P zERB^bq^zX;O;}X(F@Ut4&rhEG1IHCU{G8 zb!b(6k&1*}Yfp}GJBDn;)^W*aaAt?IsJ9lKF0$H`E#VrfN<^0%;kFj1Wkh$|1%YUJ zCdY(Ui8kY)&0L0bLRzSVqxb>^!{H)Y?7T*L#30z>V7FKmtRPdo0pR=N69hTJFmWZi z{&*ji0DBmSABB>y2mEvNGBoCjY%#hHXUHMNB$E&;8?X(mm_e2YB?1>iBDJ<4QJja& z1VM0Zph#90l@cUR?_ey}L;|5CIt61_I2$lR8=$PPI42AWkW9m5fmSGB2}R=IZq*pT zwHK4<3YED;V{o(I>H?eauqDJ02ed-2X(#x=dgS=R^wN&=01=91RMrY<+E(U{%4VDb z4UjE%h5|jotrL8f>)&C9J3dhES=DO+XT~{%3PgOn>PC82P(Awt2g?-!xF>x$ToIMVu& zb|xJxWTHRqV}t;cSAP*D$2*i@KueL{xpM;k35@q!e0Gz?>xmQyFV0R{vWRMmt1pujByJUKm@ zwH^y*0W2Pzl3r^CS8Hhy71u5p5SwTWE(3^`0!GpTHBPK^xO)g{7A{`g16L(ua6; zB4UJ{Nf#lVCT{XdmD-*}TcW5Jv;gEQ^}2_kG~*H>Wv8G%PbDpCxkJ=oGlx<1jtC9l zpEIImD}*uw>-ej1U+PXfuC9ndB!UMKL`u4}G)5J0H+Me6mOGsL%zpPuhdj`P|y0qqF(J>2AYjK&rI_sDE^^~&n zX^vmTf{&8lxS%jbxBex`OJ?CcSRw2<7h5D$m{BEGw~O>S1V57BoeUDj|JOA5ZZCKv zU_MfC_3+`Tq~xq8|1kR!)v<{9SNpxwUlj9y!tN&Fh$glQKEV`?IIHGq^(xC|io9Dy z>=+w60XhXzb7uz+3^KFr1#NlrJB0EKr(yS!vzE?P7xE8sYNsxv@!OMAw4P5d)T`|_f=BR`7EZLz3@ygZFr}~{H>w0aO@y1lOrkNQ z+R#qn`oJTtb_+FP1OV49+IJn?bSA4gf>_s(j^esfv|9O&q6B_%Nl8<&dsvQRsreJF z+$qcCH?pLapW}Va7L(J`VMfoa=xA|~a!I`mw0Df3ip!EGRG2m zu-08pg*`v?qLB7)+{x2)Zm(`a9lxdHjhuY(xH(`*1=Wq74ml`Efk=NE2u~}!I_|{f z>N+u_`)S`M+}Ma^?QP5*OYO~>xBi}YoD+4oe$sZMa=yFN{0prQe4ux_#57UsQgU{uXD_;_ z-_*L{M7jZ^(KolO4q*^J4lnXiXHCSaw1IAhS-g(NHoe79!TZ!gC# zm9tWx|8X<-4`J8PQ(;Du#`fy%&Bo$o9ERoI){ZOc5zbws#O82~vDo59=9ugTW+MO? zlP`VoyHVXX2FJK4Dbx4oZpO?spG{izrKfD*YgfbEd|$!gx%=w*S*4(n30BF$IL4%2 zgwyNmUV_9a&2p{cYF8vKeisdE)4^RW> nCu1T<#&Jbt8vf3JPERN!i0IWH5AwEbTwjmw0z zY>-Ykun1iJiw3v+^P=oMzc3vQ+T4d%$5w?|3ORD1dFZ@BGx24OZR;W1K;N&$R~{rD zJX7YJ8~gF_^rij2;vb8H%EVc@Svve^@i2)dnVQN2J#GJ=G?y_FP;s*IJdV)_wL%ea_i6J7vFsQ zVD7`SBhP!VFP}V~`rZB^{1y3Kdl#GQrF{&6ZhcM58qeHyMYBgl90D z7^+!+e!XtZP{79ZK{~kxdT6bwMH`)(fYptWQN7*96lIs&3h%P|jO%R{MHQE#RDsdhRE#_lGbH<$&EPX0@mkvZx$=dcIAo#iSbf&9GZbhsR7KKrIboA> zPw|o=mcPMAH0|rsf@b#duq_y0JCTgSVV8fum0qGvd4)fxjdcYf4NP36uBrwovtE zB~wcfI90d#fOszb-x;eAP_29%IQ9r?I2ag=1$q-xtQTNJr{_ez-pQX)x(-4^NgG(h z+IxMy4i`#UC1atXax>4wm^22M(GwiRf4-(}EbSNX`w#0nF@Jv_9davb4m}4bM{PHw zEI0SvvzBtep5q0XTO`|k3H`@?`XW}fI-#5ENwd=txHg^;jY*luA=Fpk~owGnL*BRmyn{l4Pu_9rR;Y2l>wvU~4t za8>bmlD@fUq$HlX>ZHa;if=FKZ(fcCh4+i<$G{DQ!ALX2_Qkp#CKBDqHqDW}Wf`*X zatF?yQYYB5JwG0B9bDZyd`Rqg_UL+|ai_&`2AMy#ch|?n+4}u$YtMBa`s4orRf7G` diff --git a/client/resources/hardnested_tables/bitflip_0_081_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_081_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..6cc5d4be6ed7882308c33a9716d549dbf6f8eff1 GIT binary patch literal 35433 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_083_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_083_states.bin.bz2 deleted file mode 100644 index 3421417ed6aa076fbff9b816bde26644e88992f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2134 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 K>u(EhFZf^Dm4ey; literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_087_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_087_states.bin.bz2 deleted file mode 100644 index 5b9302627461b3b91a7215180682458fcea124b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1352 zcmV-O1-JS_T4*^jL0KkKS>h99UbwXuQ`ag;~$8Tz+b=}RS|$4T?hbx z062g_Xo%nm-v9sr000000002s(W5}nXbhNu$k50D4K&CA0APRz28|j9gFs}&21bTJ z0BNQ`00RU7I5cR`G#UdYATl&E00T`j000;u0l}k2fuPVCF#(aGkN_HKkN^O|01gcr zGz|uT$%qV%41fUBOn?9e2mln75duxBO_~!Xpn9GpdXH02N$NBhMn;~YZ8HAJFU_T^{T8x}A>E zk?)y|a4*0=2*vi7BP4t1c!QJA2L($ElJpX}6_JAci}#tIzI!HKs_X~4GCM-;cC$U! zI9CtKaNu7wQ=N z!ghniFtEiQdRGC#9q4fAA(ytiOQFe?W>j`6qZvnHrSuk9a#sr`SQ$*REFG%H++D-( zBN*>G7DsU4u*NxDE>nXp2VsjYtCYi(>XhI6NQV)UO?>*3(#Jo^xYR=cbIn=vC79GlJW;a;B;dbz;rGh4vE9aQ`Rqu zV9A)n^dBk7!uV7Elakbw|GahyFW9C$M*evG~po123(8 z(}49@_Lf{c&m)Jx`5Zk|Q{hMOEG)3WhA{L+>WPO$WrWFOrwbTigA6i^zUnR#91OC= zv57LX8JU(cs=AddlIpGoRmxYa3|^pPfVf#%V(PeDE)E#Ow8sl8hF`F`R|b3krb_yna(oAZ;JXv;Dm|347nm@k4urjji^OG@ zQQ|!(3Bi}LlQ=Vi@gHbj1~H6d%%4Ha_Kz`j8GR2)-kt}Qc!pU#_tbE7N!5Fgo#sES z?7pYM|L1w&9#bYL_BnNRGapIb?^m=`eR)bRvsF|+#3?C(0{1k9NWP>}Fi{2P*8~*HAPXZD z#K?%oMKNC22wWt{RK;agVPd70P%M>Ul*$ZK6-y*!Rgr?GNXZseWlUL8)J90e%4&=m zOw3F&OktHWm6lAH!enBsS&@Ze$g->|%*Mrv%Sgr;$}AX6875372BBuDV+=7FG(m={ z88WOH85mfm2+XC7rVOF07P3*9lNJ^rv4%4;OfY4cF*2}>VOYVHg3K|IV=EXF7|bRz zOtM(TR!lL4hC*gc%2O;xF^r^TlCvu^V;N&GLoiIj#tE3S48kTbt1^`tj4?|e{x0N- KaG@c@CrHHaQe;v9 diff --git a/client/resources/hardnested_tables/bitflip_0_087_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_087_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..859ab9b290b797bd96d41312acde9bb405b9fb0d GIT binary patch literal 16061 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 diff --git a/client/resources/hardnested_tables/bitflip_0_089_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_089_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..046fef513f9a200091e15738ddb0c345b3e3a59b GIT binary patch literal 24763 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 U&vQ;-bUK@>m{5D)+mKmY-l0r6lFK!i{^ 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 V88Llv&UOFgCU}JF)?eIs_TK@fIN1OI literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_08d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_08d_states.bin.bz2 deleted file mode 100644 index f7e2d1674d4fce897625e0221dabbd6710bbdf9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1788 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_08f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_08f_states.bin.bz2 deleted file mode 100644 index f66b803eb3a6730a605ed054f1187db6273e5ae5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1080 zcmb`*`%}^f003}IXPY_n(kW~RQx@Xn7?NH1YNy`J2b1{-M;Xdjz}9U$mr5d<5%bOY zh*Z9vv9+m;#QDB-rpfS;O6su-Jl7JCJYPM%H>7nrBG20k;Sb9F%e^PLEDmq8@Dx&T)c zu;`!3khlM@@oxHP5p(yes5s2ctMz25%tS$BXG~`zt3}(=b?*!2!eBd6i?&n1u==9I z)`h2_M%lZ>U9pq~?uGjvjy?3y>@F3@+`(i0aYY(pb*K zkwEPcv>kCzFe=<}*NfQ{=Y8L5-By3(1~<<(6taG~c6>8=avSwQ7uPpI9p3T_r#t9n zei%L%N`6ECiJdsP1yb5)NIvi{$A3dM7D@2^FUtPh%)bF`*SuoWm3&3fD1KESvgGYZ zSUcT@vG>&0h)Uqbd4GlB^>z5Zgqn#!t_uDlaqAMTejOptIU~skp}5b;FkW78mOmEo zm!p(N6&W}8n`}dz?hm(IQKN;Ad4pLwijvN8o;B%vB{ERH@1idesw_kkGPk|OSUSCY zElPQKALzLtjqZ<(XepoS%E^-Y|UD;TY~ zdndxlQ>YG$gfbtQlI>{h03(zVA==pyGVq_VTidma}@ zPpx}=an89>*ehYKNyqb(8naZTNe<{s`*ZE1gY$1nHey$a#nZR+xy5@Ree#Kk1Sj!o z@2{vOQbZ+S_KTH8C}!CB%9w&WfeoQGzTzMju(~x4es$0oF44{}92K_2So{M0jn{{V zhuw82?Zh^lE^YZi>L51J9@-QvW2V7awZZSendx2|K}4}kbP5i1e9R}MR5gTlnkI}g zRu#a&D&OLlmzT%UM8{O|j0ROYFk3Unrq63-zk?5$>$3*`(9ISD5RQ<)QSKpHHV*j|w!q%v@Q57+@JX98HB W1`D|b-ljPW)_AGgNtFL^CFEbVcL|ID diff --git a/client/resources/hardnested_tables/bitflip_0_08f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_08f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..fb72246273a56827ea242caf7e9595e68b537a89 GIT binary patch literal 12349 zcmeHNYiv|i5T5OWLTT?5sn{2?t*EGdtPLTUsJnuXsMIbd8WTYF2T=_6p;5yROE3H| zM2ZrBs6o(;)<>csJ`$s%pw_72)%r+$VHzY5Q=qjiQ6o5hbMEfl-IiUfRKt&Zf9%dV zXJ*dKoS8XucQ&W0p=4R>yO#!t7Ow3Q5+4PFL-;(%7^ma+xNIEM%I{#&&LvZdTl8=GFsAI+#jCmhf(3wn>_q{2~p&3gk{YSjHsqrT>o}ZK2#k=gl0(^8D!PJc zy2xq^lF|h-kptPx#IJHu4tDl|&nyvq<{Sld)bN%C5D7@dFo4XrD4%KS2f%ojsX%_h zZf`J!bPdl|h}f>futl{TDSb-Ctrb7e7ctER#u}#5@|cbb#4?IvI)Et%>|c$2z&K0p z#h}GlMP6hdDf35}&VwAjK8_SUr%UHULy?n~ABLUhIqqGGkBn|je9FK>6&d7ET^-0}8&msatEe63Xkfb~$W$fEnJ$NR zo0{Q1j&w4G0~5gV5!si-#PGfWDjE0sTnexan0COoMH1?WT*$Ps$AW#-segf{El}a4 zk#Ig!Km>=Mf0+vTCeuZRt@CkwG1DS->e<&YMGVam z#~uTg2`@PS(gd$5OboZxUk(l)SmN0m+I-#C;H&b&G ziVMPhhRxtFrg_lddXdMOX2@QqXI&%!;MpX%Dz`dWm(dhJ&g1T$8BFIRRLYW>q{8Pa zwf;AfrT&$AM!##MA+j*Lk7<=lGYUA)w6#gM-6jGzT&pqV*kcsx zDJP~e)xylSe2mB})o@Aoe2s$u=EjebLfhaX91#aQR0xex2!MM)bJpZfn0`#hZp8dK zO!ab1c|4M`GOSZs%G8PfET#`r5RwK%X1jJ!bl-(D_hSikzD6r@=jpsHiOcwahatuG z=E985D~D9ML|#kU*~i;cLMLe{4OnW?AX9gm)&FezW`@H{Kc8q>qRJrojp3PS5#l2% z8?*w5GQH-~!u1E-fdhOGTTazz+MD8lzv{Ntih|>ZEs^{JdhClwkf$FGbMGa{fuSUf zmymD~cM+ZX)p5OHy$RAjl^Q}lA|(bc1OuC(w3ckAt4ZD(7cY$q z8PJ?FXbmi2YV6}>4+WVX7eP3sz4fdp3e-b}9tRu0vIRv%%>NGK?&~vVPn4ta?auJ~ zVz!6ikr@h#Z}co&q0Dx(a7D)U?ZVv#`X_MRam+b0OLR5UOknJ^2_~ZoK(Oof zr^xb7GE1=dHe=$S1TKLxR5`ok2tb>fxa%=Q9R$DTrW_GA++?wS08q zJ_HqT*WBR}0l+vsH5PkCzpda+gA1LLSEMREj#eh;KwYvMahm;1-@6kEAkW6K3)sO@ zJxmXzAjAj6bgqGM>(6T$ucF(Ew!yFVXABXq=JsmtxEHG9BdvKgw`-990XS=G?xf6a z%9R4Bc=XLZUM|LY-~!9|>~f?owIyk5ZQNE!Q#*9#cC%^V7^7vS{*V!q?`0=!;;n?}4|fcO6!_y0Fu gFW{{2%X+;4uNUAZZwENzUclk7VMKVIU)Ood-vIw%F8}}l literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_090_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_090_states.bin.bz2 deleted file mode 100644 index 7f559b40cffa9346afc8c0b947457dc34d5a1ebd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1281 zcmXAo`%fAN0Dvh9Dnf>Uj923%ZR)KLRZFSLP?Jq^D8_+fJf!(rni81?SP1dAI>$0WUX0qh_2fpO{Ivt+< z?FzfVY##~@{z*J|<_Y|qPA3qWjf6%yf#4?)*jqL49LnmO5f;E=z@16A%jIHi@R&?` zCc&PZ9F`TAmzSAvtn!*^io^#vndHaHS0?z%BU0zF=B#LjbTQ%;M~c~S7WRO4zE@{% z=HQr5?X)Sv#6?0$&#}bAtQkC{gX$SdU92TljLb>u5i7Zza*tIZ)+{*$lrjcJoRX_& zi2*k_#}0Ufsa&*ChN7Jhp*h^SK2f}hDpd;wmjQ7nL~(;iYIjN83I0h|g72V#9Auo&r9MH1XKCUJEd+{xk^KmQbWU6%?04!uj7glK}O*kZbf>2}yh z;H9@RGzsOqIjI9*nB?ddZUH?v?Yux6>#7pG>VFkI{Of+%_Ay{%`z+;bw6+X>o`w_$ zNdA$CEF2SaeZeKY-DLT4y;dU>Ixv!laJ`(?uY$Tkd52}$z*l>jl%`#qPvLC-uIgx? z9o*0LNU7RB8b4BYeVgcpGG?;bOwwf3J?E~Op&md7eBRws!vF8pY; z>SB+Ne-e9hsBLS2bx>7Js3wq%yRDLCd#>EjV@6%)&=f^DMED;j9AP$OD0*#&tg`WU zfO}`Lvq{rL69i(g#xEL8hEd{*64XVyEt@n-AUMM3$#1dJ$f_f@vMdUXx9Y5pQ@8_v$@laQBUrBerHhB&}TmJ>NNegu5mfoo@=d78WJ$%47c+NA*Io zZR-+n^2qnp9662`JfV`Ip=;sjRjd+(GU9{KQ>6Hi~%Z%Pv2*KQkjpdL}e9Xx&q zPqo0cH)vlW+;%Qos6mM5{O|%s>1m{?Q{6h6wqOR=>(+$qeXOINK3;6xiUi-F8QKJ* zgsc>$CY_oDyi>~cOJ>0Vu)o3o^sjgJ@wR^|d!9ob+Z(aL%-*UpZ&NzbmCrCvTW7&_ z4F~UGEGlCUIvUUHUHN(I_Jez8>hEdNM^`BCTY@!z(82p<9P}`_zgtEta=d_;_mElm z%;l61BpWX=tg}K+I3z>% diff --git a/client/resources/hardnested_tables/bitflip_0_090_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_090_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..ad7aab465b6a73d3740c40d7f074c1f17426ca37 GIT binary patch literal 17300 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 diff --git a/client/resources/hardnested_tables/bitflip_0_094_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_094_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..eb996434c0f0f360da1f5452687761f41a05602e GIT binary patch literal 31544 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_09c_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_09c_states.bin.bz2 deleted file mode 100644 index 4b0316dc307db99d1790c4fc1e4b8fd22edb5571..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1431 zcmZ9IO>EP40L9ZJ4M}XZ&^YdYQ`MAy(KH^7IZT-Z3`)O3GD=gD{+Srq|7a4sH77d8 zN4{JV*RYjR>H}&ig%;Xqwb`YUCgeCa8k)2*X_LljNj7QK)I&D0j*XA4*X_N-d$*_G z>wfq2TlB%>?Zd}S&hNfA_8k9^{T1W+q+&1|stny$gTWBD7Hfap%Kzx5;q+^J>;_9> zs_FmLcs10#C!2Y5s_t(8pUJt>xvL7zcFO3Iq!Eh7G06Rpifq|6<@Cu^r0u2nYOw$5 z#s1HJ=vV0Qb8%+JVDXsi^YBRZ@Vc~uSyk;GBY77s9U@JVbvl|d3V|J2CLf2Q5Dq;J zAL(4yBIfIzLYt*JZOR{DTi1?)&}z5yEU~g-yi@GB7wL%04qkO9l0kfc4z^%6UWB)m ze1d}z$iX2#=TB>T+Oji?Kt5$@4jv+j_U5yMmK(O<5nCb%r*YS=ZKiQ2uj_CDt4?9- z7i{WS#6wc>u#Tum(^GVQ_M4yIW;bTlIfJsgg?3>}9DlzcPeBB*ZdW%qSXER9j*4TTChG*3t)Asxp%KW&slmsGEEJw+9 z-1Uh*_~_NwT|G*{`Le#Ib^$1B;s~ddM^(MD+p}3OU--qPY>vpax0t`Ms*Cez$z*0; z%*>Zg;P^0xk<~oXX&{Z%)NbQOIHr(4fine=-#}}F-KesPO-$rts5on{e0*^I3e|hEi1luu+os@aWQdQuwex>a~W9bA9D?^-3`u$`N!uLrZMzD7JC_O!4o zM4 zMh<(0UX&sPcSc#Tw71x0#Ims7VH5n>jGm=|;O&WS*ApRCT-G#|0*kmi<)qoDiFBs7 zwx-!08nckE`!9#bDHt=Zq)oQNw!fk(j-@JbZCjt5VK z^>I@+O9ca@rDm6tmqby_?QYXXSw>HR5j@7|u_K;KB-Q6+ee=lznA8VuxOEO7Rh4|O zp@k&0HL9+tl#69A&DVHRj*QRii^YVYq{3#0Ie&wL_xez|aHZoX5CspZ&^2{>G!*Q` zxK6ESElkyg$~S$JT)@tf&P<0UhoMZ8lvfv^3EX1PN@A#xVRTxcF_7DOE(#X0I$h4; z!EiWvQ-^K5;O4af#?MqG3k02JST9R@EEEod6cC^!Qxv$f_y&s#W}SuOO)Bz&Lxj3B z%jd^2t4_8SEF?){M3lrC^pGUM#pJHILpfFnv5|IbaA;?7CVp4>0#ihe-)k=w@OBFg uWrkt*TF(HPy&T2zjfRG?D3Fyt-W}x4D=jgwMO)&%j diff --git a/client/resources/hardnested_tables/bitflip_0_09c_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_09c_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..ffe57e55e078c95c76e0e825ae8ac311b6ff028f GIT binary patch literal 23829 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 RTKTs46EDJc<#hG;{tNc=({}&> literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0a1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0a1_states.bin.bz2 deleted file mode 100644 index daa61d3b736109c5a4f1239f010d7152d9dc5aba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13572 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0a1_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0a1_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..716e2ec82bc6b1a89d1135422d380f407ebfff94 GIT binary patch literal 51284 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0a3_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0a3_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7f045d83f18f0932eeead942ef1aaa02f010044c GIT binary patch literal 31041 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0a5_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0a5_states.bin.bz2 deleted file mode 100644 index 958b8ed3d39035f65d4f5c940e5dd24c7383dfa0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6943 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 L+_@>jo3Z}`DCiJi diff --git a/client/resources/hardnested_tables/bitflip_0_0a5_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0a5_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..bb045bb43b809509cdee554f9df8a10baee0af3e GIT binary patch literal 47188 zcmeI5511WQmEdpHt5;pGUcGxe-JPWWCa-Biy3^fsdKwHp5%U6s1VT2^Oh!UrX(S=R zOq=il3xSmsgZvp4aVN+k%ZyKfVHS)qD^YY6-maqT4mh|jF7Avo&9KU!HG-1_1i{+h zx%Il!`3NJj;5xJQzAx$bs_Nc*?)iVuJ@=G%#H!Yf+rP5(ex=@jT=JAk9QDzWk$p?{ zElH9V)jKj0DYvYGUUkI2C7uc@YG~h*ipm|iZ;4j^Eajb~OsqzuidwL5Nv!UF^3y+FntP-{~0TCdtLY{f=o-IXX!H zFRP*%Qw?3rpW)wS!w_8534G?S9u;IdcYF#)PFIml(cZW ztemJxMBGAFMq{K;)It$xn@ zdBK=5pC@uVxz%A*ehCd1>Emb^BncP%9VX8AfEvcAsk~7w?@I>6g{~s72{9V`9HYs~kW(bUK3(`Dqwq*eFA{ZnufOVKe3~ zrz^b%%(`2-d%dX@8)$U5QLV{9REq#{zKL^J(m}JSI3uQ#yUnOhdI@)NZIw}to0)Wy zH0xT?l+_ZW3YVA()d6VzG^Sx`E`X`rsEJF1blqU?1*OnZ^`0yEzFo&INI4M#sa!w( z6+q2a;7R22dawXV60i{t>MEDKnMTc#me1O8b4E3tV^l>R;&T&to@vIyZaOhRqtdl@ z#-vGyBRw^lXPlWr%$ie-&H#o8=#R54eL<~JZ9{_84;gh@k_<8-W-0`W5@jYF(C;uS zcN?fm76gJGwOP7TM?=3BAaaudt}Oz*O@cx`4aQOYc|jOw)=YD$TB>WFdADMkt>@?( zFtpC6-KPXe?mBb2YU9c}24TugL*|$HB)QVWbA&%0v_j#Zn)XPi*T8=uAo_;o6E65b z@mVHZG-_}z?bpeTpVlEslB+Ef<#c=`U-rB_iiw1fWMO@v3-4(>kkP9CO@IjK1u%GR9o^xBO~#~ z=4e7$ws!JDfxE1J7#JCWiDT6v*i(x|ZSbt3fpT8_@wRz@pR;^kVYo3>V#w=_I)cXCgUG;z2*)6uiBQIl1>X^^ zp{o!)zgM)&0KA@j4YbbKACaTD$*Z6Bow0+M|OG z9ROE5hq;hn?sF~exdrchD=C8+{^5#b-F zL!P?G)Pfn|LYTmxVbm6`+$2glpX2|y9R(kT3U2GT-j0uuh8~*eAmw+%e#nk9gaGgpRhqK@l&(edz-MJfd@Kce4gkdbl+P_GhF>-DtPXRL z8li^+(*%^k*VPhJUsirVzCy+m#vkuEFqK(vH5r%Rhre(U|9!TUfuZ9upg5P&k;qtz@Ew+w~97jPwKyGWAV zV#s2(%+#8A=ma>gN$jJ0u8uKgEvw~E?4B+12zS9)UxrA7x+Xw1^Bfow61(9*8!}ul z9^j6(8B=X52FEPZ>I{LuqT0f;iXs5R^E$?1TH!@1tSSEp*T2=eJ{@p)$5J|k%(+EY zxea2_JG5242%8Iiylu<_{wku0Q3NDt`NkI_3vEn`WG_{g6HPNTZ*^yaPBM` ze^^)~xqvQSGjT|l(R?0!kgg{kIV{ypJSZ}$oX5eEknm-DC3!X_@=LH-cT@wD$aPJf z#or#Je~4a?hKkc|Wg2&av77Q*)hqz^+6ctRl)IjKqZ4F z$>m_1$%K2XkkJ1MM7r~-l&s8oO>)*$ch{Ks7_55>j$ett$MSTLhZR>&_U?&t({U4h zuC=-hsnX4y|Bp=1!d7G}n_8v-5u ziSG;U#YcKfWUX^O+AT?#hB$+@BL1)%0*F=cm#AW%>rE0s^Z=+=sFlZ;bb$;9vN8ik z7CwcOP{nHDuwICLD-1^49dk<#6nJnv7T|fKMm8~_6u-f-0I*A|0EmZ?MN=t(2k3M` z;K(weMae>D`l6@cw=#(lfRQzZZ`T;Grd|8E2iHEaV{JjTTW=Qzpwo{tRP`m`I0wML z!gra;xqRO%+Ij(fR8;Z>Xam8-A1sSMD6VnCUcBk`%oK9r6-Pn@wH%~y-+xx19bnY} zxkKi4h)Zl@A@mledcVjBX6%VWq(wzPuzbJ+=u`h3e+{ta>1kmfG+HP3PO_Ro-qQfd7MOCq}CbFEQdIG65Vx9Z%wI=weJ6EKtiRqymFt4VjH zeGS0S(+qKvd<=U1Xi{?N5T+EVfM0PTg*S`Stnqz9 zofuUdP>|!&3<3LgLASGmZkXxONYCI%YH!q^z=i#g#y?iqWck5t=c12y8uxuD*(!V} zHb^K6cY2?5nB6}7Qo88wL26L0r~!3s&S1=4&FIOgx||1VpXK`@G@g>$xMewL1cf1LTs+1}FZ4@a2Ccx* z*~LA92e=+y6!@-PExU}?xZ#I9qrN}vgAH}# z2EHDE4$xk_#NGspo&O8a2o9#Xk8u-YehntaU8Dz5u?vUI!d!u7c{*-GB>CR@LxJOE z^UIaM@(Tp5ri*IW@$V&R4w+M!(d5X#P!iNL^M*asZ_ZmHcfLxKz#SHe2N5}DdcqH0B zPu30d9Uad%wIAf^R`s%4m9=;WsO#vb^(EF(=mTnpiTCDMA#wF3q&Oe31Q;`u%Y)RE zs78q-yd=JOqbh~6NRS|hf1!B+MvdK)X{Dbv4kXBJ0?qh=x!ssobg*-Sl{%Kpzr$z| z3}9d)VZP#0?he7>DuR1UGXzl912L{cT$-;{q~STt6W43SypBPVUM#|O5%>lkXIb6N zJ)o-)eb!$C6q6C{3X-g&%lL&;XaZ{@`RIFGBhZy3A4fSL$oL+0k|meR(x|FmV5OD|{v5@`vaF)|h(vn*tYIm)9+#*aY>=!|K$hnNv3n(ckVO`!sUVkYLEl z>+uJeo1e_#nWwo2sR+6)kT32=WrJd&6~icb3NB^VztClI7?AJj(TDX+c|KeYY1~hl zN+XkXH}Jj4^=`gzvn+Wf0e}v^y)O801!O5Qg>Qh;ar-DEq5Jcjb&R@hf{CZ==bh#i ztDjGzYb!k^qn5$AlaeFu|EEm60BAJs4$|_dPTQli3l6(<*9&*KJs-2j-%US2DYRp=sN zN4pBWQJmMB*T+oZAJN?wN6DooZbB?0IHjdC64gfFJ)a?JpVT7szje7$VjCe)BKIcFCf649>AW zdD19zV96G<0E>Mn-oDBz-OCwmHhlbb*l(Yy6lbEj)I~`xs5suuHoW5!JUs!@GRXbW z{*(L`6+|kkECX%thd)o8WSnG&ewTr_5o$-I?dvRUdO-ZB6{Z>*Nr(U`9MJ+vg)Yy9 zIZ+U2NR09l!8cO%`#3NSfbA5GdgOWFeU$I>=nv@)AR(;A#j|KBtJgpj4PF>r=^-(# z$w!dBvf{srvb5`m=|nxS`Vek(l1@!bj@kT;K24!Y9Tr~mO~l_yzCh?3sTb{G7^e$n z6M2)>h{MD{y$ciO?P5zcLl5b=v$HFxiqaWI^aGrE^$2aoSsF4k+;O#3Vmx&v-kNlV zcKwCL*08+vS6_YMY7<|N;3<_G2h^H_g4Hm0?%#p{u!R)CL7y1PMZ8(_<7v+ zwmpE!NcgQ?I#Qx)$J&q8V}kSbGB>`Ilb;6lEu`>69serhDtrklUkchkMOnlxl^D2&YxOX1y?fDe15Y9I zo1_u=>-_6FDx~LYxsfD4Olc|?EIgtKpEK1XZLs&oX7-3Aw(E%8-_)$j=o~d1fi?AG zQ0u(Rpf%Pu@(6OPl3Tpbd4c*g9(CjS#CpSC3s!EJn5k$&rlD_E5s?b^o^Id7rV6T+ zZ5vR|UA;vl5$1Pc#MEAHQ9cs7hOzvunze5^Ag%*L4~{UpxK6Q^SGcN+XZrbz=9gGz z9F7|G89`AY+Kz4EuDGlYUe`7gf2NB$=y)eQUkWEgK8w2ITh9t_Q9{HOI6%U~HDWoj zvkk$P4Wwuva1joE4t-h@M;!Nu;lN4>Q?HXIxt+@$EjA5;!8X%^!7QmQgSytO2x#m- zTE~7HY?^#aCZ2R?)&z0OpoEuHD-f0w2@aQK;Xeyua%3(0y;MQ8w=rH#gE5cZLV?x^ zo=|!M8{00HaUNY$H|H_I0jyxwNZsQ^zgV!4m z&mi`SyZM&8U+Y@-r&lr#}zrO})(%k?BJ_lY%)xrTb+U5gpx?oUwSZLDaNf!$- zVP(1fZsCv_{owqNnDU%1`g`+hguW-i-^(UG0=v)pAbbRE_8#pq3 ztYF&z5U^2ZJKaUEd^^HhBp&e?;5_{n-EOccs#~aC(hmcNkAR7vg=>PJRcS9F4UEzO zSVbt?@|So5PJpng)06Ko@Mc&}>a3E&|j zHtZ|UF%b#-67M~afj$HhtjB@*A6tbo-76#|$Xih_!3-PV*$08{ZXxPMdP>A6btY}d z%l67tXxBe2@0UGswmei&#ao^l+);cf5iStMU(h(|MoUP(pg-WI+c-D?Ixf=V@!H1X zhfO6a!BOX>;tCorGqq^bVZ7#71!3n|zT>Hbkzex!$`d2m4r8vk9xeD}N+uiq9W!3t z4DU2!Ba9nu;Mod0kA!-34PMevHuaX%WkCrk8Dnwn^Kkp>DR;RWuLM`7^=EV;0}usn zed|$RUlT17rf6f@`7{cAEFi(jX%tw3PTeCAVK+LDjf6RnXV|ErzOYkty^Gx~LoR2~ z+Db_5NZ_O+gjZ@v02IV~aZoh%@bG<$jQUcCu8C5BI(rNQrIF(M-^)Ye#H45-vFA4U z_AtTXt}d~GftW~%7C-Q|M2joBCt|NgmM3p9V9bPRnmXGTi@;5b9Df+%_JmmM3doTi zr&xAjXEVotZgJ$*vxAdV8cG&S=1k|u=W0cOLX>8;e`<+=pnJF;`7aywzIl8y+Oink+^))YLkZ0z#4cFnMyb-a#^h>D zc|wfGI^vzvY|LSua4dm1;gcB`>WG5f@3?tBBPMql^{IOhSV^j2cl{i$VM1~xAeqdf zPcy6}<%3AYRq)l|bm&u8f4Cu!id}7I*sK^Rd+~YjZ2d*U1xX9DNbtLM^`S znG%{Mf_TgA=)q2;7Drf3%a&*kz5^v&FDAT-Hv7#aO~iNhu)>gJhsdusqbM;FZzX@? z3xiB+@a@T;h{im8>ewT|;T<1Vv0|bU2ifBeYu3uhLS{^~zPL6noPG&XP<4rB;Q`(? z8q|vQCgc~`(1N#R${1g2R1c_+zL>7TJ8ZH>DlLSi+fdzDC2?+>@IV6Dx^X2J#->)3 zRq|6H8_Tg*f@cmC%Ik-O2efK8wTCx&Ey}}=H43;xtW^+0*)5ceE%fzIl4O@r!#_l7 zu}uAl!SnCwFtw6# zFgKilg>)Z)CAUY6%#*A$&?Wf;I9YpB&)@}EPh8QQEL}YI+L=tD|KQHyvlfCu8~O0& z5n!kN8*Lz}XOiU8K=MXAhpW%!CS1-;SwT1wdp`W$VSM_bI=@YON)IT%hPA%PC24Gj)${@QaU4805WhYJM;a<_uB&iZbPsf@CuzW&E)oLSXmaxS+!05)1W9~i z3{!p@=sbB49ykvU`Xqd_0yEkG&#c&`s~89uec&Doy2s%M*r+%XEbLFU_2o$``M7gv zgRWAa=cdF8A4yPd-a6}wZxbE@yl|NK9&kKFd$hK*Sgy0$z;wXu;?M;WFZJn0oYsZ* zPLf=h3M`hh)DzTLPfMx_i`rN*mSJL(X%}jYq$lm3W@2KwXbJq=>!u5P2mE{5^n8oM z#H#5s{35_K;6*%cDl|!lWA5T>GpRMn`BR-@cCY&ZE;T}ty4gffO2lfKpkh57&CDdx zWDcFSZZ-s>Wxe-@)~UPC=I-4m(HOe^sIJ}bSC$2_WH@taHBiV-q-^)qR&Zgf%+&5F zg<}e4S;_-!vgTxgv%-CnA1Qm%<$LdO?5LV;=irNhy zC0f?SYzIWTmF@sGy52rtajs?jE>k8#SjKZu!QCJp0vsB-9#7qgz%ELSenG4A(7zoKvxxJ}`U#m6 zJZeMNk|3}WWYBA#g{MNV+K9O7oPiRsi%{9Jg30S!Rt?w6syz

oE!5$udsaoiC!- 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0a9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0a9_states.bin.bz2 deleted file mode 100644 index 5893a49389626f26c5dcca5449c013fdf95c4fab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3825 zcmXY!ZA=^Imd7C!!pm$37|e_okpyFd?YUuQxOWw_B!p5(z_WxHY-S?F^^9lS+ubif z_5*730s$Ma=MwyieTDJ{m;hd4++L}v(iXpBkFB=Jz16l=tK~Jl)uxrHST3a@UAo#M zJ?ESckIsklJm>eCs?j=9(njVp{a>Wk==y&8yyJ6KL2F7%e}8}a@syO~DVhBz z&yTED)TX4QoV(S3=u^)hx{HVB|1JI3Sa78O*YJONsv&CtIsVj&0|=hgZ{Yr

ApL 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0a9_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0a9_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..dab0fdca9034fdac7e1d7f6929919d4cd8a52b5e GIT binary patch literal 35946 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0ab_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0ab_states.bin.bz2 deleted file mode 100644 index 7deaece19bf2f1710c86173a2344ace19972ea04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1924 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≧@GvP}zhFJCoPHO&%)0M~Jrqrbr~Er5}(Z&H!uF z8xj9g(eG*GhwttG2`36z7Z|C3L`Gf-%06ZEi=Tw@KK@I}Y{79Ek5X4O~A#Qc@U9fOB*9#cx*9QiD znWyT~FTY*hA0{h6Syf?}cXKGNaC3n6_0g+?1dqZShOj{uLkeqT&n@ZPNqvLkx%T1c zlbUIr7gPyie~@Gdl3&JCI$qyrCJg#Kdt#^S(ZVfJJL?tmU-OjLqi*3@dn?5&q;nkI za>M4<8@Tnm0b+*>ghOk=-8$;ISQv4_G7C)}2>!yqMb|XkLiP1ad6+dgoyi?eQx}sS zy4?zw&lSqRl)kw_cOzD%JWg6`k6oEBeLgXBI6BOGGA+pJpWUBn7M?93x`N)lFY}lC zd$+AyWv_)J4g0g{Rel)pbL~f)$&+VGb}8-4-JnduI2Td!vxzH06b&RsB#8kgkrYcP z$?yxCu$(5_%&ScD%mudsR(Rth8XvH*^u)zhN!Jokrj*|C$Rr|T)NS*f_LX7w(J3rf zXE!wDygD6I&9>ovKuur>Q@Y%}+iELsqj5^Wq1k8hX#M9_mGaGRoy&ULqv$Mc=PkM! zG;0xCAox@z`hp94Hnva!*g#}tR1tj)Y2&k@OhHux0Y5%1sDjtgwbGhXlG*^FoT5jA zEL@Hcs=zVtT@B(^I`sZu3vo}TlmKM~xHv@-)vMD|qA$aR6NOeyREULVm?R`BxdC|q z6gryRuZATqkcrwSI7X!(V^i&Eryy?u@T892}->kGo~3CT#ybD;=xKUOJ91^ zJYAH^`}}HlDl>Rni61MeSCmS7)W)z*x!!?eRYMQ*zd{lhzf|M|({S}ge5uj{Sx^!J z40G6g_P8F$O$hhiKp#tklJ1{Uy1Azo6!#1cT$5mAfNdZ4c*(8g)-v#lk1F06IiqBh zIXb$S-CSD`lS*kLMX{_*U%=hn7_Up*uXib3Hb0naV}m;%$)iiXL^ zc-O3J^rn?O|LMkDBw=KfE?P>RsX+*RA{Q#ug&BZtBt<3H7%&!#k?&hKuyO!eJhJCZ7NXC`mqSr{h>NPjXUE>%fAk?nwqK?k9>7o*&9*U@OG zSiGtTTlAC3KZbk{aB_lv>OdQZ1g1!B$_WC^{v^ZRG&s8&>fP`ke(5=g zPduda&=^hra!53%4c9HGGam=TnJ;R7kcXrget1(|9r;@`@bJdh&X>NQwX}d!+v{|N zYU=l>jYFczy*QeBye_jiyQp{DFAN?eHy#!(9>(nRzON6rPr27a!q48&xiEGBV16WP zZmzjDjK1stM{B{lIF!x5IY+vupVT^VRkD0YL_#KPhcRJUQ&^as?=e%^c;$H8C229OFOwX+b?g4?EFoNz3QJ)3s8YT=-3|-P0adv z9a-_SnwkW4$y(2u_8Z@f_2j-WBy}Kc2-hi0mofGN8nGyiPW0R%V9c;2H%6<<^rj*X zV6*vQvY+ihNj5tI!xdNc4F#3IC)^O8VDqjHe_K*G#u?Q43d+}G4T`UWh0_HNF}vbo z-X+FmsPoLEh=6S4M1_bD0rx>uv}gobDvE{;b{{~%U4grV1@F}(FUksW=v z(#tCo2JiNEN#$a)mR9Jp^xnOB4F@>7@gypFam?LE%F!3BxSnz^S|&TAIspK%093NY sp@3>3N?)R*OS(vfB^s6nasl#m63gA==;%D&cyV>~Y+}@1WzX7w0fp;Hxc~qF diff --git a/client/resources/hardnested_tables/bitflip_0_0ad_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0ad_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..171ee031255b5e6ab89955f7986b4b1af9da13ad GIT binary patch literal 27204 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 Po8|^me6AZ`_T~QrlUAK> literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0af_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0af_states.bin.bz2 deleted file mode 100644 index 3e99de95cdec72738ec5d80a2ab21418fae2076e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1409 zcmZvUZBUX20DxttRxr{Ofll2TQ>VV;0FvSSkJ?El&YO#1yS&y0b&-JSul?Hd=lS#86L}%)I4Ob=kjP+4 zNU2UiGkbeGb@%&WVe`JFD3}T64#Qlpfq6uDxT7=NQRkfK;~4Y7bf^D7W*lQ@WwD7j z5Q4^IPE3&Pyx-MXdKP=+2o`~hI@)o=2_uv_X<&tmp3%_)LDYWJXtv^%D=y#^vGCII zlBt^3)|;AR;E^m7tlV%D@hRs2hE8p56(m%6bXQ~iS=tm9%vL}2dv9U6XX#}X&j9#XXh9HrX>i<)m01P?TZ`l3qobDk?m z*i@Qvh?0CgoCFD3CGVUElv335L66Eb$n-FH$!KvwCI0nNmY^{9;jG;kV=(; zQdww7Q4>up+y6xeKEJohBJie40UjY=OgeQXJ_TPUUxM< zf<0zn!Jh@zJ`k-Wo6PI#?H_VmYM?Sy87k-W>O+0i>IvTZ;pJHOo#KUj+$+(WYjAsC zX7}5a)nvpc=N+GPzx!FXEi&cV-XxA1>Ymeee427;qlKaWr{Hb>U~|zjXyKSA0Q00W zVYjH^Dd6c*nIh%}LjVg<0!qA#y>kX^_^#UJI>!jGhj}EOj;Ug@b%u)Cp<3yv(bRNa z5LH^A6R9nu?z07?0r*$UrW7Shkal1mt&!{A#aLopX>xsxMJ*4&*_(T94UmMvLUheT zcp#NYYPjO&7k6?N(zajaA@TU?>LykPFE!K3d!ZOL@P$Yrt>2C12u0{D69z3FVY7_i z^#NsRfpKE#l9kI9n?@Jd{k|^dZZnq)kaEM~R$x}L+R>TgVu8%mHk;)k4)t=aH=JXQ zv)vs@mX&TN$BXl4kec^Y-VT!T{>Og&B;%!sRXpv$K*6r^@tC!tSYt1ei z&2Og@c5@E%2CUjj8{B_!;Iz45b{5PHgck#<&Ji^?6yQCme$l$b)vbn4rMh| zPWZ~2>N}gen@=#=(+_W$HQ-&{Q3!H z^;(Pr-3YLXDeRt_uqxC=6_=YP$dII=KhAqZx%#2soM9cRG50}s9|Fvh+b@@d0x~X_ zY0bo*Acd0jKE6II;nJX^E6K6#UOyMHHDzUQmA&wZuQzs1ggu?kW5g;vH+(1joP)OF zBR3FfgzP=HuGwdKNMn_NZ7i!*VhV4UZ2lEum#1a+n~zd%TzYxjh`V z$h9;e4|xVwJXR^!dguE1ehup3ozZ%~bAJ+kDmhcI@2RBCpYYP-ORw7tw~unFf@0bY z#6RfQcczm$jBho}XgDI^JVca^^+*zQI)fw;)RIyd7?x|YH+?n;P5p@1_XVi{VUr7J z*cg_V#nztK8J(iy^}*YGNtYQ!77lw!H?EW#F%$A2f2mdNTtP2a$BD}#l6p)5J_p3w zA{r>6I%ArGw5X&}ZYJEDiuPJa(J*^zMl4;$A>J`up9&r{73j9#BA}N-Q2{YZp^%1A zpcq*)keE%sTshJXf+Qjql6ZrEF)j#icdPDzI6ycI2|nmf$Y&!#P&ori#2AAmWDHHE z0M9@*;26RPD6q8QMB+#S8BUDGgn$wvRH*frVC#htR!l|-5_-h6A&DnQhGi6{6m0g_ N25Cx)y?QFm{{leGm=pj2 diff --git a/client/resources/hardnested_tables/bitflip_0_0af_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0af_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..cb3b19e4447f979f4da6e1ba29d39cb17edca2f3 GIT binary patch literal 15338 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0b0_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0b0_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..4bf9b403e682b7d810d377726cec2c6525826eae GIT binary patch literal 17155 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0b4_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0b4_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..8de773b3fca79d8ab3cf7d50175b0af5b8d42454 GIT binary patch literal 24777 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0bc_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0bc_states.bin.bz2 deleted file mode 100644 index 19e1fe89ad8578ad77686020ca213fb0b21ec1d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1129 zcmXxYT}%^q008iV&g<8W3T?0dEHH=AO5s-Tl08&DZ4uZ?gF>O6%Lu)Hw`DF_(kx1F zn^^h*v{#FuxLe|Mb%M%>-udJ-#@>17nCw9_A29KuO`5D(409UrbGp6k_xN*v_}Mnf zwa4b$^CG$b4-mAe8Su&+C5}^#OyQo0@PF%=II$;4XYzyj+}MYjIkR@ih_WR<%A~FuGcGl zCtu0=mS4149(G9319vYCE#*DWEJ1v$Dl_WYXD!&9YA={D9DIL7A*kIiQKSBD>)2YE z+&pd_btPKVJCvQ_L1XxaS<2-pYRCtq3**F420p0LzMOsCH9cx@U;DK%os_0};@W!;VPHGTPG+w+;t}8tjW;VI|_r} zx|#H{>Mmf04VjkZOBZV@*3_AgHm_Us1z#*5j6(uGw(;>BRZ3 zP{Z`!t!F!ip}<57Tfb}#h*HrRICpvELYrl`dO%)FtGEFwTWqH-}O=PN% zKi4Ymjuht_bv?1R3nd$e?!0p`8)rQH0+*!w=~+lYP9SO0)}S)#QG1-lt&r!LNtyH4 z%J4@N$FNQ-Yl1SA1t`Q*Sal_C_Qkv3Y$)v&-DieY&K!zlk7NA=IJO|C056bGGHR4W za*_C8(pM_@?GeQb&c`T^GB9S3ZI^y331EH=SHYcDpsd&4>*!HZFh!^kDIhIKfq8VJ z!s=u$<%VLnQ71UHJJuG==Mt#0Vv3e?6GsXE0&Kbsj-}}X}!SA@|Sny>0>;Xfl6c9a_sD< Y#`sDO0~?~R*`GI`sC)mQ()c+1FCw_aTmS$7 diff --git a/client/resources/hardnested_tables/bitflip_0_0bc_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0bc_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..60ed5333257ba446924cbe82895667b175040bad GIT binary patch literal 18407 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 JBn46Y{s4xXro{jN diff --git a/client/resources/hardnested_tables/bitflip_0_0c0_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0c0_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..2d542516abf581ab8171fcecf5bd40d17d1bd607 GIT binary patch literal 15231 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0cc_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0cc_states.bin.bz2 deleted file mode 100644 index 38fc1e0aeb04221a6f2f8cd7fc34f59a21bdf331..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1614 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0d1_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0d1_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..0c9ca6ebd3b62b85fbf99c1cdb80cfc5465a89ec GIT binary patch literal 37196 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 OXZ#6&x8Ag^>3;#3G%1Gw literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0d3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0d3_states.bin.bz2 deleted file mode 100644 index cb9afb002e694c10a1d31d3a22625ab80daba6f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2082 zcmX|~%XEsJ(}TRot8z}U)lTnhtGdAK7Q?OO81a3m%F2Jhl&9P5l`26PJHl zvDa>5G2rjx%1#Lud~ggf6L5DC z>vDd${WvQe=*j%s_L<;r`@OZ-yl;dk)8r{=pb?`-IWFt%n~9&!{&2zDh$QZ3{ZMOt zH9LJgH~V5*FmV;0>{=uykm-|<%`?bC_bp;L$m6lF4WKjlB>g+HpovP#@yM$D1#Ln? zIBXL!al$s3XKTRD&-Xjm<)DF4md|f^sJVU*Win-)xayohpaVl}k~zRJPrC+XpvO#T zIo(sy^lLr(fb_JY@cbGB^AnT>QFtXZWhO|v%ZPK0qwmtgK}e&Hr}xZ7m6Kt%IhAP< zrCT)`b)wRS1r)eO&4I?0H8FHS^)=%yhmxj2(wmRD;#8a}ZPqa1_6l6zw{VS0dO}_e z+RQo~36JY6pmGtzQ5;9jiV#u{aO5fgmgEIcoRdwP01iZrC3`&4}b4!m`L$)35;Q&9HA3dt>qgX)=ku80aR z3CULbO2>}y&CVrwE40nDwNIPA8LEF4J-KjlY%SODOl2L|hsMoDf6J8bR{ixjCgLF` z1T$S*UyR~j-rFnu$-Re7Q%d(v?f#>stgtKG72eAAGITq|Lx1jW|5MObY!L2d+N}S&^VxRpgB?yQYFd@BRL_?6v84maXy>he zoVYpri?pm&#haLC@afV@gf`Eu{aWZTJqrFw&CfSA?lK2CS?us6Z~k2E}HSu9nGC}F88llUl%Sj*V0`HZ(D+F z{zLrDqhrwJmyyeNffDx0fj3ir+5V0-UmUGTd8GF@ZA>#HRMOs2SFWz4!^I^-=&Oe9 zw1}I&@}HHdH2ZF2(|h)*uVC12NmCAYGRXu}i+;+C5dEAY{s?j8as)n{Zs5WYSEnF7s2LO5^gaQtK57g(7RitY zqhM9Qo;%kdQB{}A;LWMa4 zPNgT$H=Q_rnv%3B6kZ{!vxqoClEN9EIH9M%<4tT47i!?ks@Ua&q_1 zFCNp|V_UeA6V7gvlO@Ns%nM3cqjFXm@)s2{PCKM9j`mYJWst{#0=U8}M_iz)P-WpU z7|^FX#?8Y-b2HuH0+k&+Vyf)|YJNFzc-SnEl#22!$kW?=Qbx-w=%NPZWd+6f`Fy` zMfLDn-fL;23uKarizA`E706#tZNcL17M2QJ*8;Hf2a^-*^H0{>csD%_xYE9ewF^RC yndE-HRDrCcg!B;YZx$E?NwzG)#Olxrn$(Hivxow>eGI>;yqlQvv%mj0Y4rc(6RM2> diff --git a/client/resources/hardnested_tables/bitflip_0_0d3_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0d3_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..dcf6b9deb2eb8d00d0c1a047da227ae71b6af4fb GIT binary patch literal 22943 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0d5_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0d5_states.bin.bz2 deleted file mode 100644 index ae6e859a852ad98d1948f29dfcdd3a1f87f102a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2460 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 NE`SoQn#SkO`Cpxp%0>VH literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0d7_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0d7_states.bin.bz2 deleted file mode 100644 index 90c5626138b4bc1800acefa498926d675510c665..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1352 zcmV-O1-JS_T4*^jL0KkKS*c#7asUt}|Np~X9UbwXuRRF3;~$8Tz#qUJRS|+6T?l}H z062g_Xo=tn-v9sr00000000DV0MHr+fCidm02(yN0MU~K1|R?q02%{8&;Zj+fCEOE z02(r2fW!a+zym;N8UPw;kN{}YAOl8B5Ey^}H~?r313&{!G5`%4WB_Q%f&&l$2LKHL zplASTra%FsOn?m;FhF7e04XXW1gDZSMK%-Kb}RjXh6MlW2`IQ`CB7 z#GkfN0rKS~FJl!~qK`z&9^yUY9-2H6UdlZ2FsBGSfz)902fn_SLUbz(7(50adDuF- zJ;(hzosQ9w@R^KoFLZxc#pW(XNcd3l1Cz}M1xpN)^OCt0k%IUas?7U`vSsQnzl_aQp`j2T|02gP`GE>4(662Xg99Z0eVSW$~_y@egg$nCP+g1Ne>!a3=y} zc9*Km{43~8od9%ITqW|jP7|X1=3lYNej$nUnON>eh*PbKrv_XO!xmjvDTgW5FlFGlGZ$eyi-dSAeMflhF<|KE zccv^Irz4Y*cP@#BIA!&*(6Hp4R|Yt6a_Vs4#!Sv!I4S4@z)WC2Qo{QK0oXV``1gmj zavm{ur+If7dYW@U`3uBA&Px~qYea+T@>7or&8E*4f;x~>-sgN88eF~Z8>m+3B5 z!Jil9<;jkW{I6BzduQQxyHBuP%k>V99x}xTn}mNi}zIUS&N4cY@^N| zB6UT1R#fRF>s8S%M&qm3?n0|bzc(v?~&ex-Yc+vwR_IzfgTBU zTr2b(uaL>g7m-(deF^pp#RQe8IWb&6$m(KJZ>EL+RkTS{UzN3Sp zPOI*|ca-PwerHnAdWYGp1 zsAS5pWMpAtm?JWlGMF-ktXj!NW=vREg2ouk$uPl|WW>tCF@<9WRtqr3MU1RqOk*&Z z$uh}f6!mP?vW-!Gpe;0B^ KI8czOUZrwNNMVuy diff --git a/client/resources/hardnested_tables/bitflip_0_0d7_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0d7_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..400120c8fe30437f1e8c8ec33ea81abcf10a8ee7 GIT binary patch literal 16061 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 U|IE?+74w}agwN*(zrOFk0OE`y_y7O^ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0db_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0db_states.bin.bz2 deleted file mode 100644 index 353c48c88208403f0cfd3208d24d7edde9bed999..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1444 zcmV;V1zY+;T4*^jL0KkKStIjv)&K_ffB*GYLAQzYK^#C45D)+mKmY-l0r6lJKm<@Z z0Dy=9L)qX9UjP6A00000000004rs}VfC-4ejW8g@V3{xo!P2<#9)~)2*9MI zh>7U~L8Uz>qe<#)C~4%$s69N~ET%y=rg1jJv8 zE)=+taVyqPtLy~-l!!45D;82%CIc9zDVAU{OcM(#hDJ)oD8Ry)uohueCKx1-*SYqd zXPEUIaOnOo;CK^;DTk?e7w%qTK2q*So!m~wcO5aAXSmF`anPNXI$_|ulg0KdJ_pP* z*m)T+%3~P7_79x+PeUxi_KTyj?3u;>XX1XRO1qBcTt6}SuNCyC{+>@0#oc@7)UT|5 zqs3n-e52h%-+2|}dx7ztjt_}DoJZ{CxK@Z+x)nCSo&XC{hnuZ?zs5Z@?N*|JH4m2&uP)c{x4F`w0@7d ze8-A-nL9CjDSS(TlZEa+CHu!0Vcj|Grtmnsot=kEhZ)$*k29rv$7XbW3D|V$-I>N8 zQ^C=nFyp(}4@?MEi_X0UUXkwu$na-( zWz(aHV+>`6STSHT46wW-^&f86zyL#w#WkF;+#BGcuV>7YQ9OW-}?4 zSz^q%QIeB_bhmE}0fGmJArm!evZmWLPs9jthV~Rl^2jDqJFTz|58` z7&3HH=~QB~3|3WwWmu_(8I_rgt|})}8G^Vmm@Hrz#bnDcafM?mj7d0UDbp*D{}*yaI8cxy^K;hM{h`wU diff --git a/client/resources/hardnested_tables/bitflip_0_0db_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0db_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..d89176694a8af46986518d0f2970ef9de7e9682a GIT binary patch literal 15340 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 Axc~qF literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0dd_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0dd_states.bin.bz2 deleted file mode 100644 index 2d2e1970706f031b6d3402a49d506a482bc3fc07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1792 zcmV+b2mkm&T4*^jL0KkKSr+e4tN<5A|NsA0etZ#8Fw_@ea4}E-7hs0g1OO30fCQEx z00I(9kDL#J-0U<$u9@OU)-sq{9yvnVE~^98Nt8(!WUm z(Cl8Pq`f8JyDub}vkyPbz}#p_%=Un?#T{g<$MmL9>!-W?7f zz(0V)?hY<9`$yV86W9l_dxiSR@SbON`4$!L6YvjlV)+X%GIHofYn8J^_zoqosT=BaVV>3UjIy1<;xT1~ zkHlEKkn}vCBNK~*i!4@8F@w-uJe+5>(DWUgN%9`oi=)NhaX9x5JXc`zJRjbB-UpI+ z58Qn0`G>$iX!1V8`W|WPVLfXcSs9ByGojO>_AGIk?qxeL>4PlHA3^RozNh*>#rub~ z=^hD&E6sVhPbWtbd&B1=idZrn4*~c`%=!nsaPb~1CLHWM70ft12N~0`VbEqcTwr*e zIDV%S^Nu=ndA&#IKa_V~wtgY#AND#^%+LG30rZ^@Q1!nM_#AY;6V~GF$7kpn#yhSa zA?ag0TpU~+EO{N*@CR#SkG}sikA0>9c>>k4}je6JXJxBPSv+=6& zc^Lf9+WoK6`JaIBSJu9_6VS)Rd!D8l^^aNR$E@S@9UoBtn#1$Haniq;J1hMkmF!sd zJ%@GZUpnz$6Wm{vuga>wAyzCUk5cwM1I&ICi|SXoU(`RKaPU4=(ef|pU(9_cxcuwh zxV^*XV={lq@w49H`wwZ+{HLhyzLVH_4ukU-ydI@5>{wFboLo}iCGwBByR7WY`>xBy zj+bSadf4vE^#5;ns5_49_8(&Gc23FZ525zEo})jk2O=Ga?jZO`5nLIFkU$89VKE5; zXV4N5Z6Eo4u0Lb&zVghUb#e5aI(yDN3#S*xeFk3wWd29pcpO(3;XZZqr^J5|>QB1A zjXp*3zmY@YPpM@3Pt<)6xcHv4+L-pMj*0AC9+bLRvD3{vkKF8cKaGAvB>ak_^%r8x zEFa`DWri47V#0J>6BZ@JIALONSmAJF!!cMd@OTt>A7RAl;85Vo24FiG1N4|yV#Q*f zM~QICzVfeP6v=c)bHEo8Tx7Cg;JYSL@J<$90(t`OQIeS|zj&P};bfgBiGz%z$W-iB z6B4e);yVt+?o)#X8Cb?Us&`pTvNGtpE|u6kRg1FeS!YR$?~?4qjCdsAE)k0+1h|p@ zYbeH6GE8NdvErVQpXykqC5m~J$CFv!CzgN5*?Lk0|CaITn_fUg9^@e*7dJQtHOWkrTeG6#}* zJFYCTixjxbW?U?HIvh{hs6TR-0`7u5l1sn~h-DSU1(*`xiejO_I2iv_cq!nrvYtbS z7CkP92L}_2rIsccjOA+Fw4Mj;^J_Z85x+&;Nal!GP+z@V(HN`!v;nS zR!p23Tv=vb3b-!nbXe(^99&&GOtQ(B4l0+KL(-J)spL+B$R0)5c%CE3FzM07bnH%x zg3A%;$4peh3Gq-#nEtiE5$o1?1y4-v&G$A*I@2UGOpu`h{eM=xS2R! z1ITteyN=}XaoDkjJ3A#y_+pj*!c?Ows#Ep-swx%50;&Gtm6eRfOp+v@B19~NgmG3S zD7YlNiX`Zi;x#g$mH7BW*YmO~~6Oj20EEHJBv3gBUk ilQ_5ogCT{B7*-f#3QRF6j9JJ3#oUoj6eI<^)9V1_Kwu^S diff --git a/client/resources/hardnested_tables/bitflip_0_0dd_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0dd_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..9e7ae09257a2360e24323e133171e82dbe75cef2 GIT binary patch literal 17854 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0df_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0df_states.bin.bz2 deleted file mode 100644 index 14ca3fcdae9965c792aaddef798e1defde36cdb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1084 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0e4_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0e4_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..07135ccf2e2f291985cc0dafbd9b360add6b89b1 GIT binary patch literal 25961 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0f1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0f1_states.bin.bz2 deleted file mode 100644 index b263afc60d64c784d8f33710139047f9bba33d80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13180 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0f1_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0f1_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..f54d02f01b60a16f526c1c3173d0576cefa56280 GIT binary patch literal 50780 zcmeI53z!^LwWwEBSJ%|^bl09_CS>v;=`cxV!Z4Z12{A-O$_Mg{4CJ7opv@y>0t`tQ za&rQDQ(O$9KtM!A^lEz$9|&GNz=d#B+6xFGO89(%uQMEZ1R*3C0tO9r|Fx@U@-)Ix z&*we2=KGTFuE*YMuf5)Tt-Zbd=C_@(bnTJf75V3DzHyb@y)j7+eb|%#v!?6Ho-2Ej zL?lVt68|U zrRVOAu^e2CWPklqzI$UJek?|uB-!A3;zcrbO;@WvJzZOOV{JMX3H6y-@^&$?dKLJ&_KcBI z63)D`rz`~q3$`2wNSkIRNu(goD@KZfNXHNkKPW{Y?J`ol!o=<ww-#1}#2#r!Dz8 zpp4z0HU;2vMjA_8NX|7$DZY z(@dQcE*->636QletYfM8f?|rlZ478^pkouBoyoXc6(n~9_kpjCM_z>TVo&;HKLa-0 zR(a>44;x14wTU!~*Qw0XqqlaZ5v5F~&M5^`9k>Thf>_1L&D0xHje+dX5Pzaxt@D$9 zag`KZM(iXZq%+^h*lwN(WE2G0%)Pc2?l%}2wIHlXVMwoZn_g$ES?bI%0aGh&vq5P$ zPm~HjmN3>U^Fc80@TB+yN=h#pIfS`%dDLGCXxwi!@@DSm2Ejhh9ZsQL-dA)7TbVWHD!-QRGmJDdi}?*a!}ZpSphjTn zUSMLs#GC>~kUS4?Ivw!D=)-mJN%G&AP1;i;9Y4V5BDzhI9;D z+cR{`l)}RswI!NshkwQc;r&o;P8mhH7%G81V_}**lUKuLpIJE8#JQE`78x6=Y$*Q% z{^XUzLAnw#+#r5ZF4jB~H*{Fg5nDzEz+9_NkxTbEAbOh;F)%hM{?hThlG4~F2GCsy z>_nHKh|bR_Asld@QtHUxzLssINV5)Db79Y7l3b)if>oRiDQ6_<7?VxjCfT2PaJ;HW zP28IhbNfx_YpVzJ061N5B3v13^2PnH?1^RnHC>T-{d#2#TA)sHYq}u0eHf#&1!=u* zu_p_?>KU#pezO#+)~H9YEdg%QZ%((ZV$Y zrrOZ1?S_D${OYZSUykEx-YP3?wXSB+Cm6X7+>Ym=UMqWt7Kgn|)g+MKmUMzUDJ$NW z@X{6tqU;4xCsHI`{@rD$6=0Bm2O% z%60nysIp_wdz6vm-pkEfL07wxOBjs9=Q(r>J2GG$Cn^<8OxF7b83DJ8+T?#<1_<0c z-_(Lp1x0f|zi9pg1CZxJBQbMxqS8~$_1*p&&C<8F80kwM07TwcpsM;VIyr*j+y$^l zFp>xOesa>U?eNEs9po@@oXj9k0j7QxJ7Jy?>pP%%1ok>cy0LFu?vL)Nqsofb72ZS_ zi)bm+?B~PiJl~b@L=_hKKnhj`pv9!YDIAzi{>z1^+iPR0{f1&hYfiUc%cHzvz1_rn zqkQrCUBj}&f{@v2CLWoa$^YNAv@sCS^f5Z`IpZ?ZskBD8A<|=KF0(&29QwYCRFWJ* zw-9|Fe9sGQ`>IY$uw*Wfhb$d2esqzPe#7ie32NgJp^-3$TUXK7zC8UcBQIhl2FbyaivG)h?fiFrAFR$Jul3KjgmyE`DLrx zG0FJOtZ0*#)ZtpFObuaWh6H4AC3)U`hf}DOOI_sJrgh^>;N`woq?5wRIUS0AD0z*^3z%1 z@~aGOo_8tA<1BE8VrC-Z64*X!B|2%WuSUQT^Du2&idJPq0ifJbdYgbQEbNQ53(b|E zR^9@z>7cGJ`K8jut41a(h|bz#Zz04`8a5z;<>4(fJK^0!9kNH}Fl(qcL=s4>##6b9fsF)%`-g z5AeXvseC{F;xL*YO2utf??k*Vpy3fn*jITWL@I&4#45GFb9|j(FsS=DrQNz z0`mj&L00g4hH7X?Z3kcFW-~MfmQXTN3xWoFXNA4MJZS-s!B+<+$zrrF_jQQDacF6} z_$Y)3GP!?DR}lY0f$5RUp}N_CcTIvjlX&76dExQ~=+4L+FaR%K)x7*sZIWPlPMQX!$=5-p^&QocnGa)FAUdHJwR`9nVF%d)@1#KmA8g>{L^=4h zz@w@n)X@=O8cd$xCOSP%E=ctpBgIBXo*Q{oXDQavby-)g2mx68xkZJPxQJH4A;IaB zaGpN-DA3bMo=)OnPPUG~=^+osc{=P}VEWWQnF@5gSX|s>M>K$=Bv_DxK@xo5QG;JypE5RYgiAhw5H>+Dv@$$vEnQQYQ z0m$EsGxCgTVQ{Gysej^;ruLpjUlH|Q82LRw;Cv0aaC;aRO|9hkQFD=R;z51VV2zje zcZ8~onWvX|SS3gD25v6LUVT#e%J+sEz*B?iS6jHa8ci_<713eVyMxe9gWsPA)Iywx z6Tw;VVPptV3Fr1YJzHB9KSGUpgdL~?(gu}wD2~}bLuf!>ATG`sx=pSIdjrLT_&sZO zD4pioj-2;Pae1Kj7~VFbp>vADj+p?mC-m_CpgQ{TFZkN&_^NCU+=?-mFVqSUPsMa0 z&PyN<3tx$;8K1;|Aw=G(CQy0fG9y5@NpO!bzuV9Uea;wId!ZF4aqeat?TMXFFn*<+ zGv04xKD2R$S{x-45aAG_C?Pts1U8FACwS7(XRQf?C5PxxcgDklj*Yrw{1}c4{Np1j zc_ws-M2%3k2W$2;_W2QW`6;0hBMw6Qz% zVI*@4XuZlu^SFofco;8D<|^jKWf+z@W*0O%v&@N-!y0DhOWbAf(o(GD{PiBQ$TW+c z+lT?=5Dp&QB8g+?3w&-cvHE%wA@0cwc)t!Wc8)&&$sDxNp|OX2P@#E`*Bf};Wzsb2 z=V}y{w;%*{O3SpON~ASuK5nU$PR6(=d+s%m*HKdd?tT+5_&5Ut zWljPw=6+#t#~rIDZu zLC*rZnunl=rngIev{kGl-SMx{?|V_Hm7aHYArB_#?Dsu_?FF`fkMd*IutS}Bs`%8VQfouKQ&l8*r!$`BGCw0#cUJ&x4gmLuVWwXOjL8Kl>2PZl z;~7L2tX3~bx(_yT>lR=xSr!Ru#~_7)e+lC_kTG2Y3VMH#suY+GQ=8_GNnX_E4mr3O z=PfDI+X77FWVH7G;0}zdKiuSUHHVYs;iGkOYpDy-@lfGJgv?Rk_^fF(K*wiYXyi(e zRzwy|T*&7mN(D^F^i$JTR8;{(en63WF0$=OWcn6UJ0A)S8FN1`RqD90F%d>kL4s+# zX*{wJ!+E)>#rhP8ZBv-f$Br4g$a_ALDkyRBgx?Am(Z;_72OQ>K`wk=T$b~hHWgQLa z&*yVMhm{N#hCWg(e*_Xb8sw`0xB+XK0eSO~t;#0z?fh)!E=HQ0ypd*4!W0JNP-Wz8 zXX9wX;twTlA<`lKHl&bWhE{w=2d&y*2XmN7bCc&_#rG=MAM%IhdDVlAyb&2M9nh~| zofAe7v&;$w3r1Nf5KAlu*RYw9}K! z0UL``v+Fzp{%523fS@%I|4v7vt9NhgO-h9-a`Au`-dk0V`qO?dJX2F6SA7l8gf-`X zn^DYUMZ|OHY+t@JRjJ?wsPgx8ocxXPI!`n4nW}u2qanOj3EHF>BTnRI#-!8woQALV zX$fMnvhcTKXfuz2S)z#r<^hzn3g3ftS<C2+pAu9iHo7HVrv6z1G8Mhzwz*?np1%PE8g73G%i84Pc!jbp_$a&R%xb$ z9?K%NDn7fgPLmL*kt#%Vb4DTSu)^>8gh?YRj=NR6iUfp9CJlC!>UiGV8q7% zxl&D{Yf-6sm^jXVW(kIfF_?*K3GJO%nyTt6|z#J{ly-Y554({)v6AfNWC{a*88 zbQj@Rpp@J!0@^kNmNVhCg5A=&rt207uudQz9p#1aV0)ug0W4t!OBv3?)53U_i9e4tS*qW}Ybp%U zgWD8FzWSpTrQ;k^SJuei92=>x$ze?C6<}rqX3$2}7r)08EQP%#rWu<+ZOPJ+D*lkW z#ZnkI;#$n29WZU9@-Vup-LFHgJ~Lpo9KaS*O_Gc?@)BOilQW<}UMVNOGErIHX5to_ zb!PGX2T&^Loyb3pmR{H3uV*~0BFlJ7RMNIABzh;`WJ-2dGca(oG}#$d16b|R@|HS* zY*#wa*@UMVna1tZ9FIdd^vjTTgBc217$5j(rgJq7%K+A?Cb*nernT zo{hot`U8C5a|}L~4cuA{RWX=;HMPT1YK0VOqXHCm{a`hc=mb008mK^`qt&b~S>Z<- zE@!1B_KT4Z8}Y_1ew3ej=)=!Xl`0C!Cw_;Rl*6qxF*2D*Lo4U4)$xU(=DMASdIe#; z5FZiq3PEa?F?SKlk(}ZCGK1!hoi@KjItAnRXp8=ro*ZlH!Ha5Bn_vZe4&oJ}DQSvy4N~=KNb=PJYooQ73R9I&% zL;~=8i-=>0qZ)f3gTB@F8k!MCGYYbQNI+b26R^ln8nMW&AeJudsbWN|_5fhOvO7?X z6kv;<@i#f{mkMOO5C}X=!ycXuJ`*ALhnh6KCUSE@P3;a4snP1*XHEQuL00h@&Os1n zq)SiDy1Ybed>l*pvuzA0LKPf=?v6B=rScW;;Y2=Ew)SCQ#_vQ-6xmzY+m#-?geYt;3N~n7k!-`_me_Q*{!C{gI8wrRZPl@_M z2*LXm0&CvMtfE|EqEdq*MdRr2)Hr$=9b+n|8QxhLR#DCfwX1mrFG8ba$IkUV&HLIh z`Rff`L6kE~b-a$+GL7b?%UX!D2Q@~k-axfO?I;@`fJHsXQrDhx?P1&pN_y0di6BGC z18FJQPe}se{%3HrQ}`X^Hf+U4KP44EuRZ!6Cm5zK9B`rLIgRZOQqMxpf$S~-7Y=Jl zq4dM9a|`E4*bB)0YWkL?!4kG6`NT;AKL_{NZ{uJcnj3Z@kZ*HSmQBOj8o30ZuV>~(@qAh~AVfP{IEkIbm zf~TLQy(K<)jY~9r2s~AHB6v$P?ld|hP_ha;`97%LEo)~0l%}DJ0+Geq=hT@3DJ0$1 zB!@t%i6(Af>1(bY&Zavqpu0#$agQio2$wW#1k8>*P4{7G6`qOlKFCN2;|5?r0XxU? zM)^-={}33Gl1kH%c><0)d zW8T&F#aU3cw|pQY*Dhulx+eRHFB5r0v|Kk};!ndTH!fC=`J$1}-eIDi`QQWKog5>5 zH$jPwP>!rhy#b>6n^@>}up?JZ4x-^S$9UB!Kx1hPmf9&}XTOG2Hm<#b2FZmze#_uJ7D#LP51;b)-|a2qJPuJ zX{}v7x*eT^Zl+?_9G-Y|yRM_|;1|q5;jyIHm_~z#GkNAf0ITr{e&Uk8bJbg*vKWvSQC8&tbY_4{l_`zBQm@2-OFI-#eenX81K@f3p?tjZMtw*L;#A@2&;`Ut~7>n zyoryQg}ctG7%E7PN0x8bN+PNZ8J?NUwA#?Z$$z(o z>joJLGZQ1VWf|{)3=}7R!ymg-nWXF0u``d`9Y{AC@spW;d=7D3L}b3*?*j`<=j&S@ z=)>qpa}Q*Y^(`05X<51sX~)>IMISdGZZ8q_brXYP7$$ zdI7EhNQe))l`oI0zwyeh;`^MsO8}Bc{UZsLSLysm3~_jEps)g~W*RLp{Igafq^FUY zjtJ05^>9w5qn4Xyuj?v<>ISfwhu1a0X0ypPoAOc`c^CgQd9b4RT989p;$YDD`zVwCAutG7`iO1{0pk3BOq`T>%PZQiB%UtX^aXorPx z&}F%iA`7)j+LDQkqQTzRJTbd&s>@kULl`6b!zsY)H^)457|Rf!sFxtbvawic46009 zV-r{b6^*ChVLhhwp{}ut>yf30`%*IHdeqor`Wun#%5Zl5;bX9dP3DP|g!FGrSZx8L zZy7E$2#5v|mr``AM|Y4uvjw$9tE!5MX&{h`+e|dM0g_M~)TXv-oUp#oi&DQw(av9e zX}3^2-S0n5=QchK6y1lL9W4rDNOd6=(*}Gn!MNMQa&I1fRH?|yLk&s2>#}bSv4#FY z$LK_~bud<_RW+k7JiN|zUn{@=h|Bm_UHbhP5Q2!Gns_SUA-Q%={*Om(1#sA1uSPgi}}fg5Ea7kgiAsILpl zA)q#(NnIBnUTny5?I^4(mruJW459A6&|nJz;1L91=d#`MhzMd77C<^{EtEGFqz*>U~i`RLQaWGY3BlNn5?$R1lCA7|T`#c=^H*aPPLT5XTI> zVF0p)mz^t+=^I|dqQVCOVAs`zRZAf0N9t@nMknDxE8WJ1Rq)%|&3YqKx3>j_y9RiR zf0r`*d0~eB#hoaVuH_g-9zFPfymJw=Sf(co>R*@fnoFbmTWD%iu%i^6D z5JFwzD$fAbfNzujDK{R*A4>4J*56?NUMz8gyd$Flnc(qYSu;PH@641-(%WG;|bB>!yM9XtKyDA zpdNzedl1CE8TfyAePJCmN=+QL3XKt>B-rdprynzCE>QWa!^A^$E&7gIb^_Ns( z-3|gz)OfHik4y0x6@dI9U#Xr+b=08tjd$SkW*IbGN`?nd$7o|L4>GB0ygkVG zJ+Gozy?8Rv>{iL}=#m|5HJxDE>BbUu^Z0;0^_jO?@-MGs2rAzV(HUt3aL;uNga_i8 zmfV;8`8o!Y$^7#7DK*8n+jAX5u}lsH3JWyvp^hOWqbe2BC;A$4iYpHfBerccL;8}!7Cs3w<&j6XynHX zdC#Q|#rP%@FKx&Q9kN0PWMWq6fRxP&9jyM^u;;*5R_Kt1P*@wz3LUaS2erquLWiu- z0b3Fq%frvfuf;Fujonz1oa9_ zQkv-QvG(xyv{XU)hV;)0vgHb0QOTAoSShRT!-QX%EmzccX3CZ;&Q+=PUv*z5uNG6! zQ!HN$^&TW@x%6E6>giVB~gFJF10EmPlYHi9$5H z>@d4__y=Vk7DU;bq|E!Zt0}r-bx^+3p<6h`!s1xSHmbL38um>-H*RC;(Ak$HZ& zi`=9JwNb?p-^Nm6Zh*QzeKI0RjBU@tnEb7vz8(!6th8%6icf-pRzjvpLTO3L^P~z9 z2y$uF-{2P5erk%{Nu%bFYe^m8J2O@2@YdqlTLJcixdBxnK9_H(t&^9aaHwpF2hpMWV)ODaP&2Bdn{F`}JiI z%-nqwY@AAG%NbZYZ_9l4a2h&V_ZBJ0F+N$;kxtY{z}W1SB>8II9lt?7du8(d*tAI9 z9B^492{_D3x90YelBqeqT|Vgswa0wWJK zA@p7P&g~2wyi}8ftb+1!Jadu`jDfmOr`aF{TXgCszYPvL&D74)G)5AY$UQiRe%a}! zcG{>yS#t}&N@wcE=bojm9pv?EN+LBcp)s{fn!x=?Rl9j~5&4mf^YyrTc0Jo=!Y9-B zZl&#-{zT%UOJQft*|of#*$rNX6HW&eijuW_J`U0V@-sPShvcvv{Y2qenn&PTk3>}XY z!4J^R>@*uqcQ)B`5j=eTg^iHk3uHysKAZP8-5l0PI1bp;C9mK}px}^#k}ok9!nE#( z!D54vjSFm|WT1(XLG%rn0sXssQrgayDSt`zyIc!4KMgiNaU_J1e3JaB#bNwq3Q?#m zzg)k`jf23al}(?0dbmm*tmUD-kpwcEMwZv&6z{on$W4k$m{FL5+^bislRXLsAIH$nEz)Wg(5#gV`8lDy37TUP--H4F zmnE9Lrpk3Tgp=Vq6)54Gk1*fL*wbH6*4ckT@w%2wXa%7riD^Z2d6RKecy1|Hykgly z2&%Bq#MHz298fA?^)bE_>^jQLsJ)L)gS&aX%H4X^$&)lj8GN5^LeLA1w@Impn6eG1 zvZD^o+7LTbn8YnK!3suvGEmejOvt)cv}tw8BKQOeuzOia-mi2PtDVJ|jHd*>;QU6* zL6TfBbVyoNGGs)nO8jl6Iuo7QcdTuVM09l20f&+ObrD|K1^~82sff6Fjk*h@6sMq$ zNbdOqQ%8g27~BRE?f*7L(U?~H=eLAa2y6#!RQn}LcZWT&*s}^;swN`GI<2;V1V7r% z9&(KK*i*D+DXvSX8#cX(@kZ~eWM)uB0zQtPW8zm;aDD;2-Ar}(W^@WLZ@q^B^BLOG z;8(T8MzwhfSZTXx$sc;x`fiu4Tp&m-2lc|CL^A|=L6CVD#*vpX3E8z9VS_3Dcx`3~-Pbe!n;-?m=qDP=i{`r`9 z!wJR%JYo}!L3zw|caf>Rk83&RW2c>`Ai-Gaf_5llwuUAJ2mN{p@~|Z)UmL~lA)&-6 zpZH9|LywKTm2Nt9JNLTxUS(3>bZVVN<7l>)>HwPA)VL3ravsR0&(~SLASHlNP>u@6 z(=nnxNERPc8nI6gVl4g<)ZaVD)XwD{-E(RQ&-HGhmL0env0Dz({c9p+RNZ~5R)kwi z4DuMItv8dV*~K4L6+Zd--s!$=lyY6+;3HyOo$Q-m{pQE8C%N z=6&LFKI@{@kyE#qm;9TKcpFyZla#$|p|k|@33+J`r6uVGA3d5;sd*JwGo(ojsZF7z zwgiOG>BTJ?*||87FNHDIfKWK$hjJ0^m&;824Vu2IBZyF{-{3u@*^UQeP){H=f0Nzg zK~K@J`GaiI8PjUoNolXAVwi~Xt6dGC*LEg`-@G2ep|&SG5d+GG9{%4w5rh3?(mnOC z%iMmPiqmv+>pdQVF~DXy2vKVIVcqySm4j%7?1&2r2?lnlaLJChu$z?pwB4_@7KiQ) zRo369sxtYCEqu8jf%%}45?SUg(9qx0xfRjR5zfQ)@7bvpt5N;vzg;Wdvr{XudAi18 zYcEotL`{Y4)QZ1dt%skTT7eyIqdwWG71^m3NF3rD)7PqpLnVK9Y6UjLYE1p?)CwEi z*Cl{)Z04XFha*uxfSrFTA-LuI#NQ`Smz`RXom!EdTA}L)M`Da#raY0IT9KVvk)2vm z-$d$#bX$(>)C&C6?9__v)QarXijmdnzq`br?9>XoQ8Ak+QTDLw*>&s=s2%{@H)W?* zWT#eSr&eUAR**|{zD*F!POZpJtymdW$;~4tkl7WT#eSr&eUARxCqNK9ikVk)2wRomzoTUWT#e;4x61?@%ok#vQsPMU{0;-)e_O{)QT0j zr|k&V?9>X$POYF0J3F-k>tdRk7BPHr3)>X*YMHKX`{#C(5J(|#c4`Gx-RGu-+N_kG z$eQR&oNIEnmLdF?-UiCOn*EVD6P9}IDwXROdvcMtkL>M?@*CJxV5c+6Z$RAc?Tqr{ zG+cNyBuH8M@fWjmR45g45`Wde5 zcQl3VFzz>5p+i>akQF*e>uUD9VdH}e`;caZ4q2f?R_O2_+rX4q!X^BB{TrCdXBX;b zI`vJM)wXhsTJ8F+ep;z z?2zqzdk{_1&GqX_kK9&giYnn+>x4jeLv_*QP5+_YnX*H+HzR8*x)XR@Y$}xTz+05|NpsMk)2wRE|Zj#gxw{xQ!5v(jJHt&%2YxAo)r%_wS1x`#aAn{s;|k;4FoVJ9|EQ5md)NQt zZ2Zc(+{{b27`fMf*;>N5^ys6R%P6_fpLvlnkXyoNZpl5L+kdg-f|hY%iy=e$&#M?b zaO<3qkprk04o2pHq~+JY_)B@PVE*f`{^7y$qby0u)J(l8QvZyd5MVwR&j`=)%D;=Ebl@BkK1|a-WnEw2vndC-p{lwra z$6jQ7EzZi0EeQTQ*ED;D@yW=`<&~gaVlGk-(DUyWF@bdwe#X_+__J-d4*5T}QPjQV zclTZ#k?gk}6KxHydnQEA%0<(AiczH+bef`ap7 z(Pygu9wrAMaMDtOc|o_=qfJ-j0V^cxgvikfC_AkbX&$CY0>LXlI|oEzGcy}-+ho80 zJMCB+dKa9{7Wm`7Rqs}yEm`V#GL-pq{-8IYdQJI7dYmj=_KC|MSJN$r?Iu}Glmm|{ zR2tf`viwqJ_2P|Q`?Y|#(VgVikO5WXAWyh)cXB_39q*lV&pl(WMVW}vckl0AkS69N zgzqJl+h+4#bnFMTihAEx_*Lun>50o;|7UFsO88IJNA*MRe2R-Bc6KhK=04 zQ9)7NE#b$wn57USBC%y;Dp*~zN9$^+vpI20SMytw{citi4 z7$PI-xb~~N+Hd{eye~dRSCe;b1u`(XfwvL958wt$M5o`gS5k{80rwW?0E7BI{N6)L zBzdwqm)@9aPqv&&y80uC!~oAkpsRy@r*aQohsd1q1**CL4vc1KXc`lJD4nC%NU{*%IvoBrol%ijV{IESsd~ zhDMRcH93Y+pFwRKQTd!w4qR)a6kweI0M**lu0#D8@E++>CH?WY`KM=-F!!bOi>4dX zFD4GYP~_!-Y-wrz|FkyJ4`3{e?N*yh#l+^eC1avPtVbw2Kh=vxqq{r#Iq}_5nX9}& zR@h{YGTEK~em6t#>g@2AV>@w)|`P0KG1jnSbAnfCisAEe$b#P8MKNG(=> zQ%Z*W2tx?JQ~6xU{B~&eHT`8(S@#^XfUGX858m}x|5A-83hVB?etx_APtU8yAj6Q* z0m$U@-caF8h9^A#&2J(CS3pU_AGS8y}ukAo)Ms5lx6@T*A2J zKW%K74p)s#dbcK8p5`W(t($E<^)n)7+U}B)E%ZHIg*~Lj+2*5Ngga<(kkP>tOU$^r zzpnCMEBHtnkRkUcgzN5hR6?0LTUPm!DcH`nf-^y*LvE7{FIR|DyWAd>2$Ogvtpu0K zI&yaT5l!W~n=Js4;k{6OdObg=aj1n`hp$|&)u3G~Iw~GH0*IjHa%DHApM}w2LhLU9 zyC;->I2McA*>{{BSe%9wXn-Vj3VB&&r8k7^ih9rva;LP1oJ2Kr!b+3YgNls2<_LOH zNm*cHBrypl68k-BN2ov;x4}5(_Num>t~#xFWmC4K5I<#!m;ef(6iMMyt_@|Dya^Xz zpisPQ+cvIg5T}avUypL~IIIBv*{eD5Ea-GPO1now#qcsuZGr8ixT(U=>(C-yVQ(cB^lcuFMS%zVB?2A43{kPB$N_ z+xO=ofVt&mj(@C-i1ho1N$Gd9FTb=AkKeKaFzfAGr0s24Gx30Fn!l(lQDB{y;Lj8N zLDTJ9W*)qnS4xh4dbn^{JFcvB3v5ck`NJoiCM@uU$GLFK>`c}ONw8eZl9AwS1I;!oG^9f0ApCv|eJ zT87nLwUI({T((r3!yN@MIo}jCg>Wi7`S1ukGtACf1nGdEPwiIC2b2Cu*p44W;gooz z1A8if4RQ5bqp_6Pyc~CTXOh>4L zQP4?jQ2w}uJDouK%FD-Q?DJ>ttg!ER3*Pw$C9j@hS3=zAc%`OK~lo+i8U5}K~;e#1AH?VQJZA8Rg zoN3P_o@8H^_{e&$Ucns>7;fjG6G}+6J&G#H=eWbOBdUNOv)K>&vpPvub!M|o)@o0K zy+kxC%1P&%!cL7tf(9J!)x6djwI&KlOJzWAD7(~p7=i)pk!l+e+DxHrhGWsXu#H~q z*GTyYcZR)SZ(--%7#JAb@?Yv~%eF~^@Dgm(cv>}qh=o@Rkpv3M1)0;6*H^jZ)H-q* z#ME6oKqYFKDZcMdXZdIzh>?w54$mMw6&}47a7%NSYO_e3OW3o>PlHBPP*c{(k1$ea|la&T3rie4a$~y zbHKZVj8l!6M*#dr&AFzyUI=tO7u-~ZwOl_ke88e)q;^7^lLxx%_#+SxRiHXBfS8^E zUq0**-1K_WF)I;vper$}2oeBJ9JfHYMiZc8!q_S>WWH(*88%w{LuHs775V|M6QS0- zg4;n`F^2;b^W?CDR45SAlEb$H-ar&oW6s;4N7rpy@7jy`v-uPeg6ukx<^b{Yg99Qv z!m(o>G*C5bRrM(yO79Mvtz7-5eS%4C_j#nr1ut;k-K!@G9rRZ4&=(Hmk;Z)ms*s!ndRUC~B!IMRs zQ<26<>y~h}0uBDn&n!^7Od*4`Kzo4#hbgCublpmrd0=2u3%ffM;;CbFlmj5#o{r2w zGE8h85@lqbio|6REB&;1S}%6us-RVy!&5Y|4Njv@V?ifJa*pfJ3D_yau{BMI2Oi16 z+jwk4l-l&7@mWr}DWRfwsm&fNx%Y|x)we!`A< ow8oV1OGZIe1>(AJr|iP>-YQ|NmvNHv|CDdIRr%S}|9_JI146^F6951J diff --git a/client/resources/hardnested_tables/bitflip_0_0f3_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0f3_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..f9141026d8223634391d330dd648e03e393d4421 GIT binary patch literal 31642 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0f5_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0f5_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..daee6304420f5bb71f8f83bde161fcd5aac784b0 GIT binary patch literal 46378 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 G{r?XGaJUIKtY%*V4-w24Sqlil!jBeZPnMKmK0- zr~dFq8GI5GHDXnf-8PnqzWR14J1INq?>XRCIVr59?87WpQv-{Ym(60Ouz+Rm3D*C{ z|Mk*0ZWMK=e~#;a|M{P~!_lv4 zTOJlCJ*kt0TZe1a4pnqdV96m@+hiM zz?Y9py}+UPr-ix@qq%(CyHWn^i)mGMuJ_&VjoVO&+2Ci)?Le=mO{G^ZBMT>ruF?} zZR0wm*}X*3Dl_lvjhZcY^{BI3tD&8snF)fJ#!6KyZFL>5ZVWTn2w zl)HTYs_V#VVYm_nD=VPEzqPmU*s#M?wYaprgZB`SfADG7&)@Hx_K&+JBp35`PZYm+ zd%S#mZ`^h3!^4UFMeAEGKe_`)c#Ui{BA8j*t3o}x^;m!W)nIni#5Ggrt^3Kn9R#v1 z+4*#3kpA&~dFRp<_W9`6``<)Yrjm=l-f9`tf4?z&`O3`jW{k0fqMI@Lr}xseBVDIx z{#`j+I6B-eQ#y5Vj`cDX($5>O#Z?0xY%#6 zED*6#fImFvGeZ2U={-G(v^VIP6Q60g8Oo;ciYsLru@zOcOE4aaVW1weh){nWFj|9* zh^b#TafLB)(1XlI0GzC8h*zc-98mYA>QIqFGFDs6;r6TQa-$rsS!HZ8$OKKj6J-#L z+W>Nc$c>qb!A3`+-Zq zuz$Pu_1qm{tq@01k9;}iU>Iwl!5SFJ&t8@BF8GSVH%dwCisxjI>(HG0oh(m-on=ba zRcfDZLWW6#CJ`K@OQJStM4;2T+pSS!^ZD!1lC?{Q8YD2^x*$#N9T^DpsxFxk zDrccKec-fe6v9L&DW_PCV;BG^@qV}`a)tzTGC@ESCM&3cBhKc`{4~ym6%S7y(YPSN z1KPlsQAp6nR-BsilQFgeq~>BgA?3u3hZ41gjMZBNHXxC6|N;jkOX&-v#>;s zpoo*L$V}$@^vJjrHgXWEwE|F)kQU1?gOoQgjm6jqBI5`xf`Uef3g~Ed9wSIT=xg&y zBn%RtUgb4%`9{g88X=XVb^Hb=X8+4~NUCIwXkI>OjaF4T$YU?P)~R^~w-&`{e8KJKd6fFrs@&YbG5S;Cf+ zNVPabIc_Q&g=oFEv}w6RhEsm67PI_HME;9_XldAwsn`5b%0DB(?Q82a;1XJdz4IPe zE3HJD%yU~#>EVbr;*KiA9%FgtF=dcChHDyaF7865GT84HHCs5q^h%fp1*$jQZOe0r z`k$p8r&Z^(QvaHf*g_aLLPPYulU^i>8<^kz0!~b??&wRc?c+k_fG!@d=AY}BNs@X6 n8wDB7dQ*}>-La8dDN#>PtkTm%Ga&JadES36ws diff --git a/client/resources/hardnested_tables/bitflip_0_0f7_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0f7_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c1ff0c76b1c422380b72076af0ff248d9dd53d70 GIT binary patch literal 23053 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0f9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0f9_states.bin.bz2 deleted file mode 100644 index 476895cd19fe9e94779382d70fb4e6d41c175619..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3834 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0f9_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0f9_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..383b8a8f27f8aa4022cbd8ca86e8e22e139b1c53 GIT binary patch literal 35946 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0fb_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0fb_states.bin.bz2 deleted file mode 100644 index 39a913d6471d13473e8e60d8766208c0fcf912ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1940 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0fd_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0fd_states.bin.bz2 deleted file mode 100644 index ffc3cf53955d76b67b578c7051d0ac663f04f2b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2702 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0ff_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_0ff_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..86670f0b94be7a81d9985ba72d37880e61ee3f0b GIT binary patch literal 16786 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_104_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_104_states.bin.bz2 deleted file mode 100644 index a5c2ad9bf9770ff9abfbad766017373e701e7c70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3524 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 LggUuzyz>752-^lg diff --git a/client/resources/hardnested_tables/bitflip_0_104_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_104_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a52ca97705a1ff3008c28c6ef96bf96abeb703a2 GIT binary patch literal 25780 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 diff --git a/client/resources/hardnested_tables/bitflip_0_10c_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_10c_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..8c633bac5bc8218f3262bccd456e239cdc2cd2cd GIT binary patch literal 21042 zcmeI4e{7Xk8ONXZ{%R?=@6(mG>k9PVARuZT9jrohm>b;~3D7aZW<$W#*^Q~d6k)@O z@H!o-vutBCvzugM%$$jupjjsDqF#xAEE!w)Ly61KHIa;E5r(?xM8@%R-uM3K?Mh2y ziJF`@Y2Ww0=bY!9^L?K4eV%jfIX5wDWozH(4`o)1Z0~9OrAbS5v} zM#{HqtM?w21ahX3)~-R!e4O|9Wbz9nHWQ%;{DF#Z>eD$dlh1iEYVzKzk{-~4_?q)} zkYl0$@D!?8s!|)h4!k2go7YuRU(q1BMy2T!_604XT^DG=G~^_Z6Zsj z8npS88{po`eF>SjsLU{DR9b20Sq-gP|Eip69zW~%LMSWEJcDm8xsmD8c%&xDBDEDwNW zm?hUT7fDGC>R0%lQ15cT0AP!+B`eKWpVU5G1x!Kgn{>r?zmTwUb)In)Z-|6wbH^gwa20Li2m&9bcRrZ@MR1A`z+lst|4q=tGGFv6S zfzM=2{)lwio#ZdgXR9Cc9N3&t*-2S3n?uCDSJu!Ye$a&QqbhaldHD{q%r-3y-a(ap#uhHPUqV|7RgT)EFHj<(^cO*E06N7Tpvwb-3Sz((0|=}< zU_hYi)U&9aoGH3GRIC6Kuk9;-JO>K)`F4wPaTJ^?BR9N75780q++!d$-4a$oYMkQh zLIvH0Nm#3Isgyacvbsm5!7NeP2vd27EsqAhpc_9;XUturR#XviReQccv@=M*KRUU|d;~XZXepBxhN5*fo`Y1D5T#>>T!f z#N!6dEys-Zn>~nWw-3L-oI5G_J6dtSW$aNeSj2l#WeiIiS&SiALg}ptpllhS1rdb} zFY>Q()b%*@gOPcyb6%14iVn70So# zx2QS_7_0nTt9h&#*ctN%@djO}+hp5+CVH*fBl8(~A%sY}MrH6-mB&&9^&lNdwBg4J z$o+QPe;n_-L&gr|&O>fFK(~#xYJjsDo@L!ykS$S^qDA7vt#hy|UX2+m=H}l39W-n1 zg#!%Nc6Gei(FTjTE1~Y;@#BXu zggaDT!i23qbs=P=Y?#cB4;MnZ5R&-kzZOEiqVi|h{f#j>FI7kpm85K-!NiO8jVk8r zhQCTqWD=N9NUp@KEcUw6?fJMreYS4%$_D+U# z>1k~x4^`#!Mw#1PQ<~d-fJS%BK>`NRvFXw#cX;e`c!3{aF*}PRM~S_gB9Hx zY-9R$;gTmj%a}gA7WRfv-XpXb;l&GK+Q|^mPZlE#=F&kKfdBAeX&8Wk;MInI7oVek zTV)Gf?g^{=>#)emzOWNiBC_76!e%nM!$9ah4W20(w#p%JUW;cx1kTTu=KxHg3P)59 zU*Hb-(nYx66h#DXsPtiWe@f?nb`Z ztvtGwN4N55zu|h*tvtGw$LM=%xAN$|ybfnvm48pVFR$H~*OT_;wOe_t-lsEJ-?g}v zN4N6mRvz7+N4MwklE1fhdmh6e&+U0+(}&yh==MCiJ&$hB>H#+MTwx2PLa^6mnL;owjC-jPW}R?zDAuVCO79U||op z5C1_FciP&Wwk~>@J?^x%J8kVwTQeHm5B3x(!QLKXO_(6V{b0}k_Yd~Cl}ESo=vE%f UymlE^9(Sw?YZ0z}oA>_X-?ze2K>z>% literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_111_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_111_states.bin.bz2 deleted file mode 100644 index 8cd2e0ba04289538fd82541fe8ccda473d4fd259..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2568 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 LYtFu}t}Oc>T3VES diff --git a/client/resources/hardnested_tables/bitflip_0_111_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_111_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..199eb6377e4fe350b77184168eca251c07c65daa GIT binary patch literal 28974 zcmeI53zSvWd4Tu1ueo#P+`R`FV3-+T1{h|L83u%j7!VRLR70l?s%es<_zAkZQh%=ynwplz)QKwTf%UWa^dPlrSn` z?MAcHOX?0UnCS(fz%|)=dG;xzGNVlBEeoDa0=Yva{X4wW(}^j&`)gDFgrrfa>45UI z^30l~(FK)NUZzgzo8^|ZuL0xNMg=b!Pwg^FTdlWMnc0caT)We3_HrigO*Z|BTTQb% z!l>%&OhF}??-8T2_FX3bk_pp`jT*XEE`X*Wn+)C>rk7V4Rc{MS-fB8(TKKk~HL97r zhwbjaW28|HBTXSUT-Q|rVY(?~0GqBhVM8lWryFH12Ua&wp`dp()0*r(N1H83gagkmABF7X~=UNBs^Un zsfQ6+R{aGJt_FAN%}KMpYOHDZ(%ewV>j2WjytlKi9emrAQ8_!+bR@?Xi4<6CAVwo> z9h> zc_H5t`|m~_b#)~SxyjfDIPU#3t9d=hHwx#P?3l`R*i{goF+V|=1nxeETT+J^qo&$N zBjhGPgU3wWL^omdW2#ZTfBXLVD(+ioJ`qvq zAz595Y0Cbk3_8iEumbS8Mx746m6s~+^6OBb55968=)=%q(bcWO_eHY0(g#b_S!Kp# zmg@Wo@P3)ePl0j^z&rs@MQm=#E}R2O%_^;rMGR8i+L^B|-K>0cTBQ)}jv}}Qtyt30 zE171lQHQ&$XQ2e^WKHwzL{sn>ef&C+n{AH1|H(wHTwW$nRiYD)S-W@Q?*6G~m|8W= zPbkwnDrtHfM(U@}(CSPvgV^MtSqVt5(WpkxnHI6t=c9Cu5U3F_32;re>QgW`-gtA5 zGUf-W2EF5n1bUx>2{k_gkDM&>Q~E-sF^h%79Ia5Z43-4T8TPjMDy26i0X3Ot?sRf; z8Ta;>&_4pwLMO4{3D_D4y)eidxr9N^z6O|X(<>9|i}hQq4qLR;4YBs}NPONhzf6fu z3Dr7?xC21;CG53l0tkPr4pb0A&(s242v~KO=~Yaa5<3+Ud>dBRn19R6HTlM68ds%s zUrCmnJo^@|7IhfI+8|ct38A6NzRok?*2JvMK*NgEz8w9^UwZ^;QXhQi36xw`{za-){1u93x#!)kL2e# zmDGiWCadR|d{32L1CdTV(vfH{RQ$OK#<>~M+Tlp$WLpO_0g<&`6>!}UR@A_dNe>xy zUXE2^EJJS{4DB3PKjUC+_pgjP4c_2KIvuau?N1Sl>r1P{M*HKnLdR3jI7cB$IDIwf zAeWI`XSOalj4lGtk}XLloKPoWf1TyS+J$b)$L=i+4!!{p_ay-Q5+djL=3 zw-%dxa-C6CR`JXkCEs!w(=J0bj$u@vVA{bj@bK41hRvoU8op(2OL=ByD^P|n)!>12 z@E9W}ei!Um0ZQRi9{*Giw8W84JRi}aXv$-Q1oAfU;)!4flv>PP$D4W`0#zfR!?+|7 zfv5`3Uq1Jm{u;ZJ7hhfp@eg=kWs|k;3#g#1)a1AW{7#6;c z76-Ik2kn?yIbKbmhdYR4&^dx_yRYb|ERY=6`bM2 zAkQ^XF6N$mKSB{*qn{X<`Sp*q9M$F1*|+9{!8e#*6G$p zb0f0Ztmc~j?4OzZ*V8EVsSIvG%Zyp5Bw~&NwOQG$@^|*QDA`sAdF4M_Yw8i@&2^n- zr^@MU()5qKg?X_r>05!bgKx1Cfvv?}taSdz!ySRsNDVn zpif%jHrHg%M}JF@s2(Ve*Upxoezpcg-S9zqaL`| z-^q;|hxyI&Ku#~@Vj7Zot0RFTfkFT>D-m&2L9Y^~L@CvOm_mwyiCaWu5_(I*T$D%x zc(TCAOSJFx!6a)JrR?4$L}xKHl}FkeOJIINlG=4)0h{&r7X@r0V{Ko}eRjXn$IPB}K$ zlgl@yJR$RdH@=l6Jp__{CLa*{rE-pfgPEtT?eQN_{%%ERYZotF_Ka-=yzhT^Vd}>Z}1p{Ho(^eA_^X8c4qP+wWQ!Q|?YQVACLCE|Vch^?ql)a&&o}z#U<{h>HFde@zWnUM zR)T!{&vXcd0+(U7L!$jt$;Tt~hw1`ZUGT^OeDaLn=96cSHR>cJ<)HcG7UG${D4n#p zS^Amd0K>p$iyC3#qN0Sg2&R)h87yuvTbM9p%Fe(y1>|Eqi5Dc-+vY?4# zvG|m7zTn}M8JEITrRL!jssLC6(Xee1wXQI)Dsfbu14*FX?(3h3dFs{|F_b(oA5`mC z(c09f2Q-3IFc^+v+b7G4vrp&-H3(@U1eB}IIiIEiNdT*+U>Y&Cv-1tIP@~jgPWIHM&*gNI~IH}bZ1fa_FUo$*P9!E3!lbk$8o=K`s4G&g$rg7q#FbH^J{oJ+qruhSk zVo`5OVkO^nHY~R%nnE2CMu_hG6Awgo>0M+2fqtKVqW*bc|MbBMnfi<3nDlS3=nK&b zQri!;n%VxCC{<7sXpxNrc%w%nb3FkvJZAQ_ie?r+36md|He>3R8g=t|WrCG%m%nqS z@GNwZkf`xWnWeEC;$!^0by3NsoHP(%x+>WV+}vT*izsS8-zak@AtTC`{&C5WNa>|j z7vN7ytUXqXAt`jX<{IX*_P>mJLvTo&+pv(7TTJ-1Vc9<-K_rw`vsdc?BiaA5-=W^G zJZ1wAC}JvU=Ok3M)15`#x>xBYZY0~7M^O1h6kYy%5N9ED&3Iv9^L}-TGQX|Ok#51d zHLk*6<}T)aI!3Myf*6b*W z&3h(46da~XQB2~HMdEUv*Lm_bZx(iyOIHAF+dSAmFUbY*-8u7g#tSeI{TZ&D@9cEc zqC+MgR^oiH#xBA0{sKVXryrM<=siKnGP1}#=dAadr=(uyQEf;&xqch)xU7U-$cQtI z8e;eGoa<*KP@3Qy<_%Jls4I6p2A>G5`Wrw1wZUDvQ*pb*DWw!rQp{HIQP!cF2!g=0 zS2>@bk!r%55{?mKX3hpDQiY_%WQ0RKJo{@?s3EHJK`$WWsV1Bt4Lm0W4LpK`cB%2G zRG$v1&Z{r+D+AK+FvSwW>8>Id7o+=aT!UfNM>FP6TqA2wsxL>T#bIxH@kAowt;_= zEs=bDB#D^`w-(bIB4L8nQfu$=$WRQ`>Sp9*a6a}9g7@a33=`@zdy-ky>UzNvRnB+~ zn%sl}SDD{5q6B5@m~J6PQ6MSMMm9uqG~-`+lca68I)yu!!RZ zu8lBKQn;^(qTVk(8yHB`{`H5A%Wr`RLkyl1GNy z8_lMU;S|?ib|QKilkUOB9RW=dfVk%u_x$3XpSWf|QXN1c3UhndQwGUSh37SAe&x5c!%-5%wfz>sv+r;^3ngW1 zTZQ=1LC7W9enwj&cWTK1>|?J0)!5o+5X-(n>K9gSNS$K}!U5DT(}D_K!uP8GlM3da zt5iY%DA6~s)H8}z@ORvYHn?lK$rSw0(D&JI<5r|R(N9eOaR^Kso9pJcu${THxUqF{ zBoSp1k}jqU!~lP=E@p6wl`U?=IY2ag(V?0Jt@t6=#gq+_9?gNuy;N`Ld=38Ku~HY{ zJ$f(*D5cdtt=M#&{#UnorVpRig#=P#ORNA2+hBmoR^v>5o_|g;yWoDc$uet4@L~4Mo{DWJA??r}P96@SEPk+)hs74>wknQn z$>Ew0|KQ#s?3ht)P*E{MgrA_kS5ceDE+n zco-i%j1L~tFpLi#Qd9lFZ>@4NYk2O1gD?1&E@R-W384<5?K3U>O)!MwpO zyzj&Z595P}@xjCR;9-35(0S5$Q>biJh&P4C2M^9l;WtVvTveEcu zqiiXTUp5-QY}CDVj5kIMymHP(PrS;m*YeUpuXreVpg2+aOWgB|dwy}xFYftO8jnv@ z&o9m~;~X=7xeYH0`;h)ai}>InCo$rKhw8F8+Wx=UdpLan literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_113_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_113_states.bin.bz2 deleted file mode 100644 index c1b73e1cf088cb8bc3ffca8623eeeee29ff0bfc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1352 zcmV-O1-JS_T4*^jL0KkKSu##sT>umc|Np~X9UbwXuQ>>~;~$8Tz#qUJRS|$4T?hbx z062g_{E6TRzW@LL000000005N13+jR02*nK0BF-714c{`7=Qpc0B8*ZKm$!O01X;s z0BFgA0}ucQ01W}4XaH%ZKmnsnfDIWiKw0Hmmh5@d|gO_NAHJs{L+wHr~UK=gs9siCIP9;V7^?Iu&o zeK*sg0X{82_;Pya^~|yO5&XtIgm{r(aUQ6cQ-mIfbr?RN{A=fQCql5ngTP_~@Tge9U8kd!z9TUW(*ok9`jyIXxh7RIte}O)HUE7%zE!mS>pzhF@WJ1Kk-N zp?14jp6eVdhvYbLI*z0Jod*ihg7^1FM)JllzWbh$3>4oKIy?O1mH}L z()L-O;JoRRpbm!33U@EMhos2pPJ!TMV;LWW|Ui$il-07)M3G%a!IX0q>uT`@^)mRb@Ma&iy9~ z;7nhnWBf$z2aqtZ#U7GZ0l^*UaOfeIw!DSVjw{!|kIO?>ZJoaNw}UIb1GNgDwYQi!Q5_!<6cnGVoj(i?E%=!aNo}gS>W_uyk}g z(-scXk;%xrmqf!HGWuBPSaMFQgB&dMRNtYL;&WIn3$kMcgV+-7x0=6#_EhTs*H6hv$Fehpvi$!amBv%M2J}4^UpXm~=*1OqNP;v4$8h!zjz^ zqTwOH%PdP6lPfWqnPV!esZz-jpRrg_V{rtA)bg;fy;>aI&~%`pcDY zXXgDJxiQh7q3pb`zJGhQ+Ij`tz9G@W##uNH3D|op{MRR9;CpYjFR-VA%v?Bq@{de- ziPaVA4pn%`fs(|(V)+*bQvOvkV&NGvmL_8A7)D1_>c7!`r^fF>?-kfQ>i1pG0z4Ax zxL3k*zB4B%UPWG@!w$nNWtRsAM?mB_K2!ECtL0egyyKwc|5L$mU5V(bJ*2W1lrW~<9Ohib;9(YUtt6`JQHc?p<9>$If@V)%K5}3QB2E7ty4GrSzhas8lKSD}oATkOh&7 zVq`>PBABl?2wWt{RK;agVPd70P%M>Ul*$ZK6-y*!Rgr?GNXZseWlUL8)J90e%4&=m zOw3F&OktHWm6lAH!enBsS&@Ze$g->|%*Mrv%Sgr;$}AX6875372BBuDV+=7FG(m={ z88WOH85mfm2+XC7rVOF07P3*9lNJ^rv4%4;OfY4cF*2}>VOYVHg3K|IV=EXF7|bRz zOtM(TR!lL4hC*gc%2O;xF^r^TlCvu^V;N&GLoiIj#tE3S48kTbt1^`tj4?|e{x0N- KaG@Y%oVdDvZEi3C diff --git a/client/resources/hardnested_tables/bitflip_0_113_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_113_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..9b91cc4e26d819dfde2073da18bbe38bcbe12928 GIT binary patch literal 16061 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 diff --git a/client/resources/hardnested_tables/bitflip_0_115_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_115_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..062d0f4b86e489e5c118e5b9ce76f4d626a76fa3 GIT binary patch literal 35521 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 TKN;mMexQ(-;??n+3E%r)X2UIS literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_117_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_117_states.bin.bz2 deleted file mode 100644 index 87f7542d37b95ab83a16069c551561665b434711..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1888 zcmZ9~`%@DK0>JSg5?h=JWsz^V`l*@4~Vmk5ZX2#DDOAttx$Am+89^?tbIjzVp< zJYoWbZ7@JWGKH!Id_-!Kwa!F`TJl0j80<0aoHuuECEC^~RS>W0p~v0*df$KG^UHVd z;dgeTdq{zlTuc8+%{qE`J?4Xwt@r-!+%kE+C#f48-q;SZ;@Y!W+gNYhP20ly|8}-- z&`fPmBKX$!?JWLO9Hxjv9D+?#Y3&>Z%ZacYI5$a=G?j?3a0d$)B%eYyD&ie10nQR| zH~PU12&=w+U#0cz!pE^%Ja5h$&ij&#q?YE;Z=`^LtmMyn&1~Cl-_BlW-kdl-4ws^1$pa9IrimB4O}l zjiL8p319SMTO#N7=f4)0X5dU@$Cpp58!8qUH}gu)Q~LGw_clk8qKqAxJ`@lR&Jv85 z=@kGCWRbyg?;pik@Y08tU#gnCtC^B>R{vtiI zN*!H3ntUhrKHOIEbhu6ZWBHOa|8lxB{Yp1n)%k2fUMqS1eKG2|Jrd|OsWU%6nRuUi zSbMmo#8YbHu096E3=lC3tUC%=w zBrJrU7KIc~OSqlU5Uu^-sOW;T`sbY19h0jT;m^o&Nn2T0QxkA?SKq@Aj~ISv6g#344c4m5nI^{4S?>jA|f+`#sqnhH1E`HoC&}*UTsS#*#htdQ z=tq`p_4SuU-vEn&j^(t*r>X!%cr;o_FZ9#!+Y_eE=t@se*B8&bUtDqGT{yG-X50$h znB0sFjc_=??u)-!68D9W$$OkY-(Nm0j4s|SO^y|T&*Deh7wZE#Udf{}wpLyC-4cFg zvSwzf92-eB7>uvJ&nkHI2wT6^xx3D`gn53cI(=b&XhgZn6u-G$1kOCqPRL4rzl2`v zyBJw+Om0lEJh>h{lX~IYf;VE0%$>RO@5d2O+3Ng|`J@F{%Y5&-<(4G-#TQ?mKTvjP z1Qy_(>l6{mJ(8cn0pv+xX3WgA+=d z#vP92M7B{%tDOts9?-1@RSE{j9Fe6e2|z%EYTOQ0?f3QvMtQU;FF1!yABpov`GiN` z&>(>t(BMogKj+m3m#eMtyOaaXDk34rwrj7Baz79@@`17{jJWUJ%EKj0&s9Q&~q1;uv`TU;v>&CPY%QQ|>TZ zo_w02Dn&wTFGP|3VFsB)6+QW#B|`e|6iW`ju3F;j#Np!R(ch^Fi81mjX^Xt&Y?U?j*$x%tR6 zN)uWv*E*Tyd~40s%_WtFLH9Ar9miv@XqI;9-0Fmxp*CP=#*s?vfrT%)ck zU7r!(G0+96t{1T3D}X|)Hsd?EX#uesxSmhwP)A4+IprC<2jQ;pH5rES-@3S{-np7}Qe*O)o&q`YANcDr3;+NC diff --git a/client/resources/hardnested_tables/bitflip_0_117_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_117_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..8a5df1fc346bb866ba3491ba86f7bc16a626da9e GIT binary patch literal 21878 zcmeI4e~?{ub->SkyYJ;?^Y(i-?21cv^UEM4CYxPgoe;uiAELFmSvN~t+ZaPaiH4X2 zVuuPTBruHqp&Fi;5e%&94tiA26C&fpSyP*3-LEd)z z$p+C#X13cyR%3a$?vqB9$a`N$Z$aphXmz+Rq;DEyrmJMUKc{@>GCZ&m8Z&G|tQgdYoNS z?v8V9HfKe<_mbH}W1Q(#$pO95dr)!@Xk0T}rP)yNO&aF|b`5^BA;~&hK=WRebNwNW zb4SC{-a~6$7+2@t8y0R)h<^#teF@I@g!YG+4RlcBy2%jTT6yyyF`VexLNk-DvnREMD;A)LzIB>De89TGjI?1ux21C`@!}SrGA4v!-x6t^nPR^+S z_n&2{o&?>88R&}v;%??$5#;i-vRpow%xIu7@Hu0A2G&L69i>isqwW^8~j4SQ8)Ky8O1%rfckr z;RK)u!$uQTK=J2JnpFz0=*9)7(5r5f)_`6-mdZi|Dei0(bowo>q1we@BX;TPgsc+R@tOl<3aWMsmdSm@(*Jg ztG)K{QD8$=!l%%4h01EMGrDXc;8!$ex$*w*-8!u6rtZQ@K|}fyjhW$&WSxA67u4iC z7rC8_gZA9w1{s^}Ga*MuwIk|sLpdGHECk<;g{`7P0!hZ4SxkMEMW2UnZ9%o_-GK0N z3xFE6C{G~%E1hIesBeSObcd^v+M@=!W>>f)r+lN9qF!x~HKxIr(g66AD5iS_Fk3M5 z5^I;5%tOVQTQ#2cduYA?7<%XZ^Ptd1M{rkHyW<~Jxqg`&Vwv}EqpJo8%iPWnLj|qi zk-1BEibBE??JzPjFs}9vXi(UBks*LS-LMue-fK{6y68srv;3>~{sEN>09l|lV&wv^ z&KR+S*Kd}+iJudikU(kvY*^qi^7D~Z(Ju=4FXLX69#=9x%|*SJf`s2=+(XHWhEpdr z%C$O}od!Oec%FyXUE<<8RM_0`&S<(THR(`Oi|I7lTr-a~>w#q?8*|`)z<4+I>3uKu z0C}DMkhz!!>DOWnRyPH!D@A>HS@b=J3g969Nn`C1L+JzymxZbWf<`pMrn=`{3>V+@ z0~YeFNWk1oJe74btZ*p|%6wPp)z-0F*ljpLNn~E^L{Fbf^Y=a zXMx*z$QGthRG_pUaSS3rMh zcOqHS`UBcj2zG}(=a=cg)W6`@9~cED^a6hdc5oF4G(&2{s8*jhJ&0`kDnTepRJrn6 zng#)dC$)sY;^?b5(!*iRtHAL-NcE_INePS~=1S|sZvz21SAguoew9Ib-v%~)@ak56 zdxPSzTW@zUvpP}u`~9a}T*J^!uA@eWYUgTP*yK#cwWj{jwMKH*m|O2>1%3681s@n8 zA+ys7^vBOfUqE5j7DEx{W{xoo2ADDi=RezaLP>T)5cw0ok3o$r=fBJv5_OySGfy+x z)J~coh2WWstp}SvYW(%)3?vT)rmm>Zc7~un&YuW#?+ACZm;fOUgaRn#{Z8x18*SOW zHaxsH?ov6Y+q$vhfZ^>lnCRi)$5r00JR)-oZj60&vR1QyKTwa2sKTqr1}jNs&`)uK`2hZp?_!0Ev z*0_#HhiqD__uLynIruaed==DXf10?mpcVyqiH}Exa8r1)?YthS=-8ZuEl-Tn>WiJA zf^AE6SkSG7*m-1L;S!b2=c#C-~jZddGA)*{E7Iz8Q21$e|R?hN#Cz zL533VTb#@Q^Cy^%dX_?4xPkNhgSauj$O(#8|BxvH_?~C4#)e;j^fMZt!!%4C@nk@w z*+0y3-x|Nl2-vYtFm!&8$@_3=A^* zbb?{ffnF0wfHQ~gS#-a}!sM{cN!=+7nF#c2wyk&aG`jx~3&owUIck!Q*@ogsa1*CU`NAlLXL63E;H6}A%*qhx+Z=dc1M<~d@q>(x7Wa{#IR<%td2ZLYzl{$Svb7TW{$A>;5a}h#zwd=Yb4`FocZf@Dlb3d*0Hf98_BP{ zht%5MV0HdxH%N?~t!@oD-{IsP_6Q80Az?gdSLhMq=V8nDKgJ zoLcnVVjSC{K`_4^uFfaEJFMqPJsw+l|P# z+EqCv?6ys)*$MfQ&aVaFSHZyh3{kjgo7+UE1hb%NWeX~(ylA6lTj+mi>V=NzTyoP@ zo_rKHMrQtk~72Tlon&BuLZwnT@2d_cR3EEVakbfeDFQW*Td*UVg*hNm z3E_!u!nvk8{(N+WUFLEknHVP=ziERjU7~Vhn@zo3@6HgoUFyGE(a*orxa&%l-$m6D zg{=bmFFc3Z?sG_sEr_M{t7AfDa$hY6K{we;*!R{klMT4(8FR_DAHkT<%zIrCdJkue zE=wTA(qmF3RBXD*`-_}hukxd%Djy<74AJ@ZA$3Dkh5KUB%>nBp#DyUkFduUd^zOAh zuqCX`RN$0hHQ@yZ=2%C+1%md}KVCW$PMe@{t&{szJ`1k*(TiLD0>aDM!R+iqz(GKK zvbxsSE%x}E)5L$DuMYQko|fy%zU>zY4`9W%kpVpYH41e*NqRHab@PI-b*y~U#NK`sHF|(2J1Dm<;$T~yKqOW`idP+|ycD(@(@N$Q6x|5#}%|1Kar1@Da`&G29vJopj& zkEtp2<1oUt+!S<@)G7J;=x3&jUu*x(NuF*|c?T@~zf7J!g-=Nnr)lCeO`N8Q(~qZ# zQ~LyDaaWo+O%tc(NFw=36Q{r3iPJQ2E~|SQIGh*MrJb3#eWhkET? z|D1L%s8RVaFC*zdQaZPgCA1{|5{||f&rOc!Kp@ZbjcCtCl zEq|!oq4GYK`O7Z8Pg-Jl(0dNebNWVou6%f7NHKi<3um1PQ5o24WoQ1FouB`QIgp)I z$|#K5Zsi#MGb&%&uW?JYCwU+zzGtNA-^qULEoVQh^F5zQX=P2UN^br<6rQv&5dB#(G+UgAn+~PPG#6z&C zb*aie`{v$Cx^Vu;5H#76h?bM#BF{(mr;?<5LFFr5cG&vT8kj)$VwJxN4SPaqz-t$$ z?juKQUrp{`L_#s&uW?gS`iRIZ?em7NPL&PRlagaz6TXMufWrx86uE8iCaI_~Nu+hD zXr#n+?hHX{TUwV&JeAg^rgf}_q;;w3AM|hFOA;Rk(?96v zL+^d|<$01n)k*)LKTVvbf6z~X18Iyjae6kT7(Pv$j*d;=u!+;OF14%%Xhotb=Q7Z}UA9wQf# z>s`h;zgds^3FaNk4}Dh#SMFb}ezo+ka_$rSODg(DwVnn~??1`??&GNLEMA4f%==8Z zKlomuKT!Jz&h-K6Ug3Vyde0NNeg%bmB6-KOv3rXz5_gQQ z^^b7FqT#~Hd`bPzi0&CI$$Jy#4|sd(@qWeFd6A0`@_Xy{Iu-3^JtH2cL!!JL>D2bF zqdkk?8D%?x<`}ZV$Ie*0(C~M?%uX&2EU{TUMh^n$?{S{TLEv?9C%E=J&WD-U;&JU9 zd6!V}J3rL>ZpV6dA6fA;)IB5k4)gzK=y<20g!C+NWM(Y(9S283^(=9j?PWT!=)sm| z4~+L5Uy=LYwe^o{&O0U;uNC6qJKYW>_6NjA6tHAC9f#c?Y4MM?IC+PeWW$|DWpfS= z!;I+aSab}>3ycq9N9b8bGO?0lEX9ulxzzuM6Y!2YIv!6+`A?*GFH=9Lcn|!Y6!A0a zebeYV4fT`v21X2i`r$ z<6jEm_YZ-L$^EZmJ{J$H_MH#Tc^%8>Jx6%xAB4T&c`1D>3S3k1tD%?gFtE6~sdOLO ztNO&nC(2%6OX43Y@mb!?`>w0Wj*F_yJ&boU{|^r5tUHHt`p?+9ol~lL!{&XCrdK#r`Y58zH+`oRsCMZtvDNqzA$$w)nI{!T?k?iXEFZvR%M38E#f0cw z6BZ@JIALONSmAJF!!cMc3jgb|M`NHb#&k}ug$@j$W(0LI7s{)QoC))oR$|8zgA0km z84m-ByUU@Kb{D`|dDu)av377XCNRjuD}#mLodygT!r@&Qmw>MH#P1ScaaXYlWVkM) zE~Z{{fV>wOiz+NKVURpi#o2LXj98_{V>01mxac^aTA=@xE(P3zJJN@HC6gdJF9gb7 zgyCi21=$RuyOJlIPe@!4$xM}B%ucSVIu=RQJPaIV9RV()r(qP~P~aG>Cj%TMUB z9>rgNzk|~u^uJjUP`=GgU+LXp7OjAbO%Jd z$AQ?o7ohBR7ee6ktHpLss_s>g?k5X7-IdvPU7dpy46DIB!=mVnTr-P_lZB4)=N(SY zs_rL)j-`w-)tyWIikLE4h{Gb7vIMGOQmOW0MMeDsD=Qg{m{cNlAxx_%D9EHEin2g!Gji2g3QY>S&+(x6AY^|u#Af&U}V9QCRH%XF=Z@SRbwJ!DwY;h#fedd zC1qqX#gi+o*$5yKtc$yKoCffhr~w8qE>W50@7BaBNBW~d;sbw)+l;w z5t-tnS|3nFqE_wbpp-$4;A81bTV{|zZK)}uRg|iQR88XxiKpLx?%vJam;_PVj?;T* zl6&qwum63%^WU>sr8NcTUh>Qh(}`A(+0;qx9qk?3qGC0X*rMS9n=0BnY&wt0()weR z$-0P_S%oNVwk&?filZjZHdQkPw7!{DC=YeD)+p0<3sZO`+g24f2Zo00WU#fte5uN+ zQZ}J)HlLJLsMeyGrFAD>>|l!P!}%mDPt}F^0Xj@22;-lu%EL@btJvW(3I&ER#UA6$ z;XIWjZnc8)GI(29No@(`M9N4dL#l+ho-C%watzH(p=qFIQiaw{@)XerK;UAwLlv=b zupA?Vmhz{7GyiWAmkP6VG}>erts z`WWV#it^Q96{OhFLJ)38hco2}JA=@3BdQ9S%Je@Wz%~>f0gsb0tv(JE=Yt!KYZ?Zd zz_nIfh%CMUO)p}asP!+H2AnJmX?=@SjnK7@8eRSV7bs}T9>PgOFD zsW2N4o78R?S-8yUjuBQs_+muRMC3Hn8ZSqHAV_WObYlaPQ*&y)5*pV!8w}ClmxZjI zLac_VfD>HziVjlO2M_^FBeW7~A1!UK7qta2PgK-YpqH4wXx$H^g4nWcOhuEJ67C3c ze;OM4T}prEJ;VnAbfoDwG8l_)qxG4P(G)H{B?KjIw`$m4cp6iwJ^@-}I!aH3p~RVf zG!}$`3Wws^Ofyj%1L^kU3q7Nn$*urp`JieG#0#G&*uiVXVT%6X;Zy5TnD+&U5jA%_ zVLVuDaVyxn%219`#%bLK#?fM2t}w6*Q$EPBw61F))1(F63FxZUdNI@YppY^8rVJT@ zKC43B;Pu2enCj7InJY2aSP+hqr62e9fj?h^kp}7+Om*UZws)S4GAi?79@aLdGrbjm zW7-V9j9+Q}Q?Zk?jAq0n7kFEy$~N1_U%>XU<`HC_eJRt0S}#nQ!+oAEkMjCl*g8h3 z;l_QC*{Lw^e!84#?&Ez42t&+@(hz9>q+6MD6Xu885Ly=kbaow>T{=b&Q$Fu@Ds$+h`!HllEhYrSX-cBSfpgFd1auCKZPy$jEDKmWX9*xER6i$f2+9O`u@#oA z?g=W4HMB_V4PJ!T@Ej~LwzU%XH^s`ILcp0~jJQpyAQZP1lzpaPF@jd?z$k9UdPK!w zAguoZ;`Sffww?W8dMS#W|V~h46TJ_rbJ=g`a`9l}t~qVY+Jq+jk;*-~9x%_@H!v2G2sh&Gh^n zQ3r%^Lf0s#2@kt?wqSWrERzE&Sys2e-JepPNo5B&|aX<(t1Nik7J}ksBAyn%# zm@Wg4ZeZN+YVuq~*BT|Bmlo_^!}3EgCK!~VeE>ZKj3L52PZy3OXKm>R4yj^V-R7^f%9zAPk!zm}fWtgFBr7%;UKp{aur5bK(p ze)x}WiV+}d3%^9>jf5=s>JYCjf`sB61s10=s2e;LqO=u)S!0NYKfr>(NEH3Y9V09* zVEX$TO#9t&aKG~)&aodP^#BoK;2{GdU`fdcWBSitNBA5F;X?rjP*&y&;vq%9&dGen z(){WdA}+Y-1s;6RGd#fVqiQwV1E;tqf1#pcgAnG4A;1y62;pIvB`gXEp_=V_Y(9b- z0q5Z8Al7;vNNp^N^U)Qnx!}dPM1fwf97JpN7%bJafFxWC-T+0ypd^IXo4VgamTSF#P4%5HZU#DO_Xjr!W?I!i69 z=C#!!ZvG?qnEeVjcH+J$WiO#EOt;R2$uL)jpu65tru7>c5ZA|S4?CUhJLY$-6bK+m zL&96KOu&5$kk+uM8&zNLainU;2Br@O{!kGl?Ji!`h#fh_@YN<9ar{)F{OcJ&)o>kD}N0qTJetYMO$X$ZiK1bRg9258Vp zKM01sgakmEdAu5bn_(pUX3C$jl zrnYqiXlckEqAmj;yWZuq3A{%~!yhoWAm9RQ6HBd7qzv^Y-?S3k!C=&AMMx_I=fIE0 zA_Tvx5`dE?7o$HHd}|N-t4Ic!hm-L>kC#R(oWNNo``@fKws{z)07d;S#dJDLC^w7J zdkVe)NgikNGYip3R0LW^=-G}kVu>io2C6psjKc5B;-vtg^DxtJBUTS+&Xa+A0?j1? z6|6R6BfW!WI6<}!tJzq%!$P?OoT+4LDk|OR820=BMbHdsTy0E0TS4|T7(N@&2;9*7 zl>%1ey5568+IU4}h+B?@+DbM`+iSr$>`M|%DVU|Ps-QbAHy`sP;_!SgDnK1{-%~#3 z6GsH5`#wM|s6e3BXgvnHo5Bwiha&I5d@g=M5;D+g1sWV2Y;}tl)4(Y3@_!0!U4wNK z-aW!F;rzqybzt8)8PyK4Spt*BY=gtEf>Dm2759z;ZY@B5lRcjChKUcy04i)mYY5lD zV8D6lG)%i6SJwQ(l>#S>qy~ z+1OnIYW`1iHirr$9`<2`vFS(o+X*8yKF^;IRBK_A_*K(7QG2{ntMDNx8y|v(3E*qe zORyt!6Sq!k2k-5p0U;&16M7o^9V8R`*rX#aoN6SyyK5`#&EsOHj?LtGvX?>8P4Aqk zY@|@4=g3|GY3N>4xkqNp*H(&23NT?+Gd(VI-Nr5Z;&8$>iU6Sl8qm7iZlkj+$Ah&! zBpke!+D^#;ZM`LVkkma_8pwsLLOC{%ve8(d&grV{fS=c`KBRp{w-hJ#-iMgfjg=uu zR(8MP2^ojJle*W)XEiGLt!K;R@bfkPV}rea4stnq3G~pa^SF%6rWeT_dj@hCiw?R@x_pVg7myvRfPXLT}>8L)zXR>%F~ z2+@R1md8Ji1RtSsl-s@_zs${Ifd# gS)DHzApEmBp2+aU;x~R)=gC=S62f))se7*YHyxv!S^xk5 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_11b_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_11b_states.bin.bz2 deleted file mode 100644 index cce41a523836421c9e48409e39178b3fcae34d8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1077 zcmbWr`!m}I008hWX}C!)QRE_bUY%atF1a-MvJt5`4E5G2_3auG@jY5&xgcJPM-6M5 zD;kf)p>eLmVMFJ;Gt%(P?& z#Kf5zx=&jP=E=mrM3i@B1)ghx*K*y$hm1#1+czxNnme0pbYr{iQi@mQjB)o@g4!bB z>qQq(2#Yvd!pSlY$JWn|@ShgFU@7#ue!`5kV!eVwoPpWDoL@?Y`POSi7|l-pear!S z-*<6?lk*z3xZp6_)oni}dk)WAOHDh$tZ-;6Dv_6J)$d{oZ6#3q4n~moet|*iY2j7D z7US;9(>H?EbZxUI9^5W;g->&AGY{~Gq!iR1WltsQqwm_d3pd54SK>bORtjo&h~|hb zY*(*4R(%-s{@L)L*e!Zw!W?)*cYrO4gAgHo^CE(Xnth+|`MZC%Fse^A7UFJhB!#g< z>V_-kp)bcC+!lRW6V#E7?{JRQ`1u4J;| z_U7kH$Kf8!Z{sdmSkmtvAJ6ITrwK}<4u|XCw0$ezYpY#Y=NNzL+-I^7S$}a87@M)1 z8lljSm4%>Zi*OlG6DZ(NXoKi#!9X5$-P>8*l`hEtL}zj&M$Gdcf=#ZGOUhX2>Lm{Dq~W7#l|_u-aE(~RMKSXH9Xs>fc~hmdIiAsS7nhN? z%}U|-n8n!rVMB)qC#$ot78Vw&1*5|~k+U6?$B|XcUI`!D5A!^!l3S%PIe`GCE2&qs z@m_X}#Lyd8U)@OAQ>&MQ=gM}Ya6kObWLwMReD*%0|%668^P$R z+gzXC`pimlvKCA?B61RyI;NQ%kUx=RKALjSWX2l}R2`hDyD2eH!1)%)$v{vfg@sbN z5Ivcz(UZY}$uM4%6Yrja5e*Wg-HcnkAQq7}@*UI|Qu27Tya|H9PW=y3O&2{0j>5{E id&eR8iZN7f!}GT5qVv(-=lhR1dZ*>!kizmlmwy3X$@B*R diff --git a/client/resources/hardnested_tables/bitflip_0_11b_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_11b_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..f147874a3ccc8daf672ad1b7e6bf2b9c452a2a7c GIT binary patch literal 12349 zcmeHNYiv|i5T5OWLTT?5DA<-FO9e#fVg)vpE%YC9|4#-W?#CvTuWs_^3A8fzK06K9N6bq8<32tY29o%eW}FUKdI* z5v1t_l#S6grW_He0Qd=0q1?kOd^H^LRWVr-u8wy2^Elk&D=agIX%tiTD&Fn`W!5v8 zJ8T7VnR<#$Vd}Af?c6HetayQ$TLvUq%2XmUgZB}$O)`(kFH#4rKyDwlOJ@VxTRenm z;9R9F|HumDv7I%O1J)o+*jWu=ywURa;~;He>MNCOLq6*98i#TUff4i#;b1nFipDby z5?N$HQo2KWav++@|pU53XGjh1@aqq zd!H$&Yk0Oo#AY3aEUM;k=_(bsTKqtt&NL1fiZA|Egdv>g0VWZdf;DZn;hx)i=Gl2Auv7}M%j3-(c`{vDb&LWL_v z!ih`)5gdO0NELDi({RJq`MB75x1=?Z9H#qbGF9ri#2o?%FIw~@({y#}G50ft4b2(H z9_^M1FF6L%1g}0!FGKTUsb-p{L1!n{IzdCZsSuv^wJg*~OnNRQ3|_2Gs3+dSG%pFo z1>rs&X7D%D1ZeP($a1E^a)9Y=7YP7(Hpo=vRwJ)vGzF0JxTSS4)9nbAvScQyaDU~t z(#*jIaSfodW2WzQIXuH0iW)G#jf+O7a)^&+GtIfaRB`Oo??FtHPcG~btL zw475OOHx)kbSg`kI`N;y^jQi*(%^#Gt{D_9Pvgw}SOT4|-U>f;J#S0m(mmiQNU>{P zVMgbbld4=IuO;p5<6SACleCluEVU@g)RJcPKbxM!aCm9s%Z)Qs86>|hJUuN!d_-i0 zRsa#E%`Pomzug@;z#-VOpGMPx6bC%7+g2(Hjvux}@(bv(KiP>q{jh_N-h~_(Ov2cJ zgp0Tf>(qJ2^*Zz>Nc#-Y5NhofFRNsFKtun*w40?_7|4-UEjcpfOVm*x8*-?V>Ubzi zG94Zg((W|-W}HUG2uW0>3Z2I1tg&@WQ{_#7E5>co>D6h-C+Ol6X7L!)d&yY1M{IL0 zC4w8LDZX^vNwqNDy}O<0*Ok%i&pQHM;Q=~o1GFb+5UP>4cn=lo9;x-n7`+K&u7Hy- zZ!@)qk{Sm?QG@)Ku$)th0P#Zy1)s&JMcC9L)_NcN?Otp*YuUNi4=0ILBh|cSalN@E zlx&EKQ7^dD@2TaZueh8Pm>=`{?@Yy6a+vLbU|#-hN(>AG1Dl|8nQK%Ac zK(*XdElaWCdY?~=@bH${8&Ix!P1$Eyqvk#Vid{O`h8K{TG534iwUH<_NP3R*u%n~eq&Y1XnflHtaRnB*E2B1w1y!UlP<#3llQ1|iS{nV!C6htsdnU-g{T0S~) zAA}0HYo@tG05A^qi^X2irMbK&I>kA8MXJ!_Xku~>)Fpcar`g7I$emCCc{Y|^zz&vb zWqKh6AwD3c{szXaKcTU^if${i0Dg5OV~BV)w^wt=y-*z=Y0ay-U4#4&z%5&ICuMeH zh8xVrf8As@&W01F%f?9JksbTJT#WO;1(x4t6@|LB{_A#ke}UWAviS*NKh7@PwYT6B zlxiTZl6|0E@9S;(aZMJuGM-SrEuCvqlu2bEx}g`#wp-hHuBKf9R%)S>p(MT*Fa2?g z%o`O}&Fh{11{?#tUVzsN@Ol9<(Y&FZ^?CtbFTm>sc)ftaj4#z*FTm>sTwQ2+y#Qkq zuNPp-7S>UVxjt9pI*W0jENS5#iZVGJfqp=-Se` literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_11d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_11d_states.bin.bz2 deleted file mode 100644 index 6aa3f463894ee13622fdc39dcea8890d629c9a88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2469 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 diff --git a/client/resources/hardnested_tables/bitflip_0_11d_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_11d_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b03da0135fbd8582d294ba1ac2f7164aae1dc5ab GIT binary patch literal 24131 zcmeI4e{_`9na7`ZGLuXullKw`F#M7rrbHnmA_#1j&A6*AEug6Ncd1zy6-5kIsamUf zj|VFjDXUwpE3(d3QTqp#W92OP<2bg*Q(CmuZBhK$XmzF4RIEx-e%$>$_nk>5X+k+_ zyJwH@oRiEu?|Xkd_j$h0bD#UYcP4)5yv)L-o14EXVrAjp52bxq$9~Jp?6jU_CUxu| zEGL+qt$U|PrD>ByERe|^`?F#KnPuvv%!p_0pPJftiMKeuLT}gmS@G+H2i1IpKd)p+Q5t9?opW#vXF(c&@P2f%EI?>dzU&^ZZKf7!QrS)UH z#SgU6p(ZQU=?z@Qky7t$Gg57b#Wuv7TKDFqjKX=T_H){(L4uZKR?>B@4d43lK}kPf zj!>hFq}Qb>62z+0ZIWJ^)IpTpRGv-586HC`4-$Spp+jk7?2^3B^)87Pq@3orc_!y2 zxNUbK`PC*!G$k7(z1>$~YtPmPc9jl(zmbf6-FPxV6(cc3vKJevv$n>_$f15+g`f3( z$(Ufobkmk7qorzkI?4}5((n)?qc{6?l_rQY7;mOtq5xzKVoP|w#t%~5_>qypb}9uX zaBroLQuAW6UcJedZKj3cM#fnCJ(_(_%LkS8kRD^CawWIMBGCw{(p-bJGg0hadNspH zVm#WhgF-XbDk`X#syEV1-9s**;5$aLS`h6|J;lhVbM>=t21%8l z#8{KjSo&%sGqj9N(USdd?pQmDVOKe=*e&#TFGW#Ld6#N%1~ulp#Yk8CF*2y>t5_Du@L}6%BHDG0zsj%TafiQBW3nzBf}f1 znUtFHf0gtg?33a7Sv;>cV5wYX&NP~4Z-iNjZj;(x=B_j?N#;o8`%h5%oExsf} zJtb`#ErX`S!|vXoRb0M75gRvBdwGbJ<}VbbaO%0Ap3u^EBh%)Au$$)UJGcoaJ0ksPe?q5Opi# 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 S7N^`h<~wr;uRROSv;PZm=g&L< literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_11f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_11f_states.bin.bz2 deleted file mode 100644 index 5892009d2624d8eb1f78105f0770f6603a698095..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1448 zcmV;Z1y}k)T4*^jL0KkKS*-CAKL8_H|Nr$@L9>bUK@`9d5D)+mL;!)90r6lFKm-&y z0Dy=91Kr>YKL7v#00000000009MO{#022{`8el<)!7^YGhcslwzy!o#Mwk#{Fie;P zVa*vaFaa?b5vBwfj1wjS7;{EUOaM$q1ZjZ=BLvBSMjX+T695wtff`^zh`};o5rIic z5RFDgnomU3^l3j*JwwT<>VBpuVt6U$si*f;LV8Z&eJ(zs=Reu|k4kr`#bGk)eapFc z2Z7j*50vP~(m3dHtMxyltK40mg7&Z2p40L_(C{x&9;3># zy(#BElKK`udg`m%`rJeLK4+Bjh`t5#od*|-51nKB40#qW75Y9Ff9vOXyOS7U;<$U` z^gYq|A2alKj`e+y$@#mTPrdM};{OGg2ZH>Lr&qOlj?1I5kEv7l36b|NnTq^N9Akxp zqB@|)MU=5j6lGRiI=Y-PW-}P*oke8ItYTuAGF3cDkxLU9PXJ7(aX!Nliz#K3EU}8r zF_pxfS3|LsGQeXMmRV&(p&q5xVUr<&KJu3ngE5sd2MA<8vRPGOWUBBfb_(J^${&h5 z2YSOMTmj@}V&QaHjs?)H%ZrM`BMhmGI2mPwj4Uv?Sz{fMaI3*MJBif071-crCkumt zj9p523B_C&R~ea^oy_QrWn|3koEK#1%ZrT3oktu-XGRDguX*;KXNll(!=d%Or*Sx9 zn0$-4y=%bF;$4XHI|6~9t{g2S-tFY{4!|)%1?_WZHQ^nqQyDv%ftJps=-mh7D$G(T9;#Z09 z2kknX9};#rkIc(2FnlY}zSPIw?4JAo59V}FLE^l}pg(!<1v-bwF=dR(#vX%*yqym7 zxU-4p`}leo`X0macsnO$$L(KY{a^BSd7gH8oenSJ^(^~G#JCwa zUi0E#z;SgQlb-5spe$Q_Za>H@-J}9&^`cooy_d&x;h+B74jVy=6tVt zbUiH0nVFZ7`nB;uV_&>c&mJ36NnaCUK7Fra&K zqN4o)N?z4cmBc-{RFx>=7!DIGqlCCr<0@H(GA1lc z#b!v%GRaJsqmn}u;g&}!Ck4YQ##wPLCRH%FF@=;I6yalwhFNkPM-wZQlPShW2+Fll zg{o5q31%ZQq-6_YH%#ubdNF(l!Xrx{#-_`8xR!i0rqh>`d% Cg`fuj diff --git a/client/resources/hardnested_tables/bitflip_0_11f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_11f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..cfa31da6f4a53f5d6a7bbd8e32e6849fee0422de GIT binary patch literal 15388 zcmeHO4{TNC6+idAS7_<$J%u8a{#jquEx7g1Gr%Y^!eg?947wIs23ui1C)pTMXo5>z z1bbmKxD{xf$)?uHv#`ZP{w*;ZGLU9$#t4B*$flwLoyim^2sA}Mu^ z0rVGO)>4eaWMf4D7wBdx+sKslCetYKF^zwn%zB?ho7PNznY~?2~2Ld?(L82k+3_4}3O(W6S2-X%D zRAAo_{{&_Q4_{@PuDrC^G(uaJVDLE1_@QffpHt{lP(~^6Md%>!w{qE;PzgrwGnyE~ z`80S{1ETS-h@SuW;9 z(q_}=6{}wRG3#kHP1v7W=IaAFQK0iMzt|y&_(G!!1fV?#Q)mpARYG<9nBIVZri=VW zO(q*?ziy&LE+WJ*SsFKTok`@kOu2iQmWniTm#pot*7yYe^$c`Q&a zU=vEYYZRF&3`4{{*Q8&kPkW7Fngt?b@}%O6$w{SZDV~@3Ak{P~UH}##QS?A#i{vd6 zQAElhemNW;F&T|6jNHZaytEnX7P(D<5nUZMxb5laIc?KerA9B<{nl!I*$l76&=_3V zmDY^pp-;F*IyWt~eSq5$=rM%@rA1dT(~iE5tA4>l(VeQSr=cjLmIMgQ8qNX>9*Zul zH4uO*=oBB;wXAR})7uHyYd^q##$w2L!I(%tC_HT8-nf&4=W_;&%HgqonB*sD=tUK- zLAwnB%`E0a5xznunD|fF(eDk;E)1IAbC(QJ{PNL`7B#wT|BO0 z=z9n!CI+QW^9#ry3M$cMAW8gZY{H5Vbz$FyU;q=Avx%nENix3m*o2VTh5oPIfLt<8 zpQhtD(=)4#YG6~lR~qd;rS=u5)4NaBVx9gG9+zZ6oqKgvjDff8=a@P~#;E9WX9lCB z51J9UzL5q|x~91{RWVgUdogL#9B~8F<|M#Z_}G!8S3JVH%~B=@(ulu8VgIRQ!}^T^ zP9dD9PH>GkNd96&iowg%Oivw+EAdRi+}CEFM~*{dVMa#HmZ)?BLoY8bZ#vM&POY`j6|ePCy8n%{55XWeN;rZaVBnn;E) z?aA1gxnrkdH5lqo0MA0IWx7Y6#1hqr*GvIlq#CgZgliUt)p?BC>SEZc<6W_EaZ{Ei-TAZtiR2nPM#y3sIAm!sk0BX#OaYNTDYZKR zT_E{j6b70uBOR~FP)K=bhhv;h%|~QF!D=Q`HTbeDM;~4+fuq%aaIaH?n@QZH({d2Wm;Sx zdxdGgb{6YvFVikK`WMyXPoi;qQbqz4P#o+o-Nb-31~jT#RT(#Vo%Xt~x3FrCQxAVb z+1QbB++lXQ0k;@lleF#u9BD_?jQTUIr_3e%Wu{-A)0FE!UqwuRIBG1d+a?f$WTBDi zO$hRBsR(X&o#}--<3RzL0rR(XrSNlfi`h*8-%(wfw7&bmpu-aNKE$<4U$!B4##EzW zv#@N6&(`J{DOVYM&U45C^}kmG@+A{40Dg zg8avh`PCV&E!| znc4t+tbg7|wcuDfsJih2HjXBhE3Zs1i{vOdYc9bw62+smdc|YEsITt{j^-7Q$)Y-p z#nmewU5R+bW3puo?)m?|c>J%fYag3+?c$b{b?p)suK5Y+>$-;J3%iAmg@Av}Rn6>y zVlr=KONeja19F|u@V4kcYH#NIX6|Y?TW9SJ$U4kP&nDnUof4?kjP!T%Jhnbyf-h>(ivB z?)KY(>q<>eXR7{grmQpKiZWf9GssO#*=4p0Qxo@OOg)-I)}vDBk1lTauiQ-eBkk`i zhOkkY4N7#=W4*TDl!M=C+*GsxNWFt!RZIsA0gm-a9{if}vk^6ycj)UK`ntiO(>wGv zhYEV!>>c`ghrX^?q~5(l-@R_ifO5|}^u20B)ZP5Xp`Ul?o9Z_i-n>KKG=d3vhrZsS zZ)#HN9r_OX`$X^1H%*91Zt@O&pZ9s0&4;T`%KL3oG0__P3fQGMTkB}a{m-WS8- zeKDMD5sByF*p9E(t?aESUv%J$3h#^I_!n*77sLM}UkrPPzQ(P+&zU}n|Ak3J%unIL bJM{e&ggy}EXXnuOUv7>^xR&p}|KPs?A3Dsm literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_124_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_124_states.bin.bz2 deleted file mode 100644 index d3601defe79670a2d8d49849506795807643a4b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1327 zcmYk)?N1YT0KoA=<=WB?EPeV(3fRh1&j#)sFPQiMh()ABpe>vRuy>dY-`$+qM1-`I zt8M8-qCz#OAk-<4c$c^YH+8+E2hN!VA}@&X#WgWYw-_aW%*l}Xa^HX8^X6NAtnCZ5 z>}am-Xx+B^WWvq2=f2upe=qa7M6OhqcrzkO=n<7FL|c4?UHFsfcDtOGZgUe8EVc6>VP8TTG4aPeMq$$%j; z`;Bbc%?44*oAtHigXZIJQ?Egvk>^6ZfG)Q5{16&xVM~dz1B^*P+6U#CBVESz+5U5u zlB7TO8)r|&r@oU@D_8dXy5|Y*?oB!GTh83EoWTmfdZrH}Yap464G=@x46VwGM1>gJ zgbab9$6b0P{<>09`ELK8?1rQ)5-Yj#65oe+Car3g_suV66{DGkzo5LSW*xD?3&-!S zWL7S8$d2q<>!%ifO3{_m3`YtaPi7fAW>4LV;(%GitcuK}zV@?Pz2x`fWoLCGd*v@P z*wsOQmajvSK)K(VTUK6Y^sHT)>!7@n;m3)NP9ufeBaq4T&QBoa5rlDa{9(Sq)T#vt zK{zA4FIweQfe=FQxHG6ta_Z4E-n#>Yn5rHGVF?`J1Hq~Q?|1u2Ksy4V2}lKS7aC{< z(+Z4^^8R4MPOWqrFb8|?vUXyeQFn631(gQ7#iBN;TtoQ-Ge(Qa>Zn$HQbJ)ed35-C zxSS1IP!D82#4hWqeZe#7Wg}(0H^Tp=n3>bfdS85ce`7IFC7>6~!1T{lgi+|k5A^WfZlt-J z3o%YMkBAh5-i6%-fb~cYsHh7(PO$T6jTf}8r2675E0OCw^(traQN=9oLP0Yy;DevWLNBoMCZVOg<)D6htkM||lNh5Y zgJuJT*4nX2Lx6MAleRTMsKAmao6?ea=balXr^9GP5GERv4%d-NM2ZX-SE!^45uZH? zANq*aTT|4dkckR}anzzU{@5xPgB-VyA#T~IEhJ%+Z;|yTQvuRZlVB%{4Q7qcCQiOA zjInSO$|mj3CiPS{maDWXOhkdo-K6OrfMdmp0?pCk?g)a&#hbkkj6?Z{@`EpmMgIZ! C))>kF diff --git a/client/resources/hardnested_tables/bitflip_0_124_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_124_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..5fe6d13ba44bbbf3064adfcde7bb432bfe79cae6 GIT binary patch literal 21807 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 diff --git a/client/resources/hardnested_tables/bitflip_0_12c_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_12c_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..18d8d20f291f40bdf3b6f9c3d5104af159ee78f4 GIT binary patch literal 14984 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 H%MbiNqgbT3 diff --git a/client/resources/hardnested_tables/bitflip_0_131_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_131_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..f3993558a6b4f448496b999921639c13a4134f70 GIT binary patch literal 45965 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_133_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_133_states.bin.bz2 deleted file mode 100644 index 400272bccf895b3c847ba1e1225b2de1852f81c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1861 zcmaizYfKx50mq#{FTvb+`H{0`N)uy)?NhnCOqH96LBjec*#F~S z`b)nLzyHa1fAuDMg4DH;Kh3Wll{|jB^J1}RPtl&6#l@21Jw-*5+igt}NpX=RSJES0 zF1aH4p8!Am#f7^vnQkw@TOXT0v7wmtwF~V3DdoPtp|{_@+Fg!TSA6qhSMzk_;(>5S z(%7A&FwHR>Z?XW|zqeX{Es}NHx#`!lI-G<=sIBK#uJa&Uex#0`?k}wLJkYwD|5+Z5 zD<}@at)(OLnJ(jK?;s?;1rpJAUFE9iy8PGg8$a`eLexJtZ@7@lWzQ4yu;tA8kB1LL ze|qBFIX*n9|FGxWTBB4rz2krMLtz)4BmqkFrKyZjMS4~Ejn?X{Er<^@e9((H95R&W zecu2~@yB0`C#LR8FE)aNHIY%EUQiGN78o4PE9~mE$rnz&axu^QDRsTJeZMQ`P60}= z()GYeYNF`%N2OhJz7cxTH#Yvx9|2-kcH5dl?S;9^fKLB`BvqiWCYANny{i;uv&OR6 z@fvg(INov~XJ1W0@lt%>A`!;5>z>V5@d+<{N%0h#@X>KiPDxC}3r~&>%yDfi#bRA* zqqSkZ&qW|TSgUfdy)>?>9TYdiI{_ zL0Np`@+s>6CCIukB_bnktaZh03I(zLNF=VqM&ojVPN(8(934neQ^__?>osz$x#JJ$ zp=AnVG)vE`L%|Lwoe~r4M*&$y2(!gH_{jE1$@*q{={)MX_UF29JK+Z^yX;Tr6G`UW zTb`Ah(8`fg6XSnujHExfqCPvb5*#@{wmh#{!oJ8^m{{BX&Cj2FTQ;;^P|>q_u558> zE;D-+-y%DiM+;lwPK@E5kZ3)uRPUK+nA zW?&+lat9o3s5_vvI1UCK7CPBr2khvu)cx$R0fBL7U}16ziwSnf@yjGgHe`&j-`)ID zURpI(qhH^wH5CkSjdzGUE@(_^GYmvxqUqmdgjatis)7m z4h;FRGxy5ZdyOwzC-po3F6n-muI#z8T-HU^_oQ|5@U$d~fOi%+9O3aGN++>dfK=i^ zI-nwPI@Gry1_-->7Sdsdg(RXJ+?USlnE`gUNyR{1k2lI`)_|!j@-*iUK;aaNk#>1T z15G0InsoGd>A?dHz5V%z2+jwEMQe;~IlMoDg-#;@kVrHtEA0}yVo(9&Xuk!v824x0 zHWuMQnj>peIL(W;pgf6K^gfLg)74SqeR2Iz8j;DTVn(STBvr3?vUnSV&G=}xoC>tH zfFMFy-&_FdRcL0b-~Sl?2n-Y!cF_%n0NYxn3@FD4kJilx7vqkpV1;I;dD85|?N4 zc3+NDP!x$J>*)j&AVR{76`Nt3I2Osk={MdLtP2Yi7t~?4LBxR)UTM^;f!UT_ER2pD zK|T};-9^$u9CrITRg0ddlSnv7(hL^IY+iU476Yl)?LMDwyjrXd@X#pA-LD1 zRugtO7z|MH`ru(AgJj3!1}7Y5=qTrjrGoB$wh>DWWJ!0-+0JljBD?fhRRcL{2bH89 z!1P{i)@cXK6eh&A!P-GZx;Pq1V+_p^v-+4}r2`S)l&*Hn=EDrDo&=nMdRDE^^arpE z`bK@U>7kM!sg6;uLT$f_uV&};?P~R26Xkp;RU=enZgsioAvp6N@rnB#dHL~spBF^_ E3(l7mCIA2c diff --git a/client/resources/hardnested_tables/bitflip_0_133_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_133_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..03c54fd526a27b5b9d5d6b63c373c429c82fb139 GIT binary patch literal 22696 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 vIla66rGBSeykXeH8;13*Y~y-An9uV);Cw-y;o z4DP3RS8U2OuQ^`Ry=HpF9xL@qTKNF^+eZJnUg3w?UU}v`2_>cJ z*uoPHDe}~X^>cIllTsI^q#a93_e!d#Ec7{(6vEeq*KhWjMah|$>sz_m3(C!6hllHD zVUW{hJ}LfQQ&-*8J?p=Ng*r8MTAdekt}a~Wh>zdg=hY-jI9ca~Sus`_`HxRTWoQY~ zmnWNqaN_ZlGuFh<<)053ML{+Wz#dCa+;kJm`l_WE#wmW9;!Pw$`pJXA-B1BOTffOC(vQ+fy#yjJ0(>nF@&HHOm@1dFmt)4qKQ zKmM7LiszNA`UVU1PK-KpG`AizqPHiFO8Dk5b6b{;oSQP#$F&f98<7YBif8u3%vIn7 zn$flXM(t`7x17#aum}P(QxVZ5AaQEkaHgEt<4WpXIIPIxs!lY&Y6IAN-0u2@_GO9G zx$at0Hlx1g-a0L7E!Drnl((HNX^?U#S)C9Z3BYdE({a(gAnbN*F$u>NXlm>vz6s15 zuBAvgb^T?iB}9*ZQqSg2Ut?^71q}co>-87`sAG`IaL8#nBm~3+Wt#`wxGMp2Hw^YF z&^$umE5lSmTS874Pt~H-iam6R0IN1yAX+YwDT$05h4(Z1ZKwf_5pK_)bLU#ZeCRY}8XgWjk?uVJV#O9QrqnFTPvjQd(~2$T-Fk}zM(3_mpzsTC#U^zorzN6FR!!SaxuUY9=BboM4=&oK zR*NYnaE&{`65 zRp|ojx+~rKx(NvWiQlXF@v>{yxIU;jcRST)9)@;Uh@~45*{DHIX22yqXPYEK%%?^o zn01jbEHJ6BX2=>DpKkPy(08hl5Wwu8U>=IzsN0)9B+lx&(5Jqd4f9x_?)(h-;_90I zdJ|XW;#4;JA#$KbDg)E5;`?uF7&xDSRoD)Qv4a?iFQW$2Sb34u{@2B2wqR_rWN~Sfg}u-Mr)J;@O(-ol32># zG3^mnp%`}CN7S&5aeiepok@R8-yatll)!2LMnse29E>z10HwgwRIv^Eek3j)#sseX z=hqMN#L%w|vlji+5JCCpmaO!xdg0+@A07wRtrnIl*hX_OF(3xUU?dEtrSyeXN^%tp z1ueDUJ zHklxesSHwZd^(V2s~6yO^af`DEy0w8GN7c<{PMvRw~}uLYV?eOFq_C9$|8Ykj6A-M zD>p2vaT7;OXGY1%5(tCGZ}4zbJ;TT4uu(YMy?qJoOZld9{mqf4>JL&Ch&>q1wcv)) zVH~5 z{Eh2gT--nY%U#6{to)B{oC#5t>{}q^aI*C8<9pQfR0kUeYQ*!&X^u5zp84r?f2*Rh zUI37$Z>u{*hBZ0np5VjY`(F$N)hB-H5)BViJs^j!Wjm}xo-7ZYwz)E?%RjCgWUhsE zbS|M36Cg&D)+EQ)x43Oh_pmBNmYvbAB%lR-o!H~pFgM2eBXI=a)xiL1JW!Gv@qOM)bU zgrr^mbP5MDpA6!!T^_Wm1V^C-<9CeM7F3|HjK~_dh zKA6D~VdDqqa=9zB)4G-1HX*adj%8<4Lo-6x$ES<$i6LnCun8c?nBmMAb4_pC+IbD* zx&{--kS@sf^DZ|>e~i1BE|TkT-ZT8!e3~kn1aea*C!5|^0iDEu@7S?P{p1JW zD%ZuR+-PS`sBq`Fb0BBdqm0Lq?Q%WNu;u==a`w)1HuQXaZ>UH)^cEXM5WQz#pvAkq z>HGIkL_OV)A9b~yu~qtGD| zON|CV`h0w3|Dthfs7~OGpaw_c$bPd5noiG8ZE`^7Et0RJEKiPVVc_+EQ2D{H!|1<$ zUbFw_pAZ{H&f5!59I`-+9j^NpF2?O{RgJp$-dRRxJ$QbYv_+$+S-dGlGb?5jWBi!6Qg;)YErC+_X-%iFgvnzTWtNuVS7|EYk5E?EF zJrjxgdhF>RTDQ&p>ue!iQHrKBI+{x&0c7Rp-;f7wGqcNGrq4Rw|B#y6cc;|4ytTc6{7SOW%keQyJzZJ1wZ_L3}^lq*8x)^Ql$0|JgpppGN2IRV2n|D!*nd zC%)T2yfU#Adl-C8ye*)3aIt3TZopRT&W{TeTtqf)aCsQAh?os+6|*_n0M?fyDgc(s z?p-xTcxfuyR?@d=@oCL9?9%F`dk^7{Y?)ovx84S*xQ%y(o|oFMY$EBaq!X}6&)g4n zd@8oG##18KU8o9K|8u3TslNf*s#KR7)n!m>LrV|C%wQnm41UzK?O`Zn6N#e`V&!5B z1#19D4>IIptllQ1bpms5%hGW|q7#ET))Q@KDER@=nlwym=>Rb?2f@n;&~2YfF6#%# z=>YP|{Z*DQhn&T<)_G`=MDp|jex;&xy)N}|J+*F)9vWC@RF^BGti>I$j#G=A($GvD zHn!A>1Y=M`E(#z%OU3$BfQMzDlxY(17JAje>n=9cQoP=S6CF5*d7r zp!AwAaazHy%Tz!x1Ax*g@Rbb%L!PV_hzQljVA$v;8rS%T&m_L=_oJtOT|Ro`AZGoI z-+m+9wPc>I*|@%XY-mFI;??7~hj~Rr@!fS-3Npky)@_x}8$@!($1~=B#GKojcF+gd)XhwKpWjT`+|FVfl!~f+Kwb4q5T}SYyrp=|ImtYDozwIF*}BH(r|CJg`~_YPI$?|oTj!zG zh?(y}_&#eSZ&Zk4c^aWYf^UB`M~;og@c104K5yH}h?l7k{kuGX*%V*y^RuG7J;O?!c_R%F^LSJZuM@Q7**XyyS%HOrj#K(u&l_{cWt{rj0an3H@uU-|O_ zI_xdmfTB#$7lh4*U&&z{xKr*Hy_9)nB@q@CPqzRg#DRq2}PnBNWfwr&tS4x$o-R<_PD&_)}^v#BP3G z@agd|q=np6s0&1yMd4=iDANyhwh}kKo029k;ddq<+WZdvc+vu@0a#)UHVtma=eEpCPflKpDu?>f|H^mayn z`@`Rs4ijEe6#Ke=k8B@Y5OyB?wv{e_F`=9Idt2_tHtYDCjP5e|r}z_lF&7!*dM^Bz z6#V;Sl>W+z=Z$eu$)cBY*}7u}QIN-H46%8rg;E&KHU?S!=%fHPrl}8H{wz8FmettA z?84N``ZE>WQf5={g1}Gb%f1|0`-Rcz8JDoWK@PEpf4KkifqvER8#g{LF#lCl@aA%J zv6Onf`O8sZ=l$R$bHk@0(Vz=Skx`!|GI3IRbWLoYXy7t<^ zJ@3wI{dMiXD~=#?F5c1Demc;$^w6IZPoKTLd_j_3)Lh$m+ahU3{<6fnQB|DMqa@87 zidM#bxS?rrzO9xRzce>Ka{a4#w_;253wqDwg>!3O?p)j{x-mGe*kkfvpC^l{y+>`M zM;8D4`!d&&om(na|5SAO(fRfJ4*&hnO>Ld;k>k7cwh&7MoI_%YlkI7ubZCbQ}POK6bJxRKey8z0_dE+?C3caZIJEUlc);h7T!R5keXRUL2N_ zhG8qh6n(Wz(o|uH7;DzBaoF5llWWHkjWl~+r5a8rh1oP%zR;mlFsN97BnNwH`qqFo za-9Yj!$;6Y30xOT3|<^Uo%7PQBpYJvxp?Bj<9a1`l;2>3P&K{-ED5;DBoO1Zd=d{? z+Q%dz5o*c2;8>$ZNzrIET0cH9CPo=PwKP(2Qn->RL7suP>uLrOIh&z6a#~GFyLWH` zJwXxz=QZLITg)gREy4yjMZ&2FUI&*Np_B7E;c~52QX3DIgh}BFBEW2!&TMe@D}hJ| zR2Us?rZ?0K@T09gCU3f2BVidB@r*K-j-x}M!%%}{ABS9hau`S@ng^lnLMyM8;cU(J zh(ypa0ubzS?m<9M|cG3d`lql}@S zbq6X(8*S@)SXX`(iio{93!Oj?R{pf->MGu*x9e5}X^uYUkL!1;$Xpho61w=aEADFR z*A4Kg7q=k(TKGrMo-LD`dycgIZlO#6k_H^zn_g79xFw*SqE1F8YLZYQpAHW$5rN&II;X9LwNT}cp zM|skrVA5%#tW+Dr%ms5)e(7yxjo@yMSfJGLm|PK$St&0Oqa&n%YzWvx!;yliKm?IC zoG8N8aEv4#gHvxau{x<1WPN2WGLNcq52FTAHbqX@EbE0626Y2K39|`0fn*FM+7YJW z@-;}ciKEnaqC;o=y%9s*jzT94ZqQfw1yj>+29|G~TMWc-b?e`cK>3Q10b5{rG0DS>fco&C_LGXJj%TpDBy;@q%f+rfXB@0HNXj*>lV4+QCAc zAApI(fP)wIbTGwXVZ}395HN9}UIIN=R(~w84iMJVq>{a@P4eOamw2XErTY5%V!WnR zev?%eozb1dg$%^jU9cjXgfLT3_m&SU*G|8Z%9;_R8){6SpB^eF^rSDYT;QEdA_wvd zHHp~po|@n|t6$_SP`cvG#vFC(fpBZQRa8Z|zaV+%v+$gI=Nvm{UWsUbns$-$e9g~W zD~?mP%#Ny<8@{9HhowK9{rLJ;ddj#D=8P~kpnRSu)_)*^=987UBV6jWUl-9t8A#|V zzf?89T+h>A2sg&{#RmZsp!I4<>|PjK>!h5i8l%(=g;mjH%!sU&jo(s}wf*7Me*}1S zs1L6AoD;!~r>Aj!ty8kskV`tA6G^YkJ1MY-xCcW04Z+j95*8)`lGNI6nJe9`bp>N_ zBk}nqOB*t%mIR}jfDEuCLo=jN`H(-;8i4HC{IpY%>y~x5flaqTaBzfKGEW0-;j7~)%((RB2yRetX zZ)CaMI&n5In}O;C-)pV$Fi?&3raZcudpsg=1|Ye0map3#9i1JY&hrpB7>|NI(8@)z zhFPvu3DkkEVu%cps3!G2iGoaGr@Ck13OYI7SWIZGq^fW*s{rwZ#&n6Bm<~ zkP$FJM}H#~hXLO++r?%L7AbQmu-U<>8XV68=!2AGgOFmq1z?I=de@Lf#0tFwA<0S5EwqKy!piC!pNq#=ifHU+s9Q9V@=1X zm6_x1xH-Av^50$O83r;8o8{h^_L;BYD5XmXK(WW#Yr;AACJuq0VA`w*n?{g>Ek~A^ z5X3B-5Ql~sX!e{iTEBt9#g;Y%f$_dsNQl%8b86@DUR@9 z${zGwQb4Gu5sd+%e{hoDNA_K;d_)OOVYZR!Mw`N{$fg9o$$`txfpgsfI=*=5Y_&l5D}C6=x6ujk3D2pXjOU_T*E2bMTw5>#n<)D z!9v~dwNy(miTw$#7YjG6Fo?;awj`w|346ZT==y;<3sbieD&V7^?6(( z7hEbl!7ojcv$%6Y%9KK4e+lL-NroLUQxln_jOXJkkGLc^ZlA)FQ4}owY4t`qe zaecRm!jI;Xu_&gJQ+}$nqk{fs{Pyj&clO@iIPvZE@73d~ja7$Nh}Q+3f3$b=WO)EuJPd{Uw9L^joP~; zC`PF9#0Z_;c{X6H`5w}$lt?7-q3j47R0>kGH{EB}OH^*n0JX>V|DmB$g%Gq#vfQNl znsi2h9uaX;aF0ucQ%Nn<;1z?vVk4_grDV3)1g?0(G-di=S}$F|>X&d47$vWbz&7Bx z;z6#9Q|`$-VQ;JQl!(>l!8kh^-)4Xa6>xzUMhX%L6=9NA<|7RlX?KzK@tJI>y z>3k|joSmwi`uk1`jw8lF(1@BCM3{}Ji&5E~EiG0gnNIDea#Y5VMk-JW9;E86?t#G= zDY0#b4>oBp4<%^92!yeyVVhc`2!pVNWiPci^j}m-{KZc{`)j21TxjZ;|4>-jhRO_2 z?7@;<{_)9(h)qcsEWf6T{CnrYw|+ai?$l)l^Qht6wRb)~#ddpf3#uj~dwW-?Ny#mBH zM?W`20syo;7^{6%d(^9W`iv6o5Q=g%>-qtXlEv%0PpxvhW3r&(L%acABZyejn|zH+ z0_0)=!4CX-UqL(tH*abts4NjOJO^c- zEGx8_5ZBHUn2pg&W*9`k6#>=(5J(Y9>QPhCm{>8K=7Nrjr+^XF;{pd{;>QdtZLL(f zFdI$qj%9bXR^@S!wYhsE^?OBeW+ekh%<9$}#Tyqct=cLHF{9)SMn#xft~F|g%RYWQ zuQ5DYz!>3zUHhuHz4{up?`e^-`Qn~WE;vN%T7h}&bVtDt*G*s<$$a&sHEdqM!RrEU zb@&s?DfB5(#H%$oh5EI6gB_49?}DC-Trj_R2CI3-g0T)4RaqRyi#fjte{_GdHnlt~ zNyE)m= zQFs2MQ#jh%)#M3G^InBQ%;+9Fuvk5&Aaq=h8r_M=g>1OciT3lOKsZP-*vuT?i1wV# zMv`c({5#ob2se9;y<(O2Ik`BPGKG!G?4=hRrTx-K3W^^k!+NhW+ShDR)K^#jG2U(F z#$;AYr}xVtyye|?5dBcnk;a)ftV4Xx0>R%)>km~UmPQf0k=u&rJ~%voy^&v*19f>$ z9t|AlVo8uiWm>G(673MCa;CZ@t9qjRAMX?}TtdIa>S#`JD*MYyRa|rVH4r(Xtlrp7 z<2U{BUu=Bs_{-{iBt8563lzHE1^EQg@VmJg#qjKkMV%S_r$n>M+nIWu11oMvU3$xR&fNI z17I}S0Vw4{0j)o5z@y{TLtSw2Fcsw{Gg^y**ph6Z!06FnnWmbz(}hBKpTI1q0gwu! zH2@XnFQ_baihYI|eZv5pCvjbMI5bv`(!^byMVGRjtB!$IZ}^ecvbKu-73;8Tvg`p0qEeCg zmGGe7?ABzOAJObwj_&Rb!R}>i+D=iH!zijruZIwA{dT3oRu zbRn}XghMFSo0 zYF>yXH-r&|0NA?CJVKpWvn9kdLyJuF80Mw3S_&vVDj9Rj8RJ&%hh_=XQ?L=HrL5{=4R$b#D3$i!rA0c((4GZEy%P%iq4Zah%F(Ulz1-K5CdFQlE*s4mD z33e48z-wFJ4MRI4y(w%~cjH{OTEG!xT}v3)i-iiMjXS<(p z3x|&1(=_zSeb-a?X1C_RTHPxeW)Qt@x$?i>h&k0WaE>^izJJ*I;^zS6;=Y#k7=e3& zW#Y7qf{ZTIl>=MoY%09PPQd?#NPIv;U=XuAtiL{}jJJAmK<13@QY&``yb;t9258QwzWO9x{dwu|u(jZV=-OIi#tR_!uKf1}uyOqa=dI_VcDUk)OE-2kOzOXk zRBtQaNSgY<`RRKxnYO8;BmG=c@N-$m>4qKNCwDe2z7k5GB~QPMCHpK3@1o*17lyRZ z)TrQS4k1vDQ!})eXO5rb(}Gt|b@z)C^XaM?z%X7xbN`1;6}LAD3;(&fxO+l8^i6zY z1Y7&z>5l!}AF6LZSq`2oDwtS%elfuI>hNuN=U_gWAfNS~2 zYvaG{u9$Di$!z^N*k5t?;O&a4n>WsV{Pxd(oISXg_0 z*X#=wiw8ZwEIV*8#{5||G4ACzUAoc z<3;~je`w9%}^xEatcej^` zIzH_EY3PIN7yXF&^NZA%e-C~?dCgOBaI&}X2UpL;_?_3)>-Rl9{lkqfTi!2B$>@u3 z7-||W!#Gu)&`Lu{SQWk28(T}eXXipB;3bT^P3qgoGcMHqY_OeC3#4-qDs~xNbL;aN5? zEt}*&3L(vvm)DE$DSW#bBDevHqnyZ2&m$>1AplK)lE|U+WS-4!vd(ONl>{JW#(PIQ z*?b8F$Ld6ixvWrmDvwyo(y>|^(*xzHxoU-06>W6#valRKj=*ULg4@-Mer+p;epzDY5}Zj}*ud=g_nZ{yZOlk#aXbwCf3=^}v#S zCW`wWH%91?r2RVZv%2QHv_}!c4KLT~(1OcXK~e-4$7R#l`g*g)SS9Sb@u%mkG z8&4D|!h$4CoNb=`rvmnO;Xl6~9aNqx{N=Bw=ia@xzpg6MzTbAMan|Jh!wQD=P(azg z{%%+iq(A2@an9Q;Os?ss$cf}&m@OGR6_Wu#W1V&V_+8?ew-mGX%uAF}VS8uEY<`r& zl&$JT$24=4X$BavgeXcQOfMPJvz(ZAZ+gvC4?I9#+7eqR?Lh4eG8*jQh*?|$ zzT8a`0mMc)Q%S7J22Y9b8Fo*0sE~;2O_hR>*+_IUU%Z4d9L^~%4P~YYeUDcKg<Ld zdf4+REEhOC5*QCVGgP`wosLb8_XSr5o7f0ah|?QyAOP^nNC*yWC$>rTp;pR8i2{Tb+dGUVjU(?sfK8bGJ)O$75P4^1-TIdx%r+C^zuQQ8oMO}a6s|yeR z2#lQ;i=Ppu^;UV!03CyR1*Gz(B7Z$?yrjMWa0iPQjSH+i*$F0+yytYGqHF#iHqMM7 zCA|%aK5m10uT;r2x-F2 z@eYxHrmob31Sa#$f<_r4jn^96gTauT`Xs(Cu_#w!jf)`|$@v~^P|{213l!~iWf_`~ z!{d5X++tL#A{*KpV~Q~6wsFw>!0+&@o__r&bVrsceG!ppO-noOnFk&ZXDz%Mg1NHt z?Td$x{yqQd=I>@(rF%MGzI;y?ZEdm8#odzao1SdE@RYw1qQpM`kd6IucF>?Wm#&EB zB5TlWS4^&ZM2QA-|Mjk7L?-CZL9mTAHrBej9cld)!S6P0TKD|g+~*K*eq*^q0o^h1 z+G@L`-#`w)2uN_5M>eS!S4T7gc;gteqA_^>ST*c2orH>ZznrxuDmiXby1(wIz-N;)sp-|s#nN!~ zgKz}KqlXTSHbx(>f?It0Vz^wM%t^CCLpZ5rl0XHR`RUx(+y%{l z-W@+o1#ZVOk;MoAw#ZZ)kLk`d1in8N{$MJj$zl7E69y^zK3bP+X3@b%clO@-;rHL~ zTCW%7oY{~V*%|jve{m6QY)HxO>*fvQ%Wv(0t92rLeSO1Mf<4LXjl++pU5+y+eB=1_ z&LAnsRH_|Kor=Cnbj0qOTC9p&%H!3rTLx*}!XxX~=+{#0bfpvu7~pP)C{ylVoZgXZQ&8)R2e8YN%Ro)gi9maqgPeDU?Bvq@)FILM-)tA7ec;dfqT zn9v9(53}0q$EvTuv`+Hjqw#)65CXJzlZ2M3RRje>gj%Gb}o1UYETf!+{Q2P_Eq&-VGj z8+W^QW9}_^m3oZanp!*4b+Kdr0>PhzcU$B)fKk*PqOphfqjU-9)P!;TOXO)a{w{5} z7BA>ydjLJdx--lgB72m8hGL0!hOsvXen(a;pCm|N5n9-86UA={a*s?-1?Zqb2XU`=^}enRH8+Ig^8#;gEXuzG_!kmgw6u5`clJzq zu{Kb+jLaf*y+GbOSiP{>k$$9|eF-4=xm92!;UZ7IM3>}*nZh4SL-$}g&YDbsfhZYj zg^*X}M4cAyw5^-0fE2VIaE`C=ec0+)2LTsIQtc|#2XQ`zo-3g<-2Lr^JE^&QpFF-`E;+De@oXq@mt~4g=(zpPp?(P&NHWw*#dhMi3y&r?t$=@8 z=e93UP_sKvUqZcrWWy)M)^T>}RI1{8!o%10cTb>@;y0JNCW=RIkF0av8{!mYEY699 zcoy8c{g8glX~Z7h2w;kfHYzeRU(?SY-h2Am?oLRxxM=8o)L3iDdGhQ~Q!+D5sj4^C3e*iaA^~Q^AYyryE!=cYd5YVxki2MS zP%`mkm76#SjfY!8g(ig~M(81?il`Pa7mbE@rde(xJ$HzWQv#^!Y>8Ly+OAeA_UOi zp`x#z)(|xopvPn;=7h?|BO#E!)6;3%eo&JsI1NtI=|W!8+TnZwvP?oHqqsQ~3$~3; z=d{}9cU*?z?&o22M~>fHWA8yBYq?xZohNx`AT$+1h)CXpEh%lqYE)84ji9Qamq5ZL xI3=M!p4zj&s;i}yc+c5QXvip+%yQ6_#0$a6`}KVlAFftKbeudjeetup{{wqPt%Cpn diff --git a/client/resources/hardnested_tables/bitflip_0_135_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_135_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..84a6ba3af751764cdda710a7c7c8dfbd3dd975c5 GIT binary patch literal 52098 zcmeI54R{sRo$$}xJ9jdQ<$6p>JiK#?M4 zU5B-{){pm5tGm3dyPI8gt+ll2t6gN<-JNa~ZOdD*zU}I^-Nu(%(Mp94)KZJHzyFyV zKtNktw@=^qnfPFG=gyq@pa1vyf1G2VG{1QHs;w)(t<=XKK6rx~*b&FJ3YKge*x{WH*s<$zTe*Q!u9_5O1NFgy9ZR+;eOHkCtW3Em~#Ub!g41z+jEr^>{BM zSk>muHIoN+DC=DQR@THxyB;qo{#WEdJC0+Q+jeMGh`q^sbxB#gKu5~rkwDcax;Wxi|B= zf>ya%fZH`Wj(e?PT#e(bR?a#d=34#EEbr$%^()L58w3&mSE~_nPpI^SIOhKW1FB4c z3-MK2mEzZQ*x2B93Z?_U!7f^E3Al63KKBL6;?D+N7LI7)HIuc{>v_6ahxSZH7?W2S zZqi;~M$nbvz0S=#s?l7$Ppe{lvdlEJT6LJ+2!#NzN(WYl4zl-XHL^>qQE_}dXm~}3 z`J5kC^JlA8)x5(R!}t?<_F6Curs|n?p+l>-zZK-)%O8*~w_JyrLy+)NZh#^&l*@Bd zXR}tLmviH4t)|5>h#0b%A-Un>S_S<271tMNH64KKV-Fzx-8?#dBJbzYq=Q<`;I3aX zQv7|c?Gr@t!>e+FD+8LE#2f14Ht?~B3rr@@g`(VN!Ppb_>Y#p-Fb2%#L__4Wf>Dm; z4RZzHa&1v|tc7I22+o|ENlFzJoH}-|t`$j9S)PT}J!B=yhAJamm|=ca?16xbbvS&y zc2&Xe=6bP;@8FK&V!vNLPSu^3)~jHjPBn_pz?z$)Rb932(-z~Z;`tzwhqzPamKpAW z@}rv=hWnfiLc0*AQBFHATfJO;TGbXHY}eW&u(NZ21T zy0DO-*agKlG|6q{Z^o=$!r!m*_sih)T9~dH+yj)u?;(8e#y)fxD!z9DN=8jsvJJ)8Bg{KYv`)fHOSZvF z!v#qPCZU;^+P#-&GAiG9xnXmtkNRa2bH?Nk0vd45zrw46DLVa;%0A%jR78E{tX zVDi~OFw~C}%zv>~6NN^zwCddq@=nv?%1iwytNT?GcU7a@3XG3(JBjx+!$eiW)Ezu6 zKw3@a|HAf@M6bdna7f{2aEyqjHzvPZ*uTSt&S7Dy$5TtTZ7Lwl{sG!&goB>)5Bo&%C0|{msEg%0>X7USIqZ-ivw+?G#N0+P`9!F$EXITrF=0wrH3gV1F zI7YVf4gq;gKCt}A0bVtN?~3qY6PWRMawOdC@g7&S#fY!!NR*SXeCZW=>whw<7Z`zm zZE{D`SAn(F-3z3xGkwJbM>T16Cxg1R-avfUua*vhuVdSW#*-GMHuYCBN* zM4A%5nWWSvVVXET0CIo|bgCRUM#re(3qcZp5AP6k#_P2@kGWb8fkF^g{v>$K0Sqkh zUQ~dXQoyjDVbZaWw#%W%hUsqjqEpR6p>!&2f)6Fa(ZXrG$h(1gbc;S3%`37Xp=TY) zfr+eYJ~Qtgt{I)-+<-Ef2op9i#xl7m@MPi_!A~4Ba699b0pS`Qw)62@(~&?PK3)

)MwYu4F|9qo2`{N3j3%b%Y8|s zjgb0$;l7L$7*8X^mlwvnd6+5WzRZWesW3cD-zmx>8Kr+*!C@K!mz}4tz0^ zaEG8sCR`6&3qCtxG_e?CA;1ykyw0`1?yf=w z);Z_~9k$pir%HStq~4Bl*o#oUuH(5HM>%|supihTH5J)b=VZ}S;UvRZE4}hJVVD|i zs}>lBk*uwZ*1`L`V4Fs-|J#$JtlD1V1>Y8=CJv;GTtL1p7Y!xs2Xd`fnC32cqS=jx z@=Tx_v^ofZGNPsag?YDX^@$d4x=yS9_#|=aKlk%9(KgLtrT|(z*4c?zyEDaDsMpSgJq8TzLd)o>sJ_Vyt3d4%9o8Tmc`+0)>KTF^ zKN2iJr3^?Hmdd!>oyzAQq5nj@{#hw z5Bbpu6cjKvF*Y6@Vk15r&RHMUt&>T}MR}7Ai-=oR18*!`CX;|3OyVlI+~GTGJoo0@ zBEYRGX!ZVkD*PMAt9kHH;t+TOGQ^QVJ((1E-^isO2>gdg0evbr}-bEDF4}%a5iZqZe1i@>PI?Uvj*$jC11f zd&Eq?Po^8kJe3EWL6^ArtX5aYuVwB~ncFP<2Oak2yx@9UZM26gzof9obsh#YR2_a< z`MttAaeUC-fr zRQ||&{9Z)JW~E}ah^mS(Iw3l>KgSD-Em}SKkc`xp-|2D77@h*go#IT4Tx6CpK<4qH zsAiZBXSeHqe;s4AfRuH-?R4YF4Q0xVVr+bFv+f@@aD=ObL{nr1r%DUC4aQ{Q@-l1= zok2bex;1XcV@|eL{?YO z_>sf659#u4rFZ%o{37ONeQ?O|R6CK^ST8Ezk>z`n%gPu2x>YNNqOd5qk1XF(n3hvxv)Zlg6-6<434f}~Z??+Q0 z<0wD8PCS0g@6AFt*5xP})qAT}kMPEqbic-@jPhedlQJ8rl$QWTU=b?%$HF0yH-GL}9&(R#$G6*ku`m3OC5l=z? zwr7PHJV|UMEUeVw5NP$atwuvy49a8w3;GDhiiV8h*X%j(^ISDXS<3d?6h3f`S5iK! zZUQGUepXnU6>+n3URcYu`LGdoTSMqNaIJt=Twg!D$crv=f;n1Uj54^0cUccGp)G#s z>8M~iL9NGMxX+1i!lRds_k|J=9>%doftYv(1Fpp@eoiFMamw`wUQYLj&+Xm7N{Ur1 zMtFB-4MJJv^yGjP*a9(=?k6D-%OHt#9dU?R#W+BS;siIqnHA0XL#<9@?$$wG-prbp zMUsmD0^BY4W?+M+O!ZZp-ZUN%$LIX$8J`85YLm4x|C+{QI#JNm*7#_Q@CW?aW;uQE z%rs_!%NOO*Gi5yy3sC?zRuQ6iYKK9_eG+QIxcGfGz(57okb4DY7UD%rOt%EOvP+G! z3A39`04cQY5`L4w);mDC2e~y&ce$wg!Z1;C9$>Im2n(Ro6OFDs&5NTNR9Tk!$}-Bv zDGxO$#$8mkOJN`8KK!wSvt!1^rw?&~!s>Ild5?KxBUdgH%*636VDLP^UCYOW-Wz;Z zVmu|aC?Cn{w<@p1M0Vv}gy^Om%TwMpo7=~5wZG4fJGVj+)KKqQzEh8aDZ3B{wi>3Ikwi#?T**oexj68PX-qf(o6I9L3% z$91^y)67R)ZV8BHpAp6z-pY(%&Wo;uIVaCO-kiA;WYIZtLRHO5r*a;!(Ad)Oz zlDN~abR^8@OaTlNcH-fL;#np~$Vrerz*wLnyFu_8=HWk_>Wa~U#)p5Zo$md@rM&v}i_=-Qt(@*BZ3u+Ib3k-A z!kH|S%{UTxy-f*Cih|POM6hn$PZq90BXLfv18KPyl=Ikb=$6C36Ft-9i%NR|F_R$0 zs%Ai(s-q8A>77*tK7-(o$(l5?Le@oDF0EMzDxu~Y225g2gaueVfDCccg=ev~?=koH z@Zl;HJSJm9{9O@27vD`_3A3vqTYClTP&^bQ0B0VYTQK~e-Y$}Wbwx*A&!s0T0)wQB zxq1m79;OsMGWASxo;PWAE5J`e$R;q{xSN4F{#e3Zd{u`QUW1~z!SHwokDNL{2*MAp z%9p13(LBCJ^)S6@+1Po*tKYp$Mv#!Sb%AM>;bY>f zp+uE%+&3@=%f{hgZ8Q@t$_%cK_qOeNykDYz!Y+Ow+J#XbA%C*zEJ&O615q#MqV(tU zo7amKVhxR6in7LCV-*%!4{BL5E28*iG?d&dq=RA>Rw@&}lVO+W@O{@Y#v&OblR?td z`{A!Dl*D$X8su^=b}_sQ#*k@7djtjXP?!~&%5m3_Yt0qrk-^uC?2Ba*A9wm^+PyQh zdMEl>jYkxm-sz&ALp8-$;{X5?REpz9yHkACTH=VfY2`wV8>n$nw$?1W@jSzCA}qNE zqrjY@@GA_)!e41PDFbD4W;H8|<&jlKR=GAs?2kLht8WQ*Tju^XH@F;v# zjBUwlsGZE*VIDi5!M<%YPCozl4*9(`ScK|?`nBr;nRnOD1gl+s*@D(_TmYTmW6bja z!taJ}R`{*~ns(`4NuV4tDc?n7e_FD5OM_1kK6Pt53(#_;0n z;E-36B*jmKS)SmU@CS%9EH$bCzPWkyC>~%M?-YM2^8;=Gl0gOj-TRsIWFmV`y}}fE zp@eESGmS%9y@WCkhYxe-5F~i9nZZackwTC}!4sliU)rLBT5y-03i6;>u zo>TS0Uh5DQL}mz-KH}%2+(gF>pz{`!)mp-D-h}{c0PugSppwvOSRi=y?q6oUKVX| zd!|F|s#W83^I#3wNtPJ0LNPQipl5b56`p8Y0MDDyM84S&RE5cLy;eplij${ON-+Pyt??Q*wo zle_yGs5*skyzytV+TWz`dfJw3>r*aEh)`t-DjOdW2d76aprJGI)rmFmdKA)W@}Lq~ znlu@yD= zg)z$kKmLfPh#<867@hJnJmgm6S+q_StsdTgfge@rewVo(om(h6y4cw;c=XQ!W6;x_~v;WmFJGK?uZgm%@eF7gs=FLut%=oKVic-u)Dj0-)oK5 zT7!;+bLWE7Ccv(T78gq1A{6O7_NQI^j-P`hJVIA}4-A0M_reT0$nc&Ez!Mr81_|fk zU39N`lUx8_ZG=UbV2^n8ej)K#j!6QjGHRIYM_A8zM^x}SCy<#Y6GS5{*00(EDX>LFg+Eilg31 zkbYNNlr5`_Wt0n#i%&sdGg0D`Q5q%&aw9AyVLW45VjFLKZ-Yao>k`Rx>G1o_Zdpm_ zUS(IafCE#2v|AMLkH75SW+7YTcB>$KZYEH7=uYEr3}|&0OhGhXy_;zMY>5yuL}rBu zx5`TD0A=Hv0tzzX>g+m{_Yx6Id_(;5nF)R(j33}NcHqSoXA`^U{o>d)xce8meCn4% z2=0hRNZJBgW?I0(1>A-D$iNyl(qJO=To<{K2z_W7m+dNCw(LsK2I# zuOv3u;G9_udi3JZ?5b!mCMdQ*qVljb9(^Pz3F4=n{&qiT&#MVO0eYFKnt+>8@$8MF zRufq{dI2%!lkre4Mkr9mGgcF&f5F{rk<3*Yr<8R}r4TpFazqtnsy!slV68BetNU>D zmkm1lqE=qefd?eD@lJ8|Wr_Z-ss6)`N%KqAZH}yC1BnD14cs8O#yJ}F^Ks_SS`55b z>hODCF*qesj=5y|bJqZqz|b%Z+CZo|kg&Mc>$l(pLZ)`T^6!SY#^q-W@ubA%4;?0K$0+Em?vL{e=^-Kdx+I}747gUP{Ix6bqoRo6~7-8<&mr5 z(~qdrKvFMN;)3O54e)1P`CdCf3ExXZA@q8C-z;wbfGk>%j@v%~A%(k69Jj~lj!*LN z5@5)Za~h3Ifs)CyGra^qcks%&jF7n3pvY=qtZF|zH(?d5%wRl!>yOYL63-{3h&B<) zdql`Hp+&1k{)wvl3GB$K0jBzAQ1#Y=`GMc;DPsD$QHEnoJl`7Q2R;G-zJ60kU!od$ zp5)y{91FExr1z-!KA-*Od`R>~uY#D5s!Oo&vK1pW=(vS=Rd z>{V_wMj{eq+Kke$jeMf6sVh=8bIonx?_=@;UI6B#ZlMsL^tNUOLX%-bsy4(Qbx?#V zd>*EvR%v8Xt3*huM~ACB(DR8gtc8aLlDt7Eap@!L4CfWOV>je$LWh-6Ba~(eoQv={698gjf^#E-_RrII0T2Q{_^fme|B zfTATVZ{H_s$Q#JYsg9|!wmn>nq&^Q^gDDUR93NYJ^zhFBk2OlINA^75iJ)6pa55r+ zsdxlkW|5G?$Tot^x4#~VG$nHK$5xH>wE@w)ZSeB%T8%_R35WhphJoRaUN^i!O_Fd) z=oENk7l!?+UJ-8l{x72+kwPXC9xidg>Sl42VZO^Bg54eR^E6`m6#a%!P_I% zQT1-n&3HLe7}b4TVU*}!DT~U0-InqEW*F~UhC^aAOkIj)@IBPhrJxP9YJs{O*FFFf zyCNpe3LiEMB?cfCatMkB>xd;9Om0ud0gQj{^WJ*;wx3W!Tp%g}1u6z<80Tl$izrSt${%Kdm3D6EM{SNG`x1%7P|8cv(d zYxwXklpo2K9NFy?+qp?{P_m!axPcv;rfBu+f-?h*FIeKCz1997fhsB8 z#$jVM9ZEdp=0@EQCrN9A6-q6w=d|tHq*tgZv z&09={elvD~2%J_g-UskZTWXP*EI$P6UA%NthdULzzzEypON=IkGsL)kZC8>H2mLiL z!7q(m*_Uz4R-Qe|zPVuLYf`ua@*Mc!^)_xDF&^72b3p&{M}Q%Y8U6h6R7k{=g#F07 zsJdl*@esIzH7kqIhy0yuK&i!r0=&2yCWClK9v%!tHz_b8PbU-<;nbn zRqe2PiwSA1nvW9M!He+BlL8F21}8WJ3)MiG!37h{`H}k#bO(}}f&UaQ;U!Zu!lbvK z%isXH9eyIIrKc)OgjbD}$3OR1l>lA>*cLcaQ*Y&-eUQAx zDUs13q+C`cUr;6e>TFNcg^%PU)kv`6)CXAL@P-)xeChyA20DDIfyw}E&AH8@s?S z*rNUj2(m!%6!SbPaiKoMcQY8LxR#^^6tVd{k}(HsQ7x6_0RWQ}NCnF|7)4Syrbo@YyzXN3tca()I4*?6vX4#@X*2?qn9r}EuR(D)LpoQTjgAS@K2O>v*UgZQV!Eq*U zKnp(1G881oH{oYG(`NhI?{)hg;nMlMR8&jW4wV4mzUtj;novw1)h-%p3C9}BEil=VJG+dl-{@fPC4g2QJ~64%6}?v4qkDftV&sfmzMGPIREIm=6Ve`+ zB7rNawL0@`usa#{IX*!G@WKzGv#3D|N5ID?sKJ8H%|8Zo1g}l*K0z)ddbG}tBDcR@ zt8YxFiwu;_^3|hxDU5iOM_=ak5e3Vqhz`PqqjE+vBg@H*n0|^LclYH$J0(A3sqsXz zg|{&?!Yi$ONqN0hf&}UY%81x!;km4=nOdk7IFB#zjKuZrwQ8VVuT^crovSXD;sGn` z_KCQ?okAtvJIOeT%Ulg#-7UEk#DO&~HkcH5kzx@s|NwRoYjXq1dFMKr@ z4+^hgDAFVi7^|R$M0k<0-=+bBw8}9J7!!Gmh_h2;cVfmqel}8iGlLAsp(CO_gRlw&o;K5-F?I}FpDj_7IokVxTZ^PpF70wNQlt*cQLq?X^ z35oi9>(Nyrl8y4f;qNm34~Wc0q87u94rNm&8{G;S_L` zk?g>~zz?m1?IZ@d^^KHgw_u~L_x3jE@K6=K4Wu0c)!>;wR2C7j8r*A8kJ%1U+#w4o z7WHlkqPr8x47_odiCayb%Vd^(P#Y&Cw9JAe?KDX{P0~)2w9{lY_A>1>Njpu98<=*Q z;3i4@pJ;B-Bi|X4+{IC}OW^r^z3p(L*kwl{+bVmd z>&Zbf!vE13B~@nUQGj#~zlm9rEndkUgB1L>^N-EAk~+DskRYd3d43h2r7whpxuP&b zvi?*NTTSTl_!QELJbQ-}3g?`DI>~QulpVf8wUk1FL;fRIIG?-1|AOPIhY5(06gE}O zq}{1%E>iImKFr_jTpV5@1t>X--MZLsP0HFNZ%LNiy5A)FvqV>yGjFnx5@n@sZjHeG zB5R0C`Quu?-jkvE{W45;IA-peq3?On1 zd2Ur;ARIv*nTyL+B)vf?fT^ zQIsfkd+O6**+YhU%cR3+81KzGs+5&Q3?WEH_$AuOES<79D zMKFl$UGLEmA27RzKHH4Ez`sY8*CiZYM-4i) z!hhH*yRSV7#YO#%`y=0qV6V1B@gDHXwpX&zoz$q&Jr}97`Mp9|LH3xs5j(&xIiZF5 zya}PQKxi-DRyu;t#toX?4or3EW>^+IZ?|`&MCKfy=`7dw^qD`;duA{IEKh{@WlO?q#y7&tsT9X zu&CW+C(lMTZloq|k1$DGC)#!oY5O_ajD7zeV5DlBB0}l4&nOGqQGn%; z4cR3vm~bYOz!8I0 z-`IN5rvqZ%w^WC(flX8Xjj1{~z$|#v(HSYRR!(Q5Q=iWS86SF-Uz=62SmqtjQ2O^X zU4B_ypB#EpuD=FWk27HCE?0Hp&!2tRjHw4+U^@n>;M&Y~9_$!>RGZE|+H|l)Qiv&S zI*%d^N7_)u!ff4THaTd=oXKW4i%hc)5SU87-`c9IOPCk6e-<2eJlnc^pkHgkwt3h# zghkk$T1w+TLf3&kF4^wjBggMkR`4mftA*}YU_-hwHT2jq)2tbzk^Q)|I&=ZZ+`xsG z9k!ra1tl}|8&`qU$xRqGyh>Fg1ZKxFwSrq@cac@#KjeC5nT|fdwJg_O zmq>!lgUhEz1QW==ucNbMyRr=CzF)fidbkKxX!>y)ofU{(;ye;_f{}RQ;wRjLYHy?I&QwGg^wBS ziV&39k3l&AI}Lv9fP+tspuH$}kbML@bofANcaf_66ANyp)FyZeM_2I*VS}r()iFOrKA9fR}w}o!K2shd1%0 zYzQ%OEx#*@*;0$8crFkE!cj_4j^=yP+n7A+s9C^8eV($R|3lMTcL9fh3`SxvhxesJ z@%K7{#qXm@>;*Oxp5t zT&9AkpV?hKJzQm>WG%><1d^zb{hyB7)a8~W;gBA#GMF}QVO^gdu0pCTJzOO{TqQkR zB|TgvJzOO{TqQkR<=7L})5BE=NerZitE7jkI7!VCbw}ypD#_mHPZ5=%U@JXb<@bvA zQ^1xUu96n-xVp_XreaRqfl}rWx?s;DwIm5hpWI4&FSGP>ESBr;VS9jDwW2T^l+6( zu^YR!kw&5Pa1{!-(!*8K!&T@-m3FH1aFz6M6-pP`Tj{qrfj&K4g(Vrwt>o~h{PD-n zr-!SghpVKAtDLZnBt2XuJzQlO@ozZ|luDed*oweeNmOe*+>&$UK-5(Q_WYsq*G9u~ zwhtjMk3B8&P5j1ZwYE}QPGrL~=e?Sf9}jobleCkLdJZgVm-A`jFPcWLb}t&s;0<)t zucw>-N@)b-v_jbvbLu@Dbwj&6<94jjo$p}WSzFyc%kH0#A*?nKc21X;`r9nF0;*?Q zDPZnoyMB!JHYgCm6GgrPVgo@TqQkRMV3|UA5JMAd)X@Q1`71LWxwzLrw*wn0hk_AFRjFE z*O4Bs^46A->ESArMzAq;dbmnB>KqA0 zu+Md_&b@{0x=Sp;y`}t44_8SKS4j_7amtD#RC3svS>~XCFg;wwN)K02J!>l~6b@dg cXZccI$1#W$s=eXiDhIpO;Ll%fde_|l0)F2X^#A|> literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_137_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_137_states.bin.bz2 deleted file mode 100644 index 293c1f93f818c8de4363209e0e4828e85cd48c32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2914 zcmZ{l`%fAP0)XjSwd&mZ1epz2YgH^bQD(fm;Du;gt5zkoO2Oem&>0xLP3{MAFF8rn zS}jZXb=-RD0=e?c{GpFTCTu_)yWH z#UD;xEzOUFS6+UUJ>(J1G4smJX6_1LQ-%Y1P#AU?o`l1z2x7%Cq3foS zXjGqbn(Ob8q3dcd9&FBNUvTwA~w z%wAW1boer6Dd&Q;V68PVNm395EaM|b=>?rLrE|s4m4F+1ncv$+z<6!DKyJ2%AbAqd@?C?_sumD7JX55YbN8} zH&yD3X6O3ty56Kc5*|@{KwMG;CW!I_qLa$CKov2fBqf*Z^+{%Q?$pPA(xjx$d8{yD z%cPH>M@&UF1Hf!-^wAN^7}?TXe{@`_=}n1QlyyhpVle%{ zxzzP|rZ=mzv3DQ=tS(A#-V|kFM1c}MrAP|}*i3d2zebnIhsYpfgBT{uU(iz=&%4``lPMZ!KISHxW>*CyxX|njzDkAf;4X;t&fZ1OI?99RUu z8hTx@Y6B2L8C)&0Z?P01MJd=OKsv%(EU*rK$usQYt`s|ez#Yh3LpStAPiD=3dou?xDX0J?&fxNy)RDSyO#((M`J4l z?fm%-mb%8;O67SM5W-H`SZGkIV6GOQmaDpagXdmrOftjg15Z0K$nhmbtp6#rprN7Wim|7>AjCuJLNjVqS9~Wf*P-!ih%n{S~ z2HwiVA0oTgV!Hjha(YWsEIp#{FWL;|oPzFb_mR2=o&L;j6Fyuw%yd~bya(cryF;vd z+uSa5WR~LC&{3`%YJMKMv(FD8{4Q60GVWmlGqx&0tXsBZ*k8JWxEIP4Y#EOvS6TC& zly#6kN)L^Z-9i^Y41hc2UTm28epM^$a$r$nr-e}zqF9g6Zux0e46~4XkBxJ0J3Jq< z`-1rTj#Uw-v3S*uE#e*kR4N|>&G9w}DFt|K&3|o}=>b0_JiZ@+s^LuPp9$rx!Tep4 z(l%=0)$ct6Z+qktc}XHY%*3CS+zi1cEiXvybr`imVC=hPm)H`%7PPpmJXfuWK<6C^ zVu)SMDB|c`mxHagQ)K`@zE##0DRS>TY$y* zLciZaLK-If{5()gu=D2&`u#i}4`pI07IW;rTwJJ=bL-7+a^MV=KJaO(gq2x~`0cJa z#(8n1eh|__rgiT)Z{E8x%b7b?{&tqt=8W z^W$!cjn0)a1I^GR6*s}(F>-FbO3X|^E+4jN;Zb<|WINr?Thniv_^&GImIVy)jJ?S6 z=`aZbT#jkal;@+_1{A|AncPry)9AYy||Cze66RprH-tY zq}%FZhy+A1eI^j{@d6TMKq3X;N_~Qe8=i(Zg9$P>iu)44Rv+{T-vU*wo53s9B0$qg zG3u@e=?2*B%XjFOETN!QOeh#qL;-<>IRL|2`jAD2*r3JS!NRj)L;;6OIgZdGyRDP~ zD?p!a)4wzTc3heWhExJU@XKOR_UAGKq6HG^vo807&%HxfU|UzE{`yHTsbjSQJ|(&{=Q+RMr5<9E)G;^&X2 zf3Vf8AEst&Q}f~mhKz-w%;+Jk`=dS@6DmHb0l9)!n*#Xl{a*)Q!$rUe{LA*={|9^`7BK(- diff --git a/client/resources/hardnested_tables/bitflip_0_137_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_137_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..e5a76bf3394b417fee66e3e14ecfcfdf844ef498 GIT binary patch literal 28775 zcmeI53vgG}oyX7pKSC02?)d{gcm)FZ0AffeC@?XSbvh%0A&K}bK4NjZQjCV$U9>E6 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_139_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_139_states.bin.bz2 deleted file mode 100644 index 97761432b480e33fdf4936541ea334c37ef6223a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2400 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 S$)~F(yMYv+9%nt&>;C|TRVgX} literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_13b_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_13b_states.bin.bz2 deleted file mode 100644 index fb869e7cbc765ec821c8731a591402c6200914b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1405 zcmV-@1%moQT4*^jL0KkKSv223`~Vgo|Nr}wxw`>9)g1v90nh;u5g37$0TDqF5Eo$( z6;K3K)EM9jUjP6A000000000EVKiiDXk;*r42GIC0Aey^0|*8Km`xcP8W{{DLm{S( z02qv!0Kx%)<`YInhK553(8y_{Kn5cwKrnz{IfT)Xp`nn%G%^}!&;f|akPILg4q-H8 zXlP_GjSPmGGyq~UWCI8W0HmaeFqHIaCzQ=ikq=O4G-%PIMi38C>8YABn^WqDC*svX zE692jxT=;E!f?f7-v(niGGgI$A9zX9xMV{3QTxoF5co$ExtCA4J_XWz%%#zZ_Ri-I z0hIg4seNM?OY@(s^}9O{+IC!AGbUU-mB7m>m!jct#!nP^8JDn~Fs`10^D*XU@|gEb z%QG@h1M;3{9w~6(@iKUwJ1Wmce`4wCdOgN35}!U&pWdVsVQX8ChV60nL8_joJ^IBaB$#87!D`AGB}v>UzvR?=uboaSDE6cw2vhB6DCY9 zj88Pmy~F#TwU6*SC#bSzWU+pdlM^L_B{7kgsW_tyhYKj~g@+D~3D``!SY6b`II&pA47wA#FNr&e{)*yD z227pDO5(VkCL{A6!|s=5mRVyAsoiBREL>tSmvaXmPChcrhf3_|99&%;9XQ8K=(x|3 z(~gfLCF?LcF*58OkD1tJCl+>28E|K37G-eZl*;KkbgaiuQ;UqQhDQq}*yt|>hXad= zVT-}*cX$s`oyXx$?hC}rz>h<-iu4$-C!;gy9SPl)*vj)Tzom5jEA=>b7w9{u+;PXu z%d+hD9!U1MJs#D?*?1W~!QIewK2?t6yMe`hhksWgXy=<&bjwW1jSHMm&@IE7= zKFRKt;Jt=k*Y&tpG5Xx%`PtyElj&YaeJ|9$bLbykK8L<>+pGx`{V-Ka^x@GVjF9G6syPcLhESYg}V(4cXIx#yj#~d9T zV~pv*?taoG29%(_wki=mq}7&6q*vt;ERa}>6;pB8wrE-{rXm03#RI#w=%sdNd&I1`3dESCcqoGHT z3l|p=#W7gIVzH6N;;EA>BZ%TtkuHp|;U@^n8CDgQ44EpjGBGe>j8$c#WXQp#Rhlar zl*q`$z-5+LSjx3!YBH+A%B;wYvNIKy7|4vWtgMR|rIsOOl}uwSs#wfnGRlm}A(lkT zC^IawjAb(wOv4#S%q+neV64hm!IlFImRM#|F_dOh%vKpn##J*0SWL*w1%?4(|KjdQ LrwS4Vo9G{a5t@&= diff --git a/client/resources/hardnested_tables/bitflip_0_13b_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_13b_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..8bffa0f2eda37eb0bb268ac62b037bab700a5c0e GIT binary patch literal 15338 zcmeHNdyJe_6+hq1ba&bAd}sQC-EMbhELhvxeYPsFEi(v-3N&3yM4<{J5+7Y~x0G15 zw)+{Qq|kNON3@Ft7D+Thmu*sGwp(h4N3@0}EYXA*2^|f8NZRg>wPJv_$KSc%Ja=Ya zSv8t|H<_95yZ7AJIlp@z_e@~<#_D^z4!_z)bl2W;A+g98J$nv6Tbs_Fi_s^TERnaH zy2tT*i~jgTdf1{(Xt)Ev5;kpznF1oR95qLnY&^C$c8^CYK=me5#fGN)-=GTAN;gy4 zE_8`e1JmMNXw&g9YMiNBB+N0AN0=6h407|*MeNkhLW2!ld)nlM4 zk#8}@w81S4Y-&VxKhxEw;woKTyAs~P6fsrJsPZ#44q`+M;gb_+VY3&sFH;VQq|Ey^ zcIJVs78NaSy^ioVuwW>?9DP5O>3cuZQq#Ol#xiwE@Br&RTJpMV*S HIdfJrYq0kN6BBj+*f z`8(?n;J6IZ zuz);TCl@g}7EpGSoif=E4u$hr3{Is%zX#_HBjcb$n)F3oQ`DwK+_$<1^!R*A&n7G#3IGL6SUhfC zHo0K`UY0C>4hXOYWGga#&^f9itCVMy@wxI9#oFCA0S1<=SM{-0PTe!p z(1;voYL{j(I@9qGI}Q4L$lxMVTkzY;^xQEOUc{zfx=X?-Fsy#qrV*D5uPa0o?)KBY zp?_cL)U9A2ql}K<#4qqY2;SCV&(5xbX(qh1*-6ne`cw&NO(1SBT zV|wHXrsH5mB1ilIv))BaNs;*qi>*y!e5?~+eA5Njd0 zb!c3!DDq=QD5g48;W(5BF-ttwVULn-z1f9Jio3{2${`NXL#sHNDJq zBOb3~+Aq?ikOh#`6s0(%t1Bv-*ch6miswqBP9mTg0}?*2%ZV5pT-0mk6}K^UG1mU5 zyDd8f?R^;FS~JrjUSPWSai*V{?R*`*z=3AnpfRw8qhOLBx;1}S(4?3)D`wgYspMMI z*DEJ)plRGjvI$Vm3WLttq*14HLp!c05G+yZh?JH;mKiI01l`O66w}X?h9`XAc|ag3Uc){eXL zPXGO3*fAW|Op^X_^92#j31VCzo0<%K!Q7PH|bb^8o&!?5gju{#XyvKpT^Kvr)Pgs67%^->lhaY3C0oLRLJiHnQ@ zUbd6!;K6_M_oofToyGHIYs%CsHR{d!rz$k{o>KrthSyobNgg&Utcr-=W%}d|Oxr~I zwLOvR{14y_sLE=Hwc4%@Y*(S;`5@?qCP2oF0z-iVqcOw2XxdRqJF&0}Q1<;$_D|iX zDh({(5BFzYkL$07g{r6Z7-dG$7o`8sOe0-{pBc18^X_KpCfZP9x zVDv@fvp=WD&I?41^d|Z80@2cpfx+KTh$ar{rg69yg{)NR~XOi`)^p+G-Y zp7EXci+l~vT$5f^uE8*U6}vRbZC{P#ou$b=n!#PvBu?}sS5baBp$<}&{1uLL@2nl^ zRBx$mO;&fCaWdg9>Q!O;7^fy9{EyT_L|yV1I|imBLmFzG0t#N|33q6xUs z1qD~D@u6H_1bUi$)Xa~2{gcb_+72%FL-Lvm#DaGnPzRRHU{_U9`Tu2hcT2%t(lv9> z?mG7*aO}kBpbw d^>Vv~h{%6~!9nKp($4K(;pTn`h4*b4{ulFrY0Cfr literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_13d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_13d_states.bin.bz2 deleted file mode 100644 index 46b67bf8390c313cda54c091e96c87bf6d9ee92f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4000 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_13f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_13f_states.bin.bz2 deleted file mode 100644 index 33b2abfc2ddf80b050eaff7da949a19d7e184dc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2056 zcmZXUTTD|40*1i~9WJ&jNI54dAS$i2Cxvq$yJs6f#Za_#0n6=l!>yOoagt58-6;v) zP(*>k8LE_)b^^>GgACXdT6QyC!pfzz(3UWOvg%|uTMD>{vrI)qSrm63H`)LBd-xu{ z{F%SM_*?jlh*2Pl)v&Jzi03}y&kon#3H)bJ)WM>tz)u2h1O*;FbE7f9MR+5w2mIfH zNxZXXZjnx>&IbU8z(c{mIu!8ebU`}3rGO=70aniJm$7iTRr%B17Q0!G|r%iaOE|EmLTC+1U_Dz{9A zZ4qjCNK$M69V4)rp~@?1>{^FTW`_(r8OQLFDe)Rii#&lgqwYRXs9nER8k0bnj!a4z zXF+86#E=`7Fc5K*J&2p%(o0?26Y92$z$}n2J1H^r0?4iR1Xd4yW6549grSIWi9UY{ zDO5UT$vBQlKk=}f1;=~}>-DVoQv*!&z<59KfZ4-&RAQn zMh2zv?IU}?So=IbqtXVj++edB@um8hbn4Q?o@QY)UH3jt`k^c%seiiyb}a5UJY{Yk zbzIdjwHni<>|0wJGWF@`V5NBH;dgnBZxzGT{^Hp7nU9$nndKe^BHUY0^p2YoYL1S< z@G)oBZrl6EHc!GO(vSDt;k3M3O%uVP1Mk537d3T#p?;CVUmf?EcaS}~zN@o8&3OGR zofwUcwp^l8w26CEa#^xrr~G-vXG`PWQF6}%x83dC-r>fuX|cJK1g%TExqp>A-RB)^ z9u#c3cgd^QqF<#^`>&Q_yX}8BPR$KEw&J(5sxo>Y<(1fw&GOuby$(Ax;!rh?tsXpDBK=smWytb^ppT_-9L+zTtKC$|c#2IAL zrFO5GV;&jpn!dU9@OZOEt~6@!O>V~+w8Xt;gse0$qKI|i-?z!0O6_e zWkL!_oY<^lrGXp_t*<}|AIeu2M-rgAjO!M`2m;cAv+6<|^WrMhX0g{UEpBv_K}v1! zq}2m#a7_fAUP3;v%=uP@P3VESCa!hH6Q$=N79C=6=x|6I;S$KC!O6~ISQF9DLQ8mj zEiE`40|Z0Pg4>D9h35W*n_WR(@i?3vsh(Vx(X%67O!9;sMY17-OJINo%pibFw7F-c zNAMJO_(;FQ$W>USfTtlBZoWM!am#>W%%RT-B66d%qr%iFp;N;N)#@Vt{(R0y9aLWg zU~C#@#R)4ez^qOwOc)7gyqLOaEF$1L2#!fWLFkY}FaS5Xal}eVEO{5SBvkb-B`$Ek zR^469x!0L6p*C16J&f@C0t2oWZoC8xf+0JqLR^i$6sU#GhG0E1{Odo+nPkC$RV2U{ zdzu*qVaHj>aH2%}^<<)>ltK(MBqL<39tR{3n54b~D!5fLGfUtFjC?z?k+^83g#$*u zYR2l)3l&H^jSj2q^^|_qT!==zi43zuZ7EUm$Z&zYa(0&QIl3+JPP8pc6i!^JyeyYv zRWRNVE?Ay-k0_N=5UD|MYrlh=eIozs6a4AD1^BmZo zj(Sp7&^=v>pp!oDN;tt)y=${&q0UX+}Bob?d z<>Ba)?G$rMJLX9Vn|KnP%YiVz!`nqKCq;u{DKL=&S%_DeqV zl!oM@w$Sf6#&Y{aq}>iGE{N?E77g_^Sbj=r(mvCnqx8VlN?P1LXSGSueKb9`c>liy CVynLZ diff --git a/client/resources/hardnested_tables/bitflip_0_13f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_13f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..29de4add8d57179c1e1f3770bd2a7e23db2a42b0 GIT binary patch literal 21315 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 AzyJUM literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_141_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_141_states.bin.bz2 deleted file mode 100644 index 3be41189ce654db39049df6172e23ca7bc971cc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2798 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 diff --git a/client/resources/hardnested_tables/bitflip_0_141_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_141_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7df6d080bcd223ff9e22eb137be8eceacfdac4bc GIT binary patch literal 27811 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_143_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_143_states.bin.bz2 deleted file mode 100644 index 99328786c5ff4f95d8ed77c676ed2652d6f20ac2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1533 zcmaKs|5uXt0>^14YCh935I)ZtjAJIHK4}e^hhARyvNc1B$p?DOjup+qU7vy>8(DsPK0ByY};`TO%?b;^;{AcI`PaM zGY^v4*^HC9y^djLBm~Mhoz#*}v(F@bT=evcXvj6X0+v_spW!GlLykI| z*)o&}cuaDaEabey$*Ar-6h)h?;1!nUiyIbqVX@QsFAPX>zTe2X-yAr3DKc(YXLXD0 z1If8>!NhDm#w^)Mx2eWK85%aZc?-{<81H2syoLj)Q*aBl_IYN?>Hq! zc5kU!7F9c!xFP3PGKNVtaV~4r@cJt240`hYA4@luS&bS}AcPUib5@fZ;QEZw6ZO~E z2A9Scf@yK9$D2RTnGdU-()sbt{$JS9|9tbSPVUU3@)uqGi`B7m4|mCGb5ena)N3J} z)N&6DZZDe#pv?fvY9WDTFx(zLa%wCRNQy9ku`-&HbCa`5yr!ITs*pc4QKr5Wl|*kO zv_%Rn;?|j2F{i8UCo2taPByz1a{~SAJZf&J<7q-0i`E9Kd>ksRrBRIw+>ilMo}h_o zm4$OagBp#%WzHl_8QVASgk|sq?qVYQ)DvcLP6`t{zu-(dZsgM<#)X?E8{#YHr!qOF;!~81^5oeG%uo8h**}ENms;09e{dpm3&p(UK)Oy;oN3vHX1-B#q&p(>-dxJ; zl;AElfeds!qsJ}-pSPKvmVW!o8JP;xUqE!9NlS0mQzeozeT=bTw8gX^a`Fx~XLhrOH&YYa#ni-$dF=oS zZFOhtz#z4kuwlG?M&ACrYA39)jz|qVq-}|4odS41ZPiG&dell>bB$&Iz>6xZ8WK?! zB%-Z1^IgpmO;>gWdd%BZB#s++N+yExF)D-`ZSGvef@3^{Fl8ApVnFTVB>)4|3FzU& zc0nQ9PSy?R3mc6lsl|c|MfRov>A|-Ugp}g7Nz8~kk(mv{K!d?bg^8(_MJ37*VvH$8 zu_Oe6ydERryT;dR21w*0-zT+UG*ZZvDr-+ey`p|YLnp(_Px6iuU3J9$y*hl&|<1@-L0a!H}e)AB>;y>8ET5x=UddM&Y$DX)A9sY;5eg2BZGPm T0jalk_a^IDmgvBl-|zl6lH;V2 diff --git a/client/resources/hardnested_tables/bitflip_0_143_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_143_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..d6fcf319d006ad23de643a64670324b66c779ad1 GIT binary patch literal 17673 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_147_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_147_states.bin.bz2 deleted file mode 100644 index fab2780c76e4def6fab2111ad3e2d35c4353a87f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1057 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 pZBE|iS3oJtsfGPv#ST*RAf&{|O~1jBWq` literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_149_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_149_states.bin.bz2 deleted file mode 100644 index eda7650e5a575c3a57ae66ad65c9becfbcb4809e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1763 zcmV<91|0c9T4*^jL0KkKSyPR|EdUt+|KI;retZ#8Fw_@ea4}Q>7hs0g5kLS079aou z6j5Dz;0-?j2gyW=lmbBj00000001M5nKWn(8e%duF$@W#OhJgyVE_gkWXYpIXwwmq zp@?8j8e$Aag9rdH<0efS14fvPjSNEqXwwj4G#EeuhZ!A$vWN2a-6GoVW5um~V z3<{D;V2qxl5l>C2so;<^N$PC`^&3&385oZg%|KF8O+si>)Sl8z$pN5fG&BLDN2oLd zCe*<{8WDbf&`PDkky%wBeoU&U{oJ8WmufN$lK{n)5W^NMSz-$^l*nNe!HO6$C5))1 zRamPQ62?-j3`k`$Rs^t0a3%iy9TLi`9Mc{-eQrUZvXUd8E%Zd<;A|f4Jk0ml<3*^Bzb~CSN&)#xm_5!He2_7iKuW z0gtjLnC)Tq6>w#K75Eq6Uv+#}Vt;{UUvzv~>@t1h=zZsBf!SjBt{9uDOAp|ejHyEL zXArnp_y-7~zATng^c};Ico(LTJ)~_Or)&5Y74r%4FOtJt%{o3Sp`Rl9!z`y@@))wh$J#7j zk2lK1;^5-T6_eO7dKXVO8S*+FhO)?wCUzypCKAZAK(i8S2DydoH<(Ol!aEK1H%7?o z7|+!7HPM+ud)7FzGZuV@L#IXXSmQI|%6MVZ23eRs$?}|E%KT6KeIw%bk0iqt>b+bi zqoavFax#fQNH7jDy3{v?j3WwCD09H_S1{o69A{4jhe4R(SwOOnddTJ$T)4>CIu9Vg znN;K%2T5{9xlc=oGa$bAfUKsHHVVq;N!^}ObXPbkGVPa8?z@Gr4WjYd( zdVEgfDZ=Y4+Ed(Ilu|EVFDWyoWcQg*X_)XNn3&2uPScPq@EH_sDx}L%NWQw%O^Tb2|Xju zEMYei<4SrH%5s_xWZp|Afx4oUkD;AS<&MKaapW?X6O_EhE)Nkl5+~xYrIu3q!{%NV zbj&wvKe9cn@*kZ?@Tu2%|zvE+X`>*hIM~lyvn@$K-fBKaEin>!f|QBxCwga2E*0 zlLA~w{3|HNRx(Uwn6dOH+!^@`6vVMl0+Y#9W3t9a0-Y$AfRl#W zPp***6d@c{l}f4LmujO0F<~)fCNQxuv58&rWHP2Qt}Ilnx)NMUE{MuhT^$8FNp#6%!--YWqogdrSy(}iBu)x+QNpezI66xr zt_j65u*q<-M+PIHO8~4?IN%x4Tq?w?DyVQv3```#bd<=rsgYu0Wfm+QDrJ<*BPlK` zDPZETa4}^VE}52KvmuoXCK*<7SVl#XFfwp5WXh)oQHv>XvZ~>cF_lXTDsZtXI58_L zA(kwebgbg6j+Da|5aBW`StA$&D-$fsrVb}evN8(b%Hfq{vf-9kqQenoi;EK$RdBKv zGE*_dkm6u*F-dU2EHJC11#mFNNt|2((8zSB94;7E7;wUqgA$x5mR$eE+>uTcBoyOt Fi$JmJ9lrno diff --git a/client/resources/hardnested_tables/bitflip_0_149_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_149_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..d22b15e0e9f5d369ff9c15610ac9e49a8e258401 GIT binary patch literal 18034 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 ZOpl7>pNi@IRLtWIhGm57s+M8H{smo9gM0u0 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_14b_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_14b_states.bin.bz2 deleted file mode 100644 index c3c3dfaf3d1ac2f608bfee1a78d9a28f64125595..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1058 zcmV+-1l{{WT4*^jL0KkKSuXDDQ2+>;fB*Z{ZIgjF0hB=*0GR*~02l%pK@b5D0RRLT z5SWS?&A8wOzW@LL00001#!Q(p7?=SvV3`0kVHg4!4l-oPh{V7NlLW{CqX@tdz;Tl% zOhzUEOqeD>4H!lMh69Y5GGZ|>0%XB50BFK61TY+A$&(R@fDNkTLP z^qOg-NXj(YX%9)7f#{xz>K;VepQ?AoDnCqDDKUvyT;?g**qRm$RJ==T7{-iR6Xt9a z(y<}x69C+-QKpkhG{VL(W7?%t0Z*5m)UQ+jHXm8_CgJm+2IJz!H?VTK4yUa3pCfAf z-Az8%r0*ZJbQ_nnI-b?k#PS+AIL*ri(8o&YF?bi&y+>K^9iZqvZg(K*VUHljn8A!r z2fVt@4yG~G>{@rUVcNMD1A=ldu=KaCWyEm~HRK$tpy+NkEykM|@)+?8fx)=&zZc}( z{G4lhk&Iuk(9v*soaT*>?9;UFUd8yX<;3SX$0B?UgGXDf&SU9xF=)}@Xz?0&4T|R+ zrWkXau2W5hCKfG*4rR{ZZ!dF0lz2~Y#c&^Ly{$P{Fz^Ns!Eb&JReyH{=UfMsv1u@2 z)^{F}Fm$|ZUjzIe(_z$M=sQgo!v^yUl(xLjD{IbkFR5Sfb`8qoRwECX*uEq4Ud5&P zyeGlnU*zvP*Sy|zyBA{@u*H7%F|^v9&CFQAwP}vC8ybWXxM0CY1Fp5K7{f$uyQUj#xWXc zHji1gf2R@7FxYXfV|$qIdRXsqmhrgI=WIK~s-7xPmHzUo656q0gBA={1}rL4jf$$V z1w_(}6;W9#`f#7BrHcq*Fc#4RLju5PSS%Ak4J=}47Bom;#(}1aj4c{SX)$7HOG>R6 zg^0q8DWNf1RACsYi7^WaXbhF4iy{psEHI{%6Bxk80}{bwNu@MQRf=e=(M*c0WJ?Ih zP{uK0(-6|KF$}1zSgc~qCQA`aSXMDsBN0ms1*E{RU|}&N!xg29Mwm3PQG*hgm{SHJ zS}{;)z^euz(*s5&S}>M|3k+5mB*em4v07+pQet5dj3qQ+Rxwi0#F$}N!7Ny+nqd~0 c156W46-^izU{g#S$VGynhq diff --git a/client/resources/hardnested_tables/bitflip_0_14b_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_14b_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..139d6cbb64100c32f86b1d4745ee9f9f10eeec6e GIT binary patch literal 12365 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 Kg$W2Y=0C9BIS$zX diff --git a/client/resources/hardnested_tables/bitflip_0_14d_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_14d_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..ed8fe08c682fcd4bc8014338ce6fffd4f45ee111 GIT binary patch literal 16299 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_14f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_14f_states.bin.bz2 deleted file mode 100644 index f61babefa8e76d23efc26e18d7899761604907df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 895 zcmV-_1AzQOT4*^jL0KkKSHYybmGfB*GYL9>bUK@`9d5Rd>6KmY-l0r6lFKm-su z0Dy=93)tWWUjP6A0000EVK51R6A6UV000S-O#>XlU=si)6A7jO023yf204VlCICz( z6HEXACQUR9a|wV<0GLcBm;eAwnrIm269AY2Fqlm+005aZ&@fU|L?W2UJr7jLjSWD_ znv9t;9+OOZQ`V$Q|6x*>x^|1{TqmS?PoX{)=U(!=g5ekzS66YE#r{{Fc$Y;wJC}^k z^6o_O4vVPlLx&E;e`Z{$l+yW+`1Lxc*j;8FO+BC`p>bCXisQm z7_ukqUL!AkP8LtZ^d5ulJf~GZF^Tq`W-*6|vb|3O)aacP**Grub1Z!c~{LAz_s-9EbN2p)HDf`!%SshaIET4Igbh6~m77QOCeaq=s=q|jGQpSeeCK-lmqK@*+V>9f#t)pm;YHB&Gcv4YlNi9uy>Q^2 zg~Nxk<;yrc!NJOQjNy{##Nfr=^Ll%Z)OAM-wSAAt^_@p!s&JeagXU+xy`{?iOZ0pP zjq#6cerf4FmFGSc%kVvifq55${k{R?Q{H->H-n?#GIqFd9t@swUn*QGaI40?g7}xj zzGatbc9$Hk#N)KMT&~jL(RE!;3zEiixH9E*I8I!@;EzF7h5uFbtULxoD8%HaM4^$D zFf0aCQ>ZMe43or#GM$RQCL<;mEG9-(a3#@lb!IG5a=0!6oD_K#(90$nSSCWBqLj&B zn5zmd;JcP2b_@(DIVz(7@FTGf<&y>@g-fuq%4FeXSuo1NjAb}0BP_DS&Z06$a&S8d zbrYd=6D&t*bpyF4D!3O@gBa~+D92)OQ-sSnP73OdP8SO<7|Dl0!-Qd&<-(}Gyh4}i zs)U(JQFvuiRGzd|7LtKaNS`KCkdbATRAR_W86{$j6nJG*x7GV}Ci7N{#78w;8 zlMDkA%2a6~glb8WGFdXIkXTa|GMX7Cq?sloD%D07sZ1Cpn2gGiv7v!RGLe%JV#5O| zSumMpOEF5xl^Dw-5>{D8MiFBrSzu*~Ws+Hlv4N8)R$!JgLoikt%oZ>VVzOnJGYZC5 VVo8jpGb=y%yOJrwgoJ;AyI>NZi_`!B diff --git a/client/resources/hardnested_tables/bitflip_0_14f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_14f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..3ce07c452106b55d1133b80351508184fae9ef8f GIT binary patch literal 12439 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 WZ`sJNt!FpCiVR8QKOFjP59@!*!%pD< diff --git a/client/resources/hardnested_tables/bitflip_0_150_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_150_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..798da8c6f7fbe3d526f256ee7d09334fbf68d4c1 GIT binary patch literal 19000 zcmeHPPiz!b82@&hPSOP|dBpf9#DfQe#YRo$ z-{1Sq`!iwRc+ceQ;+8R@Pm`aXq1sBiLTO0DI16Yy5fx}4rEcn~P=A_MX*0!St^GC% zDIZY2n~D`G6p0P(=7h#^oM8&AJr-4{JAH~eW8wF%>8)(a+i>??zDSSY_&8Iqy~@-he?@uN{>fBz zC-|GkBU_oeaXRc8vv!s#uHRnmSfU>4fQC8IFkhswx32gC$6b#>jwd(?JE1}s(}OSK zSY*?&9oI$ZZES*3Z;fDxO()F7NdUV^0oElm*^juHD~U-A5aeF19w^d2g^~r={tD#L-(!Ml`?k z?^Io2niym=v4c;CTiBE&h(d3L=ONxp;!?PA4wiTYXCiT?>K{x8>Q%qvje)3h;qW$_ zLcfnMh@OWqOL+2wrbs(oNCKt{uKcA|k+bNlI*alMhKG@N6SK&>M>(F_SxU;#d>>4O zTR|2lF37Dt387!kg#OysVV{O*xR(0?uGs9{dQv?5*)X3pZ0G5tHD!U>dk|u0889Xpu!HG2 zgzow?V6y!TK#&(I-pW71=`|PtaX=6;5K#O?G?O2202uqb3v_4fW{5q;rZ(s+xe0MD z&VZK@@;V6sRtjLwl5;-i?-c+ug@IMV$93bS_(SMBj)-rg3rBp7-5y_OV9s{p3the7 z-javZYaEXNQc0lnSsa0xz7NR5Q}inE;v7=6A4fq`YuAGRuBZBjlaU$phz|h#7{@-Q zT|-QX3x*B-p>q`Qg8U~0-I1^80x25KfGfJmW+ZK^SsP$V0+c{|2Uq93*UmDHBI$Q! zN&g>Go$>{iJ)XD8qku1QE8QOgk76^ObxBRY^7>)dk0@tae~+P@NjZ~prZ(RilrsUk z^`&p)FMZ0HtX=J$SviyAMIdhf9(z*Gq~lC7DyHL1w~SEgIMba+TXmdCfK&&{?~#FW zb2>Mt>zQ;t z6V|=ydZzWR=+pH~x*+raUXZEdOghe_<4m`V7GN&2&;RmH zfw53}%cWAbb6EmX!LhNOGhQUwvb6KVj(0eAFwwwXPppi`GV_QYk=*5)X~HuT4GRoO z9}7cvL|n?8<0`rw6{_oVD5j_cw3=(d$mlY#pH>^SWjO&OqAA^2*Xe7sKN_^Jq8OXW zdwVrAsTC5vW=>3y&SR$kOqa?VW_b58f_fS?3?=p=rs{BBxRR+!ST2nk@rLQnn>(xircv#~ zaEO?0_Nc-WfQEf-(h#*jN7-oBSp0T}8YT3(%X+;^r%tpCUlM2Jjoq!70uyy&y2%Ki zn-tBoBm0Xf4LW}@L2;K*FC47Y410+H8O?5RBOyj_qQA%s^-+{~UAj}TjKsH7-Qprr zW5wdAzt*91Vz$JYLtX@+r9vQ7ZkyjDcq1^EV>Yp=^_D` zP@6m`$?W@K5TLZ6JA8MlkLDy?W&}_E766H^7@Vh#uTBnK(bBac$ z{gV;Rr@VW|`P;)cQOC)j4Q_CrB2ivh9sfDK;@3H=tQVGKSh$ITWy-T^hg1R(qbw5V zBBA~wWy%aT%5Q|l`#ASX-b_DMn0p!w&uG!&gZ99T!uUoSjc2r=**Xi`Eyt8${7wgOac-^S`bEBR7}cda!Y5rAK3YnU??l z zI|A(6L;dXAKUGz6exdGTZy((K-J<{%`}v|`O$p;hCHQ_D-z1Pi`s8gVZj6L27YT~s z*GG89l9F}XWN?1@#rW0Z-~Uqes>i*s)pA?&VvoK0hgZ6u2gCP6auBd_r*NF`%AVv_SY>#hlKl1*^Gi8Dl>jWQTc4Cuu?*oYUzSr1k?)-5O_t7yfhMk z<}QTfLV5s88Y|%4Cki3qpOS z4{Oor60@}If)E14v9RF_Y-=+OX9yt4a;Xx#RAC`dqId43vK!R`S2Wq7!h1ARZ1?~( z-AP;kjd*Pm9>(cV(1G}%jvm*dbkP>L=1eLFs~8L=W6m(_qNEaM(tZYa6Dll4S_RHT zb|f-@KywKg#b87bkExjEXQPsW`odp|mXjCRN^NC6-$vh`a>9}4#hiXKrP;0jZ5D$o z2sa(7|GRPGjdF?k{haui_?VcO{F^a5V`8&or~Vc-9<}8p`mL>p&tp>S26q&wVv~wG zmP#8tdC89ROFJDItXM~mieGEqu_J0QEW}4+=|y=XV-;6=o-u~2^}lumaLLbG7e&1{ zYukm(9QwS`K3C;fddV zc*fhfFs?Qp^?#cly)?;D30mII(mW>}Dbno4aW0eqtdbD8r({KWBXW~zHIs<|j4_>> zpU@jfxiZN)e!gs|Y)xBmwXG+}c;LDg2a2g}SDm|hIWBgI^-8j0*r&r5ww85azTrSn zf+0SD==AyGAu6XH-VkBTx{7g?AD~7o8f?CR~L;w8;{10|6k-Y#~D2>iFQN#U67ck_>7n8dsYEcuCOmdj6 zcN0XEM%Plq7s9d0_FUcFw*k+)LLV_?BaqY$D}Qe6^WwP?r5J2irVRoChdWo~Q7)%a z(fu@Um&Y7|3xu3T1?V$L&`3Pow94Ck?m2C%4~dhf!+Ygx@}`mewOL4}9#N z+&u)t*?s!S@9MVtMwf;=1Ru@cf)wk;gNMdo-rOC&i@2TE?hWlUp zljA9;nX5|2y}GJ3!=5k~!5$4(D6hqt(tF|Y$(#zT|B!FIDL_M;AroSh_5Dt8+kBZHF1%4 zXLe_1WjI zPd;zCw*J$jtyc$YZg1?fJ)D1%e-U)N>%VTgC_0I_^w(2OVgf@nmTf`2$6r5S;{oBz zSubmlwcj9h1FF%#{M+sSD}K^^Uw7cy%d@usfBfL=!95r38~?prHMK{dt@#;R{v(^L zBIFCmX_z_5XyEXySEOvvGYJS#Xd+H%GpTIrihe=lqd-Ue8cUA-aVMC}9e46`^-$`! zL(ZbM?!$ospo|O|)mE7FjRMeEG$ z$jjA2On8VH8&b)_ob&QJHJvQwboF`jzkYOBEYR#; zr~nvfsM?6CWkFqUVGI`61x(JS#<|w2;V;vc=^e93MMRs>N)lwyjLO`Sw)U)w_amna jo0SSLo6_gHksOrTM@x=n7@N-pAJaxsplNB`r>p-2&<<{^ diff --git a/client/resources/hardnested_tables/bitflip_0_154_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_154_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..0ec51234e3ef702e8d93e89f2b2ca9466fa9ce36 GIT binary patch literal 27232 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_15c_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_15c_states.bin.bz2 deleted file mode 100644 index 0180aa9014181cb4afb0745471954ee40853da63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1122 zcmX}ZYfKY&008hS75ciNw7v5GP(dsduuXfH@S#qZO&-O_$$;|syYRSP-J;7r)U0tx zoItNFeO%aNsHfS81cM;Wyt;j0)Xm%I;GyQ9pK{F;?=kDPR_aewb{|0IJ7z8S+6g>E1fQD*mT|mK zp^yze@Xi`7xqsysss;aM?74mYv}vL1_KBsNnyh_l<&@@yEwWaW`^?(2$P0muL0j~~ zw@o59gT1LwO-G=9d9oDJLdc4-?LcDj888uuLjnw|C5P1vI*TUm7#$8T?|GL0EUjJd zSlEBXmmjiV;jFK|I(w;Y>BmlU<>qHFJ-!H~GbT(F(+rcpB4)Yt-O6`;rDNG{CgDXP zOMm~(Vkh7>&TE!-E_lnH?r+3=z@x@->g2vJjXU!|J5d=b4?Z4pDm?jyGL~S8jbiV= zx2cn0>?Q4JeTmkr?kl_jevnTTRcGhydw<@#t@&=XZz!^ClU7d!Ulu-c*bhp-fw9ef z=TR_YuwcRHSo7c8kKMYH92(`X_jb3e{AsXL$qS-g_Q`s2?|N64V$hQqavB{yT(U5n z9Ex~md5QVM`1U}@PcHSSq!mm1{mJmFg9%U~7;Q3R#iz{gCME%=`x!nE0l8ivdCeeX`TyNkZjz-H|B7Bqh2Uq0n&L;KjpoAvLtq|qmGXF>4ZDN z=;UZEMY{<+{!UuUaR~xaX&{8>6F2}2X7XnnqR~SQ~Drnr@^x8La$PTAQ z-`{=Bg0&33NbP7zku9olE@(g+0Yg diff --git a/client/resources/hardnested_tables/bitflip_0_15c_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_15c_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..aea4d7a5f30aa5dd331d4afc8f9024ad794ec8ac GIT binary patch literal 22128 zcmeI4e~4Yh701tgzxKI#xhESp>1LDcu8aABS#6p$QA{n@XljvWD+R+g7_fEy1>M@l zD2Snq1`{o9up0b);hoYz`PtZhJq!g@9KQs5f`}VEb z_$u)SG8f*vbMKuwbLN~g-#K&Mxvw<1xo7kTk8Il_vh~2@?}?3MZQa(ZqLGwKy%Gxhvtr&dv4|+PL*EU7dx^A`-Yn3Jb7ECKRvDFEG>%hKEq=H2cQ8A+pz>HZs$G(*;Wo4=gYN5ldXFrq zU4@?HQZI+yI=N&6WACSSNe5($%BtmR`jD~gL&j*+MB~sd=}Xe5RiU5aUar4}ydOgD zuwCX;8_PugN8|#L=ufWe?=v=Qy(M`*?}$w|ojj@1xsC4MbNaeYlW1<|N^y3Y$SRs& zgN`@RRgEX>xwkpqSd68BDh46Ciq7E{o3pBql}?2R47BzW_={<y zXuWtnPZsxCaR$0<`q1unl**92qIEn~dtHA$DPmdW9hk&AxQkzpVk!Ebe@lZ4Xi%fG zEtpA3O=%rZ{A8G*{xBCiGJ~Pd5+apRO)9IL5)hSBaExef$5IyZYy$)j=LWV*lZ8td z(_vVMHhUQ|+Aes3ZmW^>TKlNVniv{XxrrG}sjGH?)3OIq1LE=hO;8?!v2mEWrJqUu zl$y$ay*{1%Oc8yo-j&J@+y4>GUdxE}BQ|>`Hy%>?vYV8k#iNiyVqQw74AFw?$gAb3 zuiz(vV~JT&W-QeQ7=|CX-Hl4;dYrk?X&ek#JT{wp##IK6KyZe3+OxJFrviN+Y4+%L zSq~=#OiR_oqcLac!I%sC;*F7BSlLJsXe*5A6yv`cr4GXJ1XfkyJe=!h4|X1-n@w)? z?zjP!45OM`z=4b1%?tGzBS?? z^ICvam%1tQQ}i^vGz2 z7~mxzKEPk8thM*5the?pHT`+>8HHXIGvn5AF8?u249s?i&E;QuZc)yfCNMWhy!#vGg(~;izhYq&#$DlneMYCg&>+z~&v%cWSDCODBkS!$GXLgGx#wDy$!0|eHI(&^ zx6g)1VUmU8`kbkvnrenV9ZfZ1V%s5h6H{wjUUipBN7-Qm!)_mYRv!a=a$*;AkG`TW7qqN*}a-gMsU)B4=@X0B5fCY4fTCFrVTs|H+J;P|2(X$5g6r`O0eE z$y|l$)s2RDk-NF>^h@{A=}ayFEv)g% zVaSdR*|Dq)gd#$AtR=0C?CnN`J7mXV7$G}0WXFc=*oN=y&mlWDyzq6xlC469LC7%3 z(IsRUd=_8$3fZyY4c+D&y7^@Fg%FNymB-Ah5ROG6Asl<`x4T?Snpg2cI5vc1LpU~s zW5b^nw#k&p1HOt}Rgbt|haUA3~L6v#j& zp)wUAt}2MGT9>Iwin!!v<-Xguva7AOTo-HAe*K>Fod3@Aob#OLob$ZTYYiw`j$h3| zF*zmL7mjI*qV|0g$O#W(tXef~W6-J~_^Jc5gMtnOl?Me)3;OIf`pVwg#JI%?CdL<^ ztO^gBW@H5EveD~;J~0`ltO^P;H3lU%E7PZ=W9C*R9zJYH_+&PkMctTq;B)E$Lt{`- z(DaWUlqd?1^;Zcdn}vA-eBl>V0t zr01M{1Z`~Ff6$K<-#lkOv2b@-cjWOCtG6D-tyb!FnDuVh!J2hVN^ZNO9eX$cBp}ic z&9zi%n2b;~A!oQkP7Fh>_8XK04F&T6s~CdH0LFJF5e8Hc%!BT~tDU zeqWtHX2y21u?FnwDk3e)4(OyC?cU)4x4@{9;!p&mg2%)#8EQ2Ew0krufEDs1f)!kw zh@TP`?sNo9BvO>$$%FyPqEo9)<|@0oNsmeiR-4?gt3E=MFqF`-eh4W;MHHs2MeAfJ zY|^MHwk?PAMY3k`IxZ$ajcskITXB`qwEAdjW9+>HttL}@C2@9-q6N9y;7CVe=L*uB z7%ka+m-J@a8uQDA-4H2a-GCm4p}$Xj#h5(0()Djr$v5%zZ?_;h_cGkWyYKI5m?NN; zFxQ<~(*ss0I!&Cc;~$>f8;p!xxyXHf8`9p9>sndKu6kUWt92(#W^NoNp((vSBG=z5 z#{G~%-Ru(Rxwljni#qkg*6UlZJ~=eFwSVDU?Hdh6*pNB=er3FEg~>)w->Xr)Wg@tJ z<_MBhgf|S-gfa|$TK4#YBqHdr1i<#z>hPIcOGU-6>V#re^W;2e13>B6?3m#Nu*%@sa^AKwo!oQw^#rw zel`$;TE#}?)a!_>sV{V^?kTD&bZ9R1YQ!84jbic_9LjdVIAAbU%|YE{9kg1BPL^m8 zD<=-2sC|vS6s-Lggd`{TsR+F-iam`iqN&`v=Hh@#LNVa$3|DP9ItYZKt7z0f1X@2k zUpkOf!d} z>H}EA<1iL85zlIB;d;y{#HPf7LoUPXXw&NzH_vasZ^jB9N8>_zRAD{$<_lJ+50{xe z`8IG6poe=%WXu}96ow2BpyuqCDF?%lh6^88CZAjK=+u(5EjfR+c%$J4*KUfZ-VUp*a9S^*?>t1pf4@W_ z^7cLa>-wE)-wOD%&g8w6ea*L5toz>uz_gEcG|(>11cZ>2 zoyPd?FH3ao4d#Czr)gM^34h0wv6>1B#4u6v1QL01^Y(Mw&(;#u2+*$KN8yvVv9xQ~ zvJQv>@t7&ki35fyU@xLAWG?yNg#=kU;#|~X9di7C7#uMS9xVovVe{tkeL1gLe$#q zt1C=jHI<$E^ukX`h4aYQj+fDI9Ela<7C^6Ldp4AmjG@9%*voTks1oJ&+?YDd?16G# z1Q}nDY)^ry2)yX&KSY{u_da;DvgG-g*$KJb*Shl>=3{=lKYnR>?TWau-fF}F45d`O zB2;jLj_9b7FFSR0-iz3|o^VgJDr`h}eu6edMd*pu^A<{+kjA!EUe_@l`{Jt#1 zWYgbC8gS+5EVSr{a+*Sx`3i)Ie6T2YA=&QKl0Z+L3SUZ8KmCu0=Qn!3N)>9KzEOV# ze{-4uo&G9ibk;WQt?F&2ta{CnJN5o^Z4SlDjKhO$u{Bw!u%a}4;m}&PLt&+`yCpe3 z5|Tes3qfiQp0<|CqjfHiU)Lv=5=K-X_YFmK25Uy0G+r2L6L|#DG74)4ke$Ubs^A>q zp}54`UW;ZJ0;bO8ki;xA-njjKld;Jlg7QV}`b8T95)w-e5cIUAP3>ZZL}O{HMRFhx zDTNuMMIaVx6tX%|yBz9eb15be7PSdcbQ21t`mk&Iy(9(+g;^BAmI)3e-0YKalxljM zoDxA}!U~{}#OM#DD}VZ?t>IYfS!VQ-Xj5A;r&7J=?-9%HQgmB~Ct$w)de@G@fftv< zl7(NzcRv~%h`ej5K`_QVFYK3V9zWVsaHzL;bVYRa%(PkGWFekD&baiF!|!d{H`1xw z)$%-23jSPKTjsFgDB^;H0)Rcg3T$oS>lJi7jn1TpVI$YGdd4yn@*~ya#JpyiTun7G1{-~L+uH)tj&xOk=F z?dQr_41s2NGW*24!;*4x94c17o_f3TpPVv%qUdy7WZdz}rhvlmX8KbWDTkYxsH!bH z(AI1kK2z|S@?!bko)fMGe6|bhW7RA9y|~1#we*e7@KJFJx|5S^MM~J@4$((V2ukrn zb4r0GA_T&*iVW_00oYSSPzmHMH&bYyt|4*pCPXcK*o2_6Yc;hhUC4je-G(2psY2W$uEYuDyf)RDG@{iOV zwFJ;oiYkOeGIiDA@X20HK?L^@&1iD5oy0=4;CKM6*8*g)sV3ZwuL?kf9!~`~K#zi) zdM%D-uTK^L>iRwzSRm98I`OJvfkLfLZ7GdwF+vRWCTb541|Ugb-Sh0ve~#LC$&20> zu6rS|&D&HYv5b<%GPk;x({3iKD{ELnuHOmSZH+^?c?c749XP`RFQeHzrBg)6^<_<~ z?={;O534c}*(0}b>n(;;aVFblA06va{u*pZ?tcOjCFUFrt@hW5n#>CCgPt9n4IBg? zI+rTcb2$8uwKea8I0f86tWKlT9of(&sPq2x{0B9S4ipN!t&iA6q8Jr?j<6GMiT&NfBWp74}_5dacom6A&ed2U=^L3;_0&(`n@9& zYe-6wS0*kX@i`C~tmVay9O9(62P*5pKp~vYCmoaq*N$hRz!Swo~s)KUoo zk?#~*QAAJuAlBm66NX@-aboH22o>s7O=c#Jb7IMs2>iCVoq)xOBC-6AnJGkiiabO` z8v;(_sO~0RxzH%3Atib%afIJ3rPG%b=r{Ja(lPX?!sEL$bku>h29qC9@MmuPuA(_` zq)s^ogS-K~m112q^MZDhp_fdTHDtO5Yf#LL=+X@*)Y;D;R>OCtp5|D$J8e#=XS|dh zFiU`X9wK=V#Xeixmz2{`Z)UDJ&p*qms<$Iasmo`|iJ&~Ad}pk0jlC_4UaN*`uBI^+ zvIeYCj^nYnk&tu*hA5K-1v-_9e(VUyct$XS;-Qnv-O4T6ocGN@BUm|rU2tvw_6Im(VIE4VMqUG*S~KF#@IcsUM8SB23sQg<#0NnLi| zRc|FNSmvwI?Klz!Kei$+zL^506YJ7e<(Y?lS)Xz?mz<|(NYZwG8Fp&d1?R;J2xK&Z zaA%}}eT(D6w34p#pG!X%8`3hZ+o*Sr4jtQ|c{oU~PkzGn+}SZw z=^qCx{@ZQruJy$jAqxozC9MUL|C~qbItg@Xx<@u>grj4}9EHbHhnhzh0jHMv4oVkv z$+wS1@mh}&WW1DNUD_@ojBtX&>K-KW$Rk5bi(VF*3TL*S6AySh`q0;-*(E8hxF{Yb z>jSskPSe|~cc-B~$v^&9Z89VTH6J+eS>s1=ka#d?%14{?^YV9Zm`|uJ3Db_NJCVs1 zqR>QBPWbf1^7242T9>U%2#CpKgRW~Sy*OC!H)YqYGFcRKWYBQXbfReLs-SRBV`xy& z;+NFgP(;ww&y5KRI!yzU$-y&q0Hcd$6iXqhu%87fl+ej>R+s zW(p@KS)ya3)*zR{Xsk{-JvkuWw6vZ!AP}jc7=;zt@9vDU@rRQEwXj%72D)r>-F8do zCNOZ^lfcjKWzq!zKm$V=QLUaF>9nxeIKGK*3alAOe!alDEM0x~Km^acz7*;5}Mf`b-4MTx2voEh109k2Lk)t#+*4O<|nRZ}BbNq#> zUAmb$vwrTe0(A$gKyb|#c-;sfx)mXFvP^!z9}}Y>#oddDXH+)Za4e{XhJ`oriSsc! zm#vOy4c*gBn9-Nr@HlLC=HlER{iG-Y*?xkKHs-kduG z4WfAP4)$;)M^?p)rzMlvz#+)nSD}MOH<8_1({}W+bYo*7VSrFj-d_N-;Oo>iDKtc4 zvIUT^2Sm<;#9MY9@g&6#dT-H)-rmrYv%N%s9Z=}HK4OIU1phH+x<#G;kt-;SQdBXH zrqZ+xSA+zJi~T)wNg;l8NLBV_I4r@D8>`qdH{FHSQSFtD^)hM5Yz+r}6gp^}qfY;$ zq3VqJofXsv7vkpa5B#yPFMaaN(`R3v{`wck#4MHhdeW>J1v43q`&5+1!Q#v$-Twd4 zPb{A({b?tscpt{!b8aFn&AWBAt|jo<_Ln-Wf73qrk4x22G##ex*Vq4R9UJ;*mZ9zU z#L}|wU#y6$Jo>uoACjY&V-^c7JQ8Tr-+*6Je-u@u`4_9sZj}a)=7Z!|uS4TeA&1Xr zsnf4ob1OH1(+%AJ*@;3r*}_8N_0e>6AR*~lY}U_-?WTS$K4LDqksNO0vlXVCtu3*;;m{0Mdby36 z2wGXP`d)^DFu2~OGA}B^z|6EEtjA>c^EL{LMzn@Q12OPM7V-#>L;z6&(E!&mq6cNh ze7}8dc$)Uz-HFwKZz(*;(tq3ZD36kR{LQRawF97eooK-quX7f{BcJX6Mf-F`vD_@x z5%_1sO`3`4+tVyk6wS(8Tk%UpL0!Gkt2fg*wfE}n!vl(T*S^n1J6OjZ8WaJvh$SD7 zd-WIJH=OV^~YtWWx%@5u87?hZ&{ej-sV(lQa^h&m&Nj3bkwQ{&5Uk&i{a zy4{1BFxtmsvU`4X@7oJsXDk|joO=1cH`tGJpF|5%=u17Srf1HE{Xb?QOfR#H+Z!m~ zOlVHCC1xf_{cR=4n$-cp|^|8A1-;_JOT#xfKQ_$)L;;09>J*HN11zbwBx zp_gO90nVvg^_}GY$Hsld+&q3MW?>=awpV!cE%uP#Cb*n}$YWG~UvQ@AJ@^B?Y}Ogr z9jDB*-Iv?&zrV)%9#uP_4}f{Vy0Cj0+s`b=V#ZMsS;h{?a8I`W9e46{T?0oKpKVAua+m65ZF>g68xYhBh%B6<)5B9ZDC->6NpU{D<7V}=cSFAjq&FbphbG^93-+ra5Fn;`9 zR`1_CaZ9d9N2|ZdDth&DRvmt&YvIyXM+aJFImu9~)&=Z=P(yup2ievMXz(%_4q>^$ zazR7ILa!V})$yvvCGC~*MVqYz*S@X|7zyA5;)I;3& z89z1%&)>DadhsOh_qP+1Z*{K;d1s;~_syStX#4fP>{{ltK}A~2bCJLQ{*uI>?+1*& zCdh_;-@-}?%%#jKXQe5exnm_IBi5zN9d2>YWXt=zYxc6RPBb_Bo=N^L|0Z&N14 zQ?d1F$+_IO)lc95`*q;)_+WAF^F`QNTJ!L&md?r_+@DTX2Y#skU?L&Yny)mA6wh?f)1Rn80iCXb_xSR7xV22SX{BDxX3*x zwF+3xZ8C=C#9#RIllt0S2^V6#nTo90x&7tO)05%NK4yA)iweJV{is!7k&r;rj83tp z1M92a71gEx$R9$FcgmrY^VUK}o5rftw~H&(np-rN$AYqHRFE9v1-JX)Dm_q0GBYFs zu$MOCUXVSZ*TK@Q?fzn^Qu!HFj%mak6F=Q*iClCCb-qck4kr0fn0HdzGtX7?%a^Ww`u9r zBFHm%cIixDgFr1FwD<^axxkU?sV|7L<>-I=TIS0I$4+XXnr%y*56(B!N2v)NXfr}Y z@CenN^@BK+Se)$<)z&QbWkS}X6pozE9^rM*&y{ZyjxPg%^ty^&AfOpIsAW8>+tDTY z+JK#E(X}tFDmrD_?Hmwj1&U1=P(|#vU_C-pM;KHjaklr57G(;GL|d{4R7XN<87Pq) z#rCQ=qM;%lwgX{i-@A4qyo2+trKSJrua=?z6b~RAgIffJ-@;q|Fg-YY!BJ#1GsGH8 zN(x>N`Zl;+r=UX4xdj=`a_SCrZ6CBC{dWL+9Xo%d(+YLzzY8AUq2ClWaj`>AN`7)3 zeN8hfDeZa5Pu5?aoRAB1Nto`6duQcX+X7NNhl!Q99y_gppgr+;Agy6jc4yV|J*TQ8 zG67CUoN$ZqSJ=Z0gsPyK_@5;#l7Qg6$l#7xbo#Z6zpdvM)WFt_O z_W^RK5MN9fagTJ~*)mn5vDEjOQKvh4rMAAh8>hchJpt&5vHzTy|8Pm?kFwLPqt^sG zJFFM2dw!>0Uoe;=et1&x;OYI-zTUw>6#(wMRvk%b-TeHl?7YeC1DNbi$@s2cmRXSg zCz^n8IpKw&3=V$gPnw>TL~mR0v6&N|2j8T&j}+s6`3bjYgy2MWKj}72j1Y4-6Ra5_ zb%R*-;&-*s!KxlPT8R-_tW9PVSSJZoNgq+Y@Tw#K&R;l#tY%p=3D%PvC#T&oK)(gaA50D>!MG|P|bg92P>LrS}7r*2# z*zJDOs*x9ceGB58KfQU|u1lXIcfziYr}vsk9Yw!>vw*x)zw7>8@}9p_TRFP8GU@r) OQwi%C`+vH0;Qs)zpnpOD diff --git a/client/resources/hardnested_tables/bitflip_0_161_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_161_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c0d488db2fa09c5fa2fdee9c22226f0636c443b8 GIT binary patch literal 42238 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_163_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_163_states.bin.bz2 deleted file mode 100644 index b68ad5995eaa9d79fe86283dd62d9cc5fb27860c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2071 zcmZveZBHAA0f3=NOaTi62Ip?F!VJa~d;;I`VYb9eQxXW_280*;yjqSq-?3Et5}Qq8 zNnlB#CVmmd2HWR}5eR{{UWZm~YKjHcC z==tPVmn86Mxu9A8IK{wAC|`QpxtyLjkoc#JjD+mO^y96|2?-hL3D=n`Svd*+2e>!* zSCy$MFIgv|{>aR@NwkT=Z1(BTVWvp{`0-1kYM!Mx0HD8Qd>BMTRF>7s|8{5D0z4L6 z`mFNS+eSmfiy^-GFZ`T@{nYQpVWEyur0xM#aW`CY@4}4(gV*vZ*(SRavH`FOXzd;G zOL#hd**Rj`dg=%3z08HetH~mb!Bfo?h*&k7-W8!gq~pLB!jQ_PisN_jh04II&U=uJ zRG%FGn`FgzSoshCcAao}V^8~TX6Je3i+2^rCk`#wmZ73Z)sZmt#ymxYau7U>bui7D!X&%ePMH9jbX&BhUEGc5kYzS z-ZbXkJ3f=ryqRb{bsZP>dJ2*W!#<}aq!Ml_hv=|e6^u>FIf&P-h5(Avwfb4Lg#W;) zv11X(9&`36ts!MUm%e|Nre*n&!2mzVj%ud*>~9eeDhlGExr$n?4T%;yy==@$KltgYx>#!v1{LbQ?d4A zMSi#6JQmogZ7Z=(MaquxWjDKf^6iM1G=#w(D24_Qw_4}s@zXAb^+D-l8_ zKaOLNBe}~~$7^7*g*Sv`qR59Z}k6$?IORs4V|!9cTh+aV04*QEn#ly z2EO832^g-NeCEOgnTJ-TWmB~WtN(d*{An=;0vPTwTcCbraK5Qx{me|}Ff`4`TMXHg z7-@nuAPsPPdKed5yX#&lGhT~!Ay~iqQat{Y+^uZ$?^k}kQBl~lw5u3?dvSUv|5ZT{ zr->jIg`y=9#oYQ*Nr&T`&f!?}ar9=lpdCH{ylcZVfH_lvrsm}_QFXov-yWvJ9ZY|W z3nPb*2EUIu3V^MgtcYzxi{t8IR>#VfasjN4ORiQJm*YFo0≺UP@Ku{5axtzJD~e zzDfRi=|BJaMQov7W`46X7Y#Wkmii)HFaECS^O(tvikYW-+{;H_?DO`YUp!y0?bwr-EGL+@HQM}nz%z$U3Sfw26Ff~(kB15n$w(euc&5J za$*Rbnm*Lytz~tOEXw1f@3aP9&LS)MX2VNC6V>FuTaYy;NE~wVYzkD(R|Oxq zi7;Yhx+W26D`>}PKtj0NrE-)+5JFcCj3l1=z0vOC->j>?BY@Qs$~y zTh%+~;L+|c^M<_7hEakNi=s?-xK5|&5R~?J2uNFA&)|cUwixa#L#MKC07wwcEHa9)SRg4+MpwsBrjM40BNPY z;cC3U=M5IiMf9p(3sGL5+B6CKqIT{atX-GX_RF}%Y4wa| zF-ekve#II$CZ?%HO?5HCLF;UGsD@L+oUDeTkjLbtv?jL+pG5UW?kp0UWj;jOYq-N= z>S4VE{YjN1AYS9IMmYfS9I7vtVliFa7s?OHn%2?U>&PI_3QDsG*XMp`QRm&de8kz} zIo)}R#o~&iP|W9SNB>+Z_zl<&j(}^4wuU4SRE1H6LOVBYiwa6%vYoVpAmTJdRwZRb zxc$?gsk5k_rt>PbY+TpHTbE6ztz&Im@P17uU44~j7y1<)wSUc n-}&b~#UF@++YdkLRBdS%7c^^&<4Zjy?@wyaiW>+1Hv<0!T<4z1 diff --git a/client/resources/hardnested_tables/bitflip_0_163_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_163_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..34af1d6f792885318b632d0a06b35ed152e30b0a GIT binary patch literal 23829 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 V2XTdY*_Y4j_9k4oYBs!)`d>;fKkNVi literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_165_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_165_states.bin.bz2 deleted file mode 100644 index 69e051fbf05a89ead34b54cac35931df8479c12a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12956 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 diff --git a/client/resources/hardnested_tables/bitflip_0_165_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_165_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..fc5eab95130277112400fbe7ded21802a815db33 GIT binary patch literal 52098 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 JpSiu}{{z|J{gMCx literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_167_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_167_states.bin.bz2 deleted file mode 100644 index bb2c8cc48e2a75953ff0d0e18b970e7997b0fd52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2901 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 diff --git a/client/resources/hardnested_tables/bitflip_0_167_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_167_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..438806c68115f44652bb57826eea49bafddf674e GIT binary patch literal 28775 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_169_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_169_states.bin.bz2 deleted file mode 100644 index bbec52e26030ba94e8c3dc47586683d466565dd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2437 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_16b_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_16b_states.bin.bz2 deleted file mode 100644 index 0a34da2f642ae62699e95538d6530b16f252d182..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1400 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_16d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_16d_states.bin.bz2 deleted file mode 100644 index c6758b6a2deb35274757eb0d16e7ca0c107cdb30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3478 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 diff --git a/client/resources/hardnested_tables/bitflip_0_16d_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_16d_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7df5b243e9ca4c95f4e04d6517b3c8897e0dc9ad GIT binary patch literal 32892 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_16f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_16f_states.bin.bz2 deleted file mode 100644 index fe936f3bfe2ff4e117c94e3b1b5b8ee9ac4c2710..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1526 zcmZw5{Zo<$0Kjpa#x5jxX28Qv@hwpFIo{mvh%;uICiu*kP=pc+J8^j%xlQUBO!#>RDTzc%z$Nr#l_Z@iDIrF7jpJ~_Q#c%MN9}+7*CO%! zQ67-($gLpaf{xSKz3;0&X!+my@!@kgT*4skC_$WGcX9bc-q`uEFDgI&W>?J2{8^wo$y%|y zG14W8T5k9k*|x-D~TOlR0mF`LF03 zWTI2Si=EUfnq*sK_QRXcbwaj!(_|teFxz?Kv&^M9UDPa|w0NNO7F^0L7Hb^IY2WebHC{{_<2R%01fn(}}qaRj&DUiv@68vER zy3C_WKyIs?vuuM7n09ioz@U$$PiiljFTKvYAbQI&cB@2Yu}dm$e43lg1QY)%XgCKj z&6B4hp*>D@C>wQ@`=jdZr==~;Nq!TR(mS@t6QXy2Q!w^B+d0KM(2IR{$p3mIIxO-f zo*@b0y(e!4+UCmFmSfQy@a+c|{>V#P8n$5D`n>vW8VU!avJFjlse2=H;$-3UCPLeI zm6v*gLV3)$%VAUD*|qkC(dK|j;L_;?#UsTiyOoa!$A9TtCBhH4*ptuL$xNg7PtCgZ zS4dLxq!x2E!uJOk-FOPH#KcAA#IX88AX)kEy z(dNS)#iJ)eDeOa!oxe_a*w_B(%sjsQ%Kf^Zg>Qp@(l%1#c(pJ&D5znYgjHJ;U468d z$~14>A<#a6u5*H`w2aRt7vm0PB;M>}&E=)T51SQD3T@|pS~B)Jg|)v34eOepc-QYn z;%?=W=)LyMnr{VY}^lcmU2)V@^NMo+Cq&3s9BY z4$Yi?TK>^%N=Xy5-P~S%<%}pJTfn@VUImVT>YxRLLAMWd+FP^&M;gdk$p9h1g{Zw6 zs;wFb^L&MAAlDcoD@VQt152v~Gd2lTOV_9|l^ifwZHKXo*nAU}YHgJ`pz`|-pqGPL zEj_C}f(CRtFc_9{Y|ymQ)>I&n*0p&3K{C;*bQhC9L4oQOc#2I(pXD&+PdTltXL zWw2LBm_1=RepI_ofD4QZ0@99aPs&@zjG z2i!0f)b_Q7zedBRo)HzI@~p2qQf5;?fkMH3kd}TVD8VM0&7*W$iH?stF>loDSq`NZ zF{C`i2DvDB3K`Jo)M3G;vf250Rg9~i#}wMOd6ym4w}h={sz)`lU#ITf;Lp#y?hX1~ zg&Euw($I*ndY9%Vu#%S!KI+fV-iHKm|Ln-hg*$d>Jxr0)ZM82+>!Q|HalmXMm#+mt z8;ixS;_A65%(b;LQJ2vZo6T=64ToW32!!{QHj8O{5J+|dh+mq5C$v?k6YO{p;uU2_ z9}j`oNRVjpYz(Mqami+6XrRTx)Klf4D!@}(z^P$Eye}&DC<=S*L>(_ZozK0g?#y>4 z6XGbu36VLWG(#2Hn!)NU>o1$28+s)~!Yv}gKNxdP__01)?M4SRAc|V~3+V~^1m)Y< P^U6zv-8<1EKYsNuFEXhY diff --git a/client/resources/hardnested_tables/bitflip_0_16f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_16f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..0ad58f0325a1779a96f7a55f8b4be4a857e0d23f GIT binary patch literal 17556 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_170_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_170_states.bin.bz2 deleted file mode 100644 index 5180aae930ffb5b4c369a91db97c8d3049bd9a0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1119 zcmV-l1fcsuT4*^jL0KkKS#yf?i~?c%?Lpby!~g&wL4W`Nfq(!400`g)-h5D1QdFTR zN(mqo0Ae)LMuh+vjWp4rKn5dCG-yx(h|^6P38^YgKr{?MQc^;mqYz}rzxqldk0P3= zQ&d%;7KJj9Mij!DO2JeHg)}LUriC#?ybO?XRunb}Sf;47ttwyWjUcpBM0AVnk5qb^ zuQXm!k-ku-gs1*W$diOg>_U|ER3x~R2)c?$YN}FN1gu0N)KzGrmmx(hR1rA}DR@Ff zI6;aPEU2*tAjC>d3TY~XN=rhTDy*oqAuxjyCL)D>1x8S03sp>_%8W5hBO*+sRWc-0 zD5JDB!U=&^ocT}#2Ha)Mp87WWhiP!C1hG4tb+<_460c{?4tNZ;+0+y zi}w#_OD0MM3xp`}no81E8B!_9CsLv;ja3mkQl)THi5!&{l`SY(Xctux$mnrOt}<4O1mzZ@ zHC$sx8n5|^3du5>%KtL<006HyDg@5%AOH*i00ayG07ifx_mEP8fj}vf6ClXKnK3d9 zj46{7AjrWrDv9YbW}wh1B}6oU(@(V$M~J}~Sq4U_3o9#3q>BtRFw&;9OIE8fT$+`P zab4bCc&-}vMDOXX61M7@fW&{v&iMUw`^+7{Net*vV&7)?zXm}r+&hKb0)$&A)n)k#V; z1YhcbfJ;>a6;-MdbE*avDqN@)UGcl}c)-6*))`cH=DlBAiV%04ZSt|yqsci_=kjpKqmB`|% lwSf*)oeqGGy79yom<425y7&K5n07;1=F6h$*DSojaP5~31gND0LhqXv$@bKjeJEt!FdAT)U1;(grv?z#7T zpL^cDFYFuX8QpWd=NY0;qDQAmWK4uZ>Sqb)9xhS7LRB7HMI50{zRZTyD?LQ{JcZrF zjy7|R9>;YzQ$}PWTcNwg9-$>;5pjivnSvASf+K)fWeNw2uM*zhgj^AxIVzd<9Jblya2EpJcQSo^4d_Fx}}#; z{-Q6L)K1SPead6#6hqD}XO{!a;yA7e%uYGa)Kdomw9j)bd;_rYe%GiDEUgzg;79*k z^TAI%$Qbv4fMN;3JQb%nD)ggbEdb{*z%HilmvCLoF1rrpyU@vMAT@-t5nTJ(b%-42 zS_U;a3?uwBriyI9+n`nO4T!wNqj^x#{0T+pm`aMo?{#D@GL`Xsf$2W^D{fZ;J@WF7 zXU9z3Mp=P2E{pcy2TDugk=Al~pDFS;*Ekh8P*KrimZN3Q6(I@~e2x)Lac$@QxF2A* zOR*5SjHlBv!!R!8|4iE2gOHGG2hgY+a#ZfnvCAo@RdHQIr;XzlapBGoCE0koXRB*brPB7R2_@!N8(1z&J&SjGNfc2B?N zUu{q9N81&9$g%HV0`Q|Z=FNAI8CZtgTMg1paI~=l>>WuMb^}J)?Ao1b*D8>pzLpXM z?_P`!L5ASLZ`83b5E)X%`8Czs%j`N+hY=O}_=5l@vJ$(iW=^Bw?9|qZx~nHu@jqs| z_X(yUH2}jfVe4aGQ-8^I!PMkWFjYIW;^bVjpl%!9(1#!}X4iGN3bU8#J*a!|k$TAQ zn>a{WG|#)pVBHPS5ZXO8&rBS;NoK-gH;dgYcC*+mnH*Z|7F+-198Xy+b^|$VPU`)C zv+$xl_wPl@VmFK3B8%Oi3kzg!5hoEX?`C;7$fV`n)JY+MY%a+1y&EsyIJ1N@@|%Qv%K4>CSO7fv3$+@6`FJa#xS4 zt#?b7zSw#CYtWo9XTUf7bsrcAI_HOCjNy+5Y3o Fe*nbXXyE_= literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_174_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_174_states.bin.bz2 deleted file mode 100644 index 00e4f95b49ce7a6f56dd375a4aed4e5dab77ec55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1314 zcmYk*?N1YT0KoCq(u1}q(5K_4LqICb(yqN*Skj46R0{I2F({OCQSALH2{C(dBLq={ zmZQZ!MI$Qf3^EV}LBe`_)nvG}*B&xsvZ5{_i^+N>b1WiJ)I~+-e7W!6@cHikvi(zH z*S=!gzCl~`uy`c>P20P*mol$QoLn+c%P>PDyZ)}$oyOM_xS7T$v#lz6qxbaYF z@~d;7e6Zy$FMb|tsyV?~D+`AQp6b-|FtyYo+lJqKg8!7{lOW8W>PT3?3T2@!L_Z#m zKPh-)J;|(;A-V)hj}zT!SI+GDRgK}^R`5er@n6ruszb$LEXLX@8(|&3|k-T z6l`a%$wN8aLd@e&?S#i~c6{&U2xmAP0^1dNtIv#F_p3n& zhdkv7Vp2ygq2l{>AjDR?aXbbooc9N-{k*T&M}u&)KXe^Y1Ik7Cogj{q;RNps+6`Dn z9I#gRWUL8Jv6_=#o0nz&=>|t=(k=CK3ErvHX~s*g_M>&6t}!BQNPd22)G?<6u|Di0 z$oBee@;HbE04hBp*7oX?9yqz_*0ME_fsf@#Jw~0D4ut?Y-C&_Sjx&@AOmxJR9{;pH zI)@8zCKKI{sKu{TOLLf*f_>4;RT6Dkj_aG=stilR;x_$$%vdFHcgyFD1Y}!~Gy#?c zWbV#d)tkM7Nfq<%VMwbzO#oY04XgR$_~jf(G~W*gNg@a#wNo%B*@KfNzFW(HX2RUN zD_>j^u~upf8MD=pv?+bv0}jHV!pT9@`dZ`QZiv=`2ah^lp-1%fXRD@Le4FIQD!B76 zvISUQIB~D!l6<0rK=q3Wa*k;B+&4+Rj>x8Yq2ZB|S;jPc0Fjkp;%K7v>;gT9f^A^P z*kw>)nLd9f9?!pa!Z~_$IBmsfR+{*~i^~+^fCdo8I+KsU;e?!<$Y80~ff+yb2pmh# zYG2A*ICcBv-FJDLkLK;R)b=sqX-W11O`O)=%8|x66QDSHN}z|*XK%FCceg~INXEw8 zOMvaqB@X0defxN;?zT9!#ZqL?h9!7|DFVWT?o~x$c!)en2i!${ka| zy^4o>buYbDY0b4GE!HG!ByB1#LE$r6IzoUrlVabW$Z?Cm1=N^9t@X1(Du@|L)(QB2 z)X7}Z7R439QvJDl;gv7Z5sT vOd6x8TE@yynkY9|C|I;HQV(a;E|UT^$VsC_A`0((`Qw0|bGv^SmVEIaA{P?U diff --git a/client/resources/hardnested_tables/bitflip_0_174_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_174_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..5db556ff5a41114a734b7bba898615aae7e85a6c GIT binary patch literal 21179 zcmeHPeT)@X6+iR7cG#Ua2Npt~ZvqfXB~T<-Wg3NISdgq(*MjY9Sy0Qe*+haB z3*0sJyj=Tc@7;i2MQK93^pB>vK4m zW0laWG2&Z(5BZoqpeLDp&FLJa`jS3*pm`IMcfciwLl6p_R;Fa{{Ncd@-Oe=W0FEXx zXn@Jp7nm{+uu8WvP1`C5^lst&C8nHyJ(5_1m;8;a@+}yvu$_$UBBn;I_sTG>M_DC1 zn9^F`k4x@kYQaJC=>=Kr+#QYE$yAWT?=Us%FGUD3Eq;JU!B9X;WE8VYQ!%btM1V|S zHiw^wn3ih&XOR@2i-yo?LmXTKY5DA7M>GU(vI#Cw7QB4M4^zCH(xBV{N=^LpbkYw1 zed0T;xDF$P4WK)D0dNJWjMlx3Yp{15$aO>{L3J0VZU9fe21xgsaX9D#xqDb;5=`}L z1-&zopg08>^IB(o)r6gAae?7;1OsJ|hY``B5>(J_251#T5ilNCV`xIYa=OPzi{TK% zfd4C|IT#Zd8u8ab0QtuVZFA&55hq_Q3m_~7^Jg)&>aQ?$6^*^r`P2oYx{1|R5QK?A zw>JP5=MdD1$s<0eMh4>PZZI}dMbXTZW6tikqAOb^wIdE8QE2qjj(D=emc zl@Sr2iFhoX(>lepMC*A_OS|vD>=w_vbh64=4O5|Gn*fEdRfPr2Wh2n^^f9KQjDOp} z^7l(8gEmz)xl8uXaX9dr4}09nQ>43 zim|R{I1SDohZplNh)3INJ30gVKGbV$RCNMJ5j^nGa1@o!< zShYXSp{tiNb#DQy+gTN1)X6i(qjzGC3#@AI0J#u`F

_Wx!UziZe^X(X9~%FUF$p zij?+G@$${F%nKp2J9>fxFP$nNl%{U=hw4B&!$Ee5uK;f93uRqHSWiP=F|azeWv$;d zV(&CwM-IHs{Tl}jkhBr@S^yMDrVfJ_OuXb-hzpe2grKkko(c=gtPva`f`qQK1M6O;@~yCX5qUfC(kP!9nT zIJr+5CQCLAK;x)(e?{DXVF>)JumWE67eULIZ;ZWu&8QRFo&#|LLp%OD1>b+UVgQ1@ zXzOcLScB5_fEm%u4`(yYT;|gr4)4v*)YN}SV1J7o4 zRx&ib0haP)f!_eQb)#tJ3vlQcl?yY z$rAr>hg*A3vsy3lzn9ff2_vl-y*W~{Yf|))7o>_wi`737hj%F!4R1P#k`W3;KHaOcac%f|8Q@s6kCKh^8EL@5S5qBmM{$B3F6i7={%j&u{z;-QbX9ow|jQuE6 zS5=A$6ik`lfyX<`CWP?ke+)RnDO{L7vc1-CA!ThFC;i|QJQZ=G+gGroJdiadLOo8T zk+NX_pIQLwT`*Fiqcws~-zh0e0taP@A+D!Evv9>r>qbC1$6WId*jT6N0FgpeU_Qu- z$dJRvL!%=IF>-eNlF^hg*=4wkXrg3lU7cs5fCJF?Y&I$a5EHK)%hA?BJd?`t*$=C7 zY(|)0H{Vu|wt9qPz*WV)Z1wmdRF7GNIh2In3TzRY-!t4bQ4LBu@2?1WtFO6$=c@(| z_oBjje|O91cbws1>K0aybd~c@6wJqb`yBoj3BWnX)Ih8nb};=Ox0lWrkvO1-=JH_N z;QkUdz>SYerHPWZa@%uRp&8w+{DSFqxf<2q!>C^OAz6KXJJXwIT(#Oesd<6UB4tqO zle`@T$Pi6Ic`%z*8@Oqo3;Iu?z<8hcDX$o=->5-%C;T7NaP?iF^pV0^Kw9@+kbYK> zI)X~907xOsDpXER+c=OedUr@it1_~Y2QjD}r<2)~ABeNRC+#Ey2>hUt`~|k(K4QjkEaa|M+pXZAjXNq+KB?@7hV&00IjT009c9 z1E}B!UjP6A000004qyP8FaVfL69`}kzy~k@Oqc*nCJBTv1YiT0047WTCKCk07y>W> z%m5Q6022vQ5-(z4O4uhu%*yc?K^raP=2L;p-Qyu)d=DMmh`b7qDM=_R5~v z_lW$$`H4@6yyap$67!ZPkYVnN7eS5|1_#IwthPmpuZC8C!l+U=N^G!f&9hi3NEAfn8qr@7A6>AF?tJ!1nw6O9#f&v#|NAo z9SPnT;fZxHoETn%&v?8Cc^!!1cbDXT2l*X?xa>|7g7zOFk9@yTbT3f9GvFRG;}38@ zGJiqkFWNpL=zrnlJ%aNWto#pzJY_ux^Lrh!yOBQ7eeYdPKQJO2n+>@eFb0i!Z9#dSSBMC zT?sqLQxxi0CDeZt7+6wpxGn;oQo4*-m@!xr5U1!;n3dR3`UPAHF7RFjgpQ$r!Aa0n zMga8)?jhh5S2mvFISn4BzCiGvk_j4@6M#A3yZ368-Sk>E}TaF<}6Mc5`RBfMRJ zcoK9f;9Z9X7NC!yj^Z*_Of0+OP diff --git a/client/resources/hardnested_tables/bitflip_0_17c_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_17c_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08843ca7b911d540e5b51814ffcb8c07d8dc816b GIT binary patch literal 15502 zcmeHOeQZ=k5T8fyu19-)Qv^#XwAav5ji59LNQ96R#Tcn=#SaWtXh=mg7Ksrt!N^t( zBEd?Cfkuti7{ebb65@{NI@_hv@n`3X)n@k&#$YQs_AwP6ff@%5^ZSj7_1Ic=^bQ>7L|GkE$#j@-HOvrVHR?(b z;WO-z+el2Mle7kMihDv@yIt-9bVg=-)4^dSR)albP&B&SkfL)aR$d5|LdJkiDV0PX zXQ~h>bO~!#?AF3S`AbA#=oqGnJee_zu?y&`cNiwUn)+VNX)*c?@h~vaGQG((p*>?R zGxj3WL^meD@(I%x4_(Wx|5zX%xfnrld z7OR(@J5bC0LY38tk%%2Zo1%{v=M&D*_YqoPVl)_ z!~-J#A+5_9ruzJ>UT0c@cr}5PpQ6v+`DEAb0%TsKUHo8F?pVeRgwcs#T+XQ>Q3Ssl1KP|WMEvyd$=Tq>1DZO?U z5kMD+=S6?E2%npse-s{^H6i%$jAnTV{DGN2zRI*ZGkAmc`q#Xq06)0y<+N*JJ9VP? zlc{)&2i~7SgrCv8Q;Q*;RT4deY|sjj4ObhAGq5uF3T)z!`9;EDNN3PF^F)J&S=b^&Y|ivCcwExfGiTu!w53(@t|- zBVX?IJkxyiRkONXL&pYIJF&x?-todID(^Ebz<3AvwB&U_nTu|S8b zAG_1Qw%ersT$%LqBKRxTo@K`FhLa->y(BGi8m?&i+gyUh5uRGMmby^!`SUpNKf@UfZGW==Tu zU}nzAOotJgzv4)kKAYx`wkrz5NC+|DRl>QT@rG4bHJ-14`<~Tk7l821IRxE_e(^C4 z6z6zvU|L(p>RBM#Tpv=KzGBrdlhu5kzJY<^)Ts#NRlX~Qu?9;~Eo=nf<$+ig4nQmo zrVd)Bv8+0fG5a}ve&-&?;qNR+)8$C+p=bxIcX7xe@WpXuJ5Da!ao+jJ_@=H(dysKI zmTS;x2i5qCT@-t{2w9;5=cSTLsAEfFTN2|KZA)TvV6`Q2KGgR6Y)Op7VGbR(B))*Z zO4^dxmc-?@B(^^$`-#Z@m>e*Lh%Je2Nu1>n1AMS0u`P-1Ux|Z3V@qQDSK^>Q^x3v0 zu`P)&!ize#B(^27Es4dJ#DT(W7!niET-oiMfHd2DK!9uh|Gd KxK{5j?EM!y;%_1V literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_184_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_184_states.bin.bz2 deleted file mode 100644 index 5da967674a75bdd3793978b52649b9ed0f65156c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6184 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 V@L}uU-)uNix3y_-^yS5|{|9%^aN7U? diff --git a/client/resources/hardnested_tables/bitflip_0_184_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_184_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..8369142ee47ddd3ab9f04af1878512dd16039e2c GIT binary patch literal 32658 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_18c_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_18c_states.bin.bz2 deleted file mode 100644 index 88f05ef653b311820c96a49684ec4709828078dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1614 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_191_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_191_states.bin.bz2 deleted file mode 100644 index 7303065d9be963180254f5752241a133eafbb26c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5983 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 diff --git a/client/resources/hardnested_tables/bitflip_0_191_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_191_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..3563685d659b82b46e10231414b94c887a2ea166 GIT binary patch literal 37196 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 z zzkv;#0UYt){*f6QmFXIbnC|{bxTz23CCS?@@Sq8& z@aKFQ=`W<^Yp^*PvQiHUjQT4YEk2(qft!iPyr=6Raj_uUiyQc%x!#YugNQyHVx#bFbM5{DOyuC@#H%N- z{JqAc98Z4M)4gWfzS;ddO!x-=WGT~WXBXqy0HNEc;t;$v=bPqyF-B?5*SxSD{iHeH zH0PV4r8(bek&#PtzGZ3<%UfRGZ$`S=Z5~MSmd7W9;Zny7h@Xjx z&uaW^apZ6-&BX7dW}<9g zDt&VJM14(?H+e~WI><6yKjpR zr_Ku9sU5(S@trY6g)f{GkQbi3{+Dx8Qb;H4#QjVe_e=5`ukZ934erT7UFqzdg92*F z$O_M~W4bpXVshrb4mQKwDl3YTx~qRp{u%U0#v1@0y3a)8fj^cTSq(0T2ecpmFpC6o=QgT*2X<5w{Sa;AW8Cnj_$ZD2&G?IYOO74ozg%UtNU;{iDUG)GA z2T(f(TcPreUdsx8gLJ>IUHc8Il}8)@-&ZT6X)B!DkX9?F)yk%PC|r9~qo(p_TCL26F|AfEi^C~D z^R}-}tCdelpP{r`xkQ^Uus3@$tyZQSeOmQnTCIF?@nc%8T+)~d|5Tk;E2q`UX|;0M z+uG@IH@WaVcJ%Q`aw?HlD-*Y-)yicNIn`%5ZrzerE2q`UZ|mnN(rRUXUnBj63j3v! z^cN~l`|n?AwQ^dmoK`Ep{lX^dY|>w-NPnRs{e=n(*4fXc)yh-5mh`{<>=y#kUwG@F wGBEvxw=?{Ow<$F``6;bdPOFtqmI~fbW}a3npJ}!7Q^TH?!ga?FZ#nn>01v%k?f?J) literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_195_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_195_states.bin.bz2 deleted file mode 100644 index fa5060af8db68f386cced888df79c883b860b2bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2462 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 KI8czbwa_fkiDD%H diff --git a/client/resources/hardnested_tables/bitflip_0_197_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_197_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..de5d1d9cb8d03b2e31bc114022773c09f393a71d GIT binary patch literal 16061 zcmeHOeQZ@{8Gp|0ZMo3PdCEsvp|o5&aL`ijWj4mi*9~EAq?ESs$Hq3+!cd1Rv@xi0 zSaPN_*#aFb`iF@tyEri@Fd9P)b3(7qugzkLF}ej}uA9b0sq2))YBV+0d+X?un#lE8~R$y6#ecth_N zovxJ~7;=eex=62qSdF!`ahAw(Z76#Lze%##DQi$@gLrj9%~%WIDn(AQQ!>ZY04&B- zA!!3mRv2^+x-T+~X_9=IDJJreyNf{=5y50M?&C%UgIYnk3T#?1)m=*t>NZU2R;(;p zY!6NF+wx}q&8DdyQl|NkVw2P*L8f_mBi-r+CR^6&*0_2s7ImD)PGuESW8uv26|5oh zHam}YF*y=trwiLD#qbnUxtX<}ojcGrL7rj98Q>G0g|MW~rYD$YA7fgX>jBB?Q)m^j6BZ*I!rVg&KJ|IPGD6VoE)gQV9e@_D8Qu*_0D`9`eO zVY(9T;f*l;v5F}y>k8(`7noWHu=KF*xUggZudt=)+kK#TW`o-`g)?Ph+sjEZ)nMDS&Y|)2ar{r}NUuBg{;zw=>>SgM60`$)Se}TB&}5M- zE?lrhRJke)5dzc~vmCF&pj`9yEYWsjbjK}wIAdeo3ZNR2A9K>0!!bzhDS(Vk+r=ZL zSUvope}WEXr?<$qrY}(efC_O553)2#h0_IEfiF8>qzary8L($I-Ry z+&+gZB1i0w$sV5F>`abxW@?||sy?8ZER|(IejgS%hPhAq=!krUsSV)kL33KS$)+X_ zM?sWzZD#+OmE=Kofwb;hzEf~3rK-8k2KrP zBqhD{C_&3EDH2vQCoCWu-o}ZNIMnG9rV>5rVIy?VJ(HzI$wKnH>It#9f|hc!q*tXm z%4w^GU6rUv(q>Mh7g#OALcLpmHl1fGUr0_sk94F>xVgY;q6n zEuUs7?B`jae#+ZvtDP#vpk^g4_)eJ&IvKAnA z(jzv3W4g2M7U%6q zPC!!5+Oz=7{4E^@9+{~}tosN7*VovY3JHeZ#BM^EUnxHTX-8v=U&m1bvbfAM;8?VByukn->kzdppu;kIeh~}#|kwNrCK?PrMBys zNso>f!=h{5=*Ek{DRam5L!Hm`^DZa}cjs;P$jeNF@+x-QW5bnkH87lo!6x1OA5?aS zva8kDsWAMDzhia_CzSn_b~Sn?yP?J7Ot)l31P064$6{!H22@7-WtTTDVD@peoaUW> zE;jlmwrynk+^rmY++PCvya&o4B+Z`-qZlV^!+k(Op69uIJokj|YC%dXX+3X^OMcRL!w`)$JdlseGL2V`5a7DmFN+ zc_rd0Za78>8FHPsx!1zqpA1dZY5Wpc@QWoP;GJJQXLPoS#o)#a+YZchCq%2lp9Q8W z*=79NH{GojvCs*2<<*~r$}8i-DSyWMt~VoQfYjy8avIUE-f8R_1^R$zk}1z5Lt?5t zna!DG`q8MlcVE*=PlP^+&4O)c9Z>Zhhu%p_6xAevqai1(tHC&M8I~fDa5Ruud)6?~ zYbvQRPkT*gdL90*3E%Us2}IyYMS<)l54n}@3H)??vAfP%1$5pee%Hve*X|E-_Yc7e z;a(3Lk=Jbk1EL!xi69<$+sm2mM7&fyjMqI6?$KXk$$}t02;zevJ_zE2Al|6Z>-Y(R z`0F5A(J32mQV<_|j~;^^p2b6F7P38J4OMjnzid5hR zYfc4jGcK;|Mnn{!ZPReZEAx2&l5(aE?v<}bIP3Jv^eJ`cydbCeH7Npu*-sj;4>2f0 z`ChG;;C75c$bY2dn`mvxyDvSkjp-TZLx~vnd%M-!;gtMFFBcE>vQy=^yA|9?9L+WT z3&BEHHo(_b`1$ER?i~O99o+v5IdF23>2f>MCA|~P5;}x;lk?4zy7Oy!<8xI6i*J7w zHv?k`-Q!-YPC&<1sr4?Vq4iAiYzYz@3wdu2&IeNai%Cwu>r&v4er8%+WWZJBporT6 z+>avo(THLTs>9kw_=gao>tt zXmgJ(!58qs7x2Dk_5oLdL!bB$G_C6q literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_199_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_199_states.bin.bz2 deleted file mode 100644 index c4f58b53d09f574c5b5a08dd430562f2f7e8d66b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2498 zcmXw)Yfw`M0)j71(2BxEp&-5F$xg}h20YpJ4BciIkMYZY0R@=%M9uDdgP&X05E`+w#f z`OEP?L%ArEkFG2PqQY7SPH)^5oNm2d{vi+-w(E_lZ;8Uf-a4|qh%%p0ANF4zKKs9T zL;qjG3Sh?02t~o!_rl)e_>S)Hn>{`oaW+B)%t+qbyK`^YY}l-uK~*Vo2S3~!wik$J z@i#v@RCerX_w44*o$&E6czc(2-+9ll#rzTcr#zqK6Y21CO57{Kf%;!}mDkS?<(VmG z)~c$e_#3Y7t*tD94utTTQFipJlpQE8a)xW^A`4>bi3Vju)1rJdj!=QlJg*V4Lt11S zsSL8y_?+{LLoRQpQI7|FJOM&4_bS^i>}!zB1ZJS0e0Lj8jK?cGFAsuKD zR;V}*NsvVpZbQK;FPLE;Jzr$p?Pan!SEd$6x@ROdA5eg_JG3>ai*d3Y-Bw8)-t)Gs z!gVR;fWR}T#II9@0$r@DcsRD2l1OJDDx}M6Brvl`;*K?*g9v38fePtthAy@{U~&pk zh!bQA`ApaoI!aHWM-XCe1RfYliXN%px1Y^w+p>|V8vy&!J2kYGYn1Bcs>^>rFoin= z+PY%Hj7f#kmPD9F_wV|)mv!57Zk$$VhgOfy+3|&v`}}Jcv&Tk3#OZYA{1BSXwsBrX zDw`VBJ+ElF3y1iwgQgZ0Uy(6!sp zJWx!(+^mY`!Y=>Zw|`ZKcPzP;WKyI$@~2VPiCUT&s1u$VUOs$Br_(%5P<(HjOb*Y? zx}i{v0c*DGiKfASc=Wo9wlHU-17`|H*3B z=+fc_n4I8!);GE$V4X;x;lKrmN>HJZF!UrSI!6{$IU#p6bp)&o7`yBiL>meOq*yoB z{ph0nSkC+b{at$!b##BklqT3J&&u~0;A9y4rP@(N! z6_Y`fJtQ;q8IyvTxN$|4h}u<~1|AJh!vH$O@g+vxhKKW&y5YY3_Te}Vrb`pjmbK{* zyRuUsV}|Igs5O=Z<%8GL$_B=T1+XQt*n>&KVX27V4ew!)0<(cpfQOpn>wnCa=$#}C zI)jw2ti?|w$0zUnNaz`2y5zpiPoi*;%jLSRZQo4fW&}d`WZ{iB3xSE1(5;99I!FqL zOT=_fxaIM-=&m)s)V`QY}cvMWB#fDm6?z6Bf=vp zN8=fya+gOb@mTHn(BZj~pDWFkXngnRAF-`gg4%Bci*$6fF%`BPsJpsFf;ZDPL7shS zj5_360PSDDi=9r{|9kS6i^Er2Y+NelleLTukDU4E!Q}Ri{9h3J(rfYS(gbH21$*_A zd+IUT%)9&@q+G}`^lykdnw}*MUU>?O+(F9C6dN~b$(OuqBYC#5hT(F@&~k4-nH|rx zu4aCbm3L^{G>MG6p0)OdHtWz9ebUhKBBlnO_twy{1>?dudvv^8mpw1*o-8(>s6oa+ z_#4WDAC_d3BwxXrhZH=YSStk@F^@E>>B)2F!g`KwuDMPfQEkO1Bp=gx@JaR5?~e5Z zg-gD5)7tyQwKkS@@p;1hOS-VIzoma^Q}krtBuc-_?GHrUfuGG zX#Iw~CVO$bQQp)++!L&qSn}37&SiHLK;-F+(g-QZKy$N$!2{i=NM96esZ-(SsWrNz)boJIjH(yq2eWb3k>FCGi$1Lf6w&=FxJnb2rt;y7zF;xk8l!kaIy39!yh22vI`EU~ssZ6WN@{?(FO@YDH4O z-0Pk>kv<}8We2}g7b;vtWn0IFwb)kN{wlA0F~gFfdkd0+{W=PwilkKby*_rCzY8+! ztBcalciz4*FileRS8<4_as!wOkvL5L>=AkKL`ov=d-IQ=jms1f8WqdfMkqKTq>3ZK z4Dlo&37EVvJgw2|&Wh6ti<%4ru)d-CS;ToqykPG3b=u3Z9|~+%E)&H zfXl!+p6k0qMnh^sC1|bQj)Sro3l$IrEG4l>bSkp{JUlhZA%(eGkKZ~P|)yfR`SYBqQO1Wu~L@baAU7cAmfy^*r*01qqKhQx3 zo2*o(H*p(>N`11+NTnTeR9EK^nb6Teqnwoc?K-A`fac^BN!Pg{eCx*tB>fe1iq#rP zZ%ET5h*hRrB)vT8=Devin~1YIR#qA${9Hm;(!$au`As*uB$^>|vftvFb}zwW`!0lE zX@W#!vR=}=eI2HHvA(ctbnPD*$=KJ7Cu5Z_5`!drp^-XktBlkP_Up?0tnW+41jDA9 zmP837RWj2teo(`}gNzK{>erQ3YlhnIwp{@qV2jq|Jw_7e!5ljv z6k@evf^Ml}j5HY|hn+{mrA8)Mdoz>&9Rtze+eWh55av%h#YpWrMyk8gk~RaR!cW5Y z39u}^!N@di^$J7TojkC%mStD??McTN`_Ie?0TbX*Da6F=G#-p%@@2|QJ_(?MtT%aP zPkCATvebBmQ)5Sm3>pNNX*^klQKxMX@r4PbT{2mD5(pfPeGh7n=aHRaWM~8Zl2TRr z50V~$fHJ&4llPUtsH9YB&NP@NZK)hJ_s2X0JIT?U?>^F1*GW5_wiBl)_6MinFukVPgaxm?9G#BWIen;EZJ^q_(7JS)A_$aw41 z1vWY)skH6mFp9V7(T)!H=vr29?OP%F_7}zz_n80STmv(E>&z5U3pCQm1?&9WKSFDR z36`~Km%lP{J9zT`jV}P9eJ)IW#Q~844r8zptkqe!w7rGfAoh6C3~naqsX>mzw;Q=F z0rk5~T`kXs+f6-0TAKwC|AMq=S;-o|yUY<>OOqWe{$;laRIbTd?sbh#kejhTgBC>R zr0HgZwR0%;#yf;^3`H?>WE`Z&@fq< z{lnrn*s?TFv-Ua^7>2aa@^_9%ZeZ+7({;Yvio0Onu3(00`wb(f?>7?Y=m-29je>lIjC{p#CituMcmb}?l7CHj9q6RZLU6pB> zks-Fm$f>~lnZ1xb+HW5MAS=^Ns8`||BQHN;nm}9{ zUM^(B3$2}Pf)>NDd>a7w6ZWD5QBvru6iiyAw(iEmyE?aAX_};bLau4gQ!4L!jZ9T_ z)Yn%POS-$avdZo;@~m2^zumy{#`5GRs-%*Ecc*L1soLnyJl&XYYn$&* zd3>Q0AhQ?Hlwq1Gbjs`drGB7_WlD&(*5&;+)A{=QOf)j5*?IVhc=+`wnGO6^)@-us z*ZKA^P=c~EyHe^DJzy7ee*XXf0>u}j4!n6IkCy~+0Pwq+9a>ZNG4~d9-p%Tg_@=P! zy-FQzs}aLT+J~L-USgTi)uqmfPaKl5Ck<=*B0gU?xRU+ibh zuvNVY8gY;@d!w#=OL6~R_aFKKWWMxEZIyYV*o@HZ3;L9hrzCuSw=dP9NPnd-ni_j! z=spuHM3smD0&lY)VDc+x8~KhpZN}cZbr86tBa#?Ah%VxT4fK{lbF0JQt95X-S zzxN9+yNn#ELtkmOyny2Mw8P$=ZMQi5rGM%sEB9p_>axwqu@L0K2wUn0xRt~gX|Tpw ztzQ#qoCMsM>_+u{fvm$BRB>%nzS-63TxWdGcEYkV)2)xirwqWim!b$+X*RhJ%Zxms zuIPB$k2XP9xw<(*(1aXVKe znpQpyKZ(8&PK+ZE+N$`EEbxHe7@Fl`C*!3Np?sWlEAiwZDtRyR5Hi-S&#Lc!fihK zn9SJg9ipe2TpVGP&R~euVc>_OD}iXj4k85Uq~~H6a^&8IR-9siRqrUPa8E~@z#qeE z&d~t@OFrTVS+Tb`+Bk)YSRaanW;p+JZjpIFa!KY5VOOjZANmUt1Zk}q7!+hi`4eGJ z`OPLf3}T4vg8J+Ioe+}z*P_83@+zIeKko#PhvGn@0XTcb8Y7qR=xl}ASD6&Ms_?>q zJG%0%t%ehmR248fGS^xBLC-p~!_rGTlD3Hs&>DIl}$ltd)L8!oD8b{;M3LpH|Q^y+lJ*agKePld@F4FZibLkS+T7yIVKQgr z2ZfQ{br8zKT83{=*VUx<+y<39%uX06!|(5{+EV`%A+t)ca&W2+zSSe+@tPopA@eJ4 z1$@hg%nZ>qT^D_YFL1a=^ItN-to_i6W%TYK6S|?lXgSq_O*UjC*W}#>?+(^oCgqdhw|E%N~>4f&{&_{m02JcWm8( z<{+aq!f$Z{sG)fW&B=$!*TxrkM9S~Y(Mb7o zxh4uf!0nIKP*GwWg&HA;i!R4_HZ+tq$D|DKPSQP%nP znLPQ$lOZXv3R|aI{C%@T2I2z*X;BCzV4>>05=m!=$cJ- zc3Hdyz_(lFgP*+JG~Mn(Ct{Z0 zP^7JLexMaUuzauyE^?7d9)GYZr7XEOq^*+Xq+lK<7*zGNak}+70C2YVx6jcF7KNpS zKDJk86xrSvU41USsU(cKwwqa1BQ;KPrG+)bO1grqrzSBMtMuDdt=2J31=7zEvr+Pr zc&%pPQh@=gP1iYG5QY@05u0SNt1gv{@n>m`=SToF*~}`b2ul>K`5+|<=Q3j8>)<7d z@!PRLm@y3Q>lobWMh0V;OEpHMbOMD~knS>1AA|c=-ry2CKTwc=9R`;!lquu^v}t9+ z6)@E~to*w9jyF;r1ceH{i~@T3Qbpi3_S7@Cy0JbW>7A=av{0z%V|qbBjZxFfAZj5$ zzECmS&)#E#duBB5XjTV`C_lbhad&^nN39l}#?=(#V2ch6=KgujZ8_!AjT8LpzXGs2y_(Oz*j_#T_8?6Evv@_@9F@e7*NgwVZqa z|6@uumgK%)=ZyscNtKa@=V=oHmiII{k3&>~v3Li}AHLLeU#gI>FZ9O|JJ2Vl57v+E zR<0hh4&e?(odjtMwAgyKwMT~$+JQQ5F~NQm`FzOvDKac>;4~$XCN_dZ}f8vL_)UZ!J>rB!8}f#QAO-D7q?3fpoNFXN%YdFECrM_WVm zQ$A8>9EM?EOSO2a$GVlUQS%Ew)l{ZU0XSG*LuEe9WPpCjS^|-l1j!#TC(z0fXayd< zdTQ^y(6|ZFtyYWl5#@3o#o9FFGIGR8OpVfx;y680B6b5-+O*J6ZeTIO|-u0T2e@i?ULwJ2n)# z{br1`IarcvdNs7LB&V$J@zM&oP5i83p>kcT=G`f(3%X)wn$J8-eY=v`j#nI+;Iqh5 zZ(=AoP^gK|RG5%71XbW81EYFZ!l_%~ZOZ;{^9ZD8pq;0fDI?Eft%UMcU4YPsd-r+xh=@w!Q0?~RP z6_`(%0`w}JPXIm*BN-N`jvL8x+1PTafTqpuJRfId`7+gKGW}pN4>rSv4FLBQ2TwSB zSRsS%P6c{qa1g9S`G$u6$Q90?{+L7{_d`@u6X|}lfZQgm@BuP_cqV1qO)ZJQC@572 zg#A7N3peSJ{*nO`T-NBzaGGyJ$B)P3%tZ{Z7HOSZ!x;0kN*BY-ub?URfBgGcw)G}U zxU%A?;?~s)Esb5g=P8K7B^)Xgv}~jOj=Z94W&Kqiy2|?LZi4)OWdy5FyFQo^kDD`L zHw@g|VB|6eJ0fg1Ly>WJ@wEDU$p1>c{rY)EuDi((y0m(bUOq&3J?8_d1UAt=QOG6^ zsp|e?O-wFSM75YtTXnBPj#1S;s=DVDtLPF{-C;&lb?**oqN=+)=+SDaW@yNn|3p=H z-ECMJRox}3x_`=$`!Bib{^t{O>khHBl0!vdcizO0#@^4=y`KMXVRvxue$qJIDZ112 z$yN*Q@1WO-sbFGUW^1i>&S;XrvbYw#DCASPN(zY(MNq2vx!bjhuT|A{lA$<7yu>5S zx&DB4K#DmRP`A3c_vUH>$ddY>%asjQVQ(TfU5^GxYZ)UUKuTb)dU>jDvzFXdT)GTW zq-Gzt*P1^ivn*c|vW30YU>dbeuPt9TIrP2O^roA8AIe={w9~3Zj~{V@qAayXi+{?$ zSgmfHQN!X(PV4>QhO3`jr)Nkhat)%sLK@#|!}S~^ckI>LdOUq6wMVz1@PA=5!gGE}}zLt8^Zasg%c?^!;%7Xte!5mh%@K_UkWG7JHM+sDMK1pRi z7zLG&X+gE;7{b=CXhB~$`vPCrfPPWZry`p#>4*BTyI<=tFn;S0v-2w5rIH*{?v{Lk zIfrn4AS~>^t0&_q?4!)n`ssBmvL1u1ndp2fb(yF7RQJKcD&W@Qx<5#jiN?B>xrGA% z8KGuhiwbeOxsAp0Cat>X%{9SRcU~mWqe>J=_1u13R#W8+9-P_doW4HXRvWKj!?=X9 zeJ_=vv0JEyMIb}_*&w*&YmIia8Z{%3ST-<^0KJvo0uzs1#BL0oh~{}Z0j=hSrq zZP-&@&iQ;lw?sALV5jrJJSdHh=0`{KqoeuJ(fsIWet&rg=ZvDG`O(q*Y_HJpI0C@v zXnu4wKRTKp9nE)!fg($EG@nXQS)WSLQoo(*(xDv6iH_z+NAr96*ut0SXnu4wKRTKp z9nFu9=7$!Mzg~%s=7+3!COVqWCQx)V-?A|i9nJ6lTl&2R{{!;qXnsDl?EBZbJtaU6 zh(|~Bqoets@~3d3qxmRW^n*Cj58^~Wh{K_b=m&B54Zi3HaiSl@>Gx2VhGo$Y;^uIGD=aCj+7T4+*Z3{alUoV7n+7X zrzr?LH?t+DW^)0L+w!ziK|$2#EOp&k)23Dy=J|>enYMo0AF%IlpC7&_&V6$nh~WgV zIWvIY4a}!oB_B4=#@v_LV!WacxVd56qA^Ztr!}5?^xiY!n9}Q**uQ68vN8XK<9%iT zF#Q3aYYyKoWgd{#{7;wH*ZY1MJsER4(b`<}b-UGde^JvflWv;~HQN?z8+Q-wb3e0t zq#^Ezc00BGTG<;@Rvk5Ba|OsgE`%=YBsCVG4kWYp5z|$;u^}uBnZsB{1k3;cCgErg z{x1Olk`Yh|a4M)>T@nzhBbY!X=giK9mI`LYUPl#|g*B&HybfP)*wB)p^`$K1Ij zm9h|8T3c!(YtLPc-wxFaU!8CG@zPtd>mTpErH_2=XU!7&19fq-4=Nnf7lxWvXzzOO z%MCz5M=NKe_RaU^e3%@bFX+*7cK5$?e!)mz_q0R| zMqKiJPr23!a zIWD#_^!ruqQ+f~1`jCID%rw2U6vm~GnYo2GNi*Rz%>rwnjkPpJaXiC8j`%~*N;kv% z3fGz})~l}Ylq3F5p*LyTmDX0i+{>N~4{WJ@8X9JUiz>Ta{R}r}RIHl7`knaX^~hs? zc1K)9VOVwZl~^+ThRTp5>vV>9!{Q-T+4QniB1xG@fdYbxgT1mG3GDXRLSQwi_HOc)Bs+BY{C@@t}P}H13(T(WTh#pcV zp&1l&CMfmTLm9=wnXMG2GEOkUuOJcYM?i?fMEEi}i6Ck{r=*OMO-fEr%oPiG((tHhS z^fK3J;vRuUOr68Geww4_8RX5XB#paTfOO!4O-u^ffr8?cutWu7Cf6yDHX`LUmWi-` zV!^2>PzMM^Bx)RAnUrJlswcEzk>iQ<5Ml;(R3@gjSH>8ikfRjkc_L^Ldok~&vJ@y3 z@BW>}C9M_v1sVq?Og-w?5EHC`Ck}@TJUHJlXw1b0a|I3ZU^+NJ%=8Bp61D#j%b&xO z=vm4{k*{^gNq#hgr^4Pq-3^dIh%u7_I8um2 z`5-Q!!F6X> z)v+4<-mO0Ykxi4^oqS>%HcLl~*rgyx=qtJSA!`p)NJMT$^LeH`aVp!Lu*K2fHvm^r z)$Wij<(0>3!oxY5H62jfnSvF%a_~1*y*(7F~?Zj44}W0?@5yH_Jd4 zt~Py}7}T^g6^VR~qa(_6@jxEX$Udg99LI7_Rw;U8+M6{U?@_!1Rq+G*UGis}0_=uH zVM{?amY-Y0auuQ}%<46!g`7@X%h^)2AVwxz~ z>;##Kp8@>^SakyCVX;XffD3gpl|IFkb&}~82{08xPQo^ggq#j~TC?G*NK4#K$+SJG-)?u1dL=WN1+7}$ytaJ9a-;VP$t<_ zh`~lMx6~km01Ww$VO?|xM1A`AX+irj( z)+1P;6dcPorX~T-xco7RtWKs95qu}q_+NuqiI&qw@nBTlM83`z>90PUIZ`zn63PKn z&|lyzw{I&3UG?m)1m+O*8RaSrp0XXAX&qp4y_pufBf#T~3hi+@HWt$YZ7E9|umYy> z_>_R9zh1Vf2tPZN(8?rn@P6fe$04S_LlhwK4Giu9cfE#e^f`vH(;%owdB4r00N>qA z-;{e`uUkCc&KT41D7?h9T<)};5%^s-q0n?XFM94uj z7%3~_=B)EYe#ew^h-rmLBS-FA3DcI9=`eZF_>Mv1vos*=g65pMQK})tzv-s04gB>% zCL13>y`aL94KRtB>YmnaaD~qz1*+FskhGx^rJAcduB<1hoId?e5m4MCv; z!Co4YeqBE8GY)YLM8@QC#TS!vO4SPZLxsMlQS4HX0*PXzOV#nz=))-n%UlT^mN%YNvYANo1=FzyC2TI`1*hE*B1E zgR&P99jIMsEV_!B_NA`SuMGyq-=RC)6VQ^;N#8Im8U6vIorEE5D&StVa~|5Mf=K?r z^m-rc&fmal z-K`o4LiHw(l8xAoe_#O6d04l<74i~AY8 zJi)Z}t+*1gRbyE-_l=ns8KX}8_9xO^m`M=tbgKjUt8)_D0ubNdsmxVpMn8DuuKQ&FkTO2KOT6q@dlkIz%JOdBx%JLyk$h@GPP$~NQN;T$~c&LV83F$pc#3? zS$r>}T5aDWk7I{wOhgYi-TW#cY0Gd*%b0%^ARVL zFqkOUXo>d}LP={1vKGSCr-i&nM+VE+S)oL1jG0cnR;9m_7`6xnn{Aoiz zswEJ@x#pwpXj2k zr`Roq9}i4TnTijhKqxS@z5#CcfOBw{@OsU-y@X_YCQs~P`rh^DBORWZZa&LYSEokW zqE<&+s*tMm3&fWE*c^0CxdSZq9OJDEs&%5$6#)my@vUj{KbJg7d&G<`t-es!zm z7KdA>=SB!G&KFE^{asUBN09m0u^>!0-Tr!1_tz$dQ9u$+(%`wfWs2{IW`Zy{RP_LS zL%zbSV)yD&C}CnuKT86?0$D*(CCMJNP@nEceA%eEREn;>?512n2X3zq_nZGNOzLI3 z56#D?WCS2-}EV!P(G^GUb)&1(6X-&iWp;n$ikL z>nM_eEndZ_BiYcuUo$2JpQ(jl?AMHa!a0Fm)vp;nariZ3pIKaYN}O2|e`{i68{WZgXbo_~taZsdw^r{F-vpu1uxh4G{82qlhx~F3_U= zdY%L3l(2v1p1RH@)mj5m#U-h|X#d(|zS6DZiE0REl-Zy}PdheiDSM;tcV~0c_@%(> z-|woD+F%Rtu21!T7bWO}(<^b)OY8*3X;nG~bxtEHFaLJezuon3cM%_JwQ%=ucjFuC z^NI6394Gs?yZ-HN{M>YdZcu|CWPtwd?qIPD(c|Cl`nS7b|902E-5rp9`nS6&mrd>d z?QU`l@o#ti+ufu!3~J5sZ+HDe@Ih9Q=!o6ahv1I?kKn|g&k_nt{l$NP{C@Fh)QQXwjjj5DhRU zngGaXVgS*I(7_o1Iip5~m_RhZnrH(dp@;)UBSQpa0OpMv8ess_0%@QOhK3*w7>x`O zkO3-C000000001J00000q@@H+3F;XNpXz!lY&B0P@?|`lMxNC&Xw&sZL&P-nC#62$ zbz2Ciog0{)x-P;9CTb|aO1>xLU(2N3@$O3WO)o;qv2hQaeZbz;&=|r5B4hH%KsJh zudRNC?OlZa!pgru_A}6A`j72>PRCK$v3l1J2g=KX|3&6KOAj%}`$s{;_=oWreZj@X ze{lOp;CX@Oy`uf3_)jCU{EG_r3HOJzv3!M>kvv9MipR(>=(upQUiAFVi0m?1lJ+Ov z4~TrK_P@P%9tg#U{ogA7_d>m_$G|b>=yX@Y@lL0;bs6kmD9b6>9s?FwSo{Tx#ScTp z@-aBLII_iL@)$h@(cgF6B#~IPou;>|%7Z@G~M-SNIeo@Cq zL&@qtN&N$|^|SB~K>bHWJdFOg-aeC{^$%O{4}r%;@Se99Ryw~(&N10=@DEEF;Narm z;bX+?zldYtU!`R8U+R6QsQa(-IQUun4vQH)-eb(m<6gD#Pl)o9@nXcexd6;nDv}~lcD*?{1zXT?;REWDb-)*{Esz{H<{Ub7rl5d ziR~}QSL9V+jH?zB$EkU}1IT^zi}S16uj?Q496O&X=zNR%m-L@W?LR8_E-z^Ln9QH= zd~EkPe&g75KcMv;m(qEjBcOjddx7dw{?&ypDaFMu0$(Wmi?YtF&!N?LG0}Bdhpmpx zzOU}=^#@_ue&g$1PN~&BA@jc1W7KE%2eEvFcMyCdh^!1mM<0YTsE~%Bk@Ngz`9UkM4Lg?c7&z#HPOrM$bJDgV+-#zQzpAq;^Qhf{YC&<1x=1};P z^Q@mq`wyM>9~0Jl6CTBJ(4K39(w9Yx9Ue*8eU7JN@h`??pN&+0vg%o7gZxHJu)_-s zSWbn(F=AXph88CUju!?@GZljW#Aig>B7sno`Aa)WTr~5;3q{KER&*m7&yv2MNXw*F)Hd_1E}gw z#W*lwm5gJur)8AOBQAx|x+|!7D;HJKS!YDW_f$@-NXK-X1;R08z?Tv~$z>SI#z~B` z7CaNuGxwG$iDI2aCv{Pd#f**xIxDf4@G!8j>Z`Drr0iTPBu*sxkyS4hT^T_<1@A1o zFqmOt^KdgJFv!CzgN5*?L4yV`xK~Cc+*fqO@Df}cJFgaE%8Lw`WDgYac3fFw7AbL< z%(z(WbR19gR3BoO0_=i3QcJiO5Xvix3os?Y6vab;a54MQ-A?N(DdISBW76n2I5?bL z7Fd{OGpS3`F_Q8gN_1bqVV7~ki;2QqWM*SCgM)*)mCjxH{aiI!P1;l)z&D0)(zl{`t%JVD}JM}goxLk^CI717k43xdlL=~dvP z&a3Wo2VAlNA(`%>A45u6}42r`Mz)K34imosj!WxULI|xExjt7`USanU-L)A(ad!8CG#vM-gO< z445)x%BC4d3n_52s>VddRV*y2ixQ&@O3KJ_V&Y}RXBA{+FvWy1GAvmm7y~O4i#WK! z#LTiX3d1WIR!c4!Wr{8gMV2hFF=bXPg^ZNUWsu2%lN6RPOAIREg18uCB+f1X;K*TO a#ubJb!jlY2V-|7$@pmLsg$WB(dYo_pNlzyL diff --git a/client/resources/hardnested_tables/bitflip_0_19d_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_19d_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..2ea815311f8c75f8bda4b4389d2cc11ff05834cc GIT binary patch literal 17854 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_19f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_19f_states.bin.bz2 deleted file mode 100644 index b4a434889f68703025f7cccb7cef90f2e89856ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1084 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1a4_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1a4_states.bin.bz2 deleted file mode 100644 index ca79aa9b070e16f0df927e6d7d8da60d705d57fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2795 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 diff --git a/client/resources/hardnested_tables/bitflip_0_1ac_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1ac_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..bdee2aa730bb16d80b0d72301f06dc6161a2136d GIT binary patch literal 18459 zcmeHPeT-aH6+dsj7WZaZu~`~zfDl>{vS2J` z#87%gg`{kYAq9y6vWX4&2Wq3(SlsF~pozLELY7(*2#rxv48;;kMcm~0JNM0-c{APO zx~YiazCZTe``*3ho^$RwzjNMsZ#FgW>ikV#-kL7P!8yaOun4w4n8B=a|prW_@-WVGaXz1^ zTVyv=9=x4klN@A9ix|w>!=@8l(qi1faU6@_^x1HzJi$~%_b3KFiKW|_TE55>i0oln zwvK5zR%lgD*Fu~j&Vp+yE>zKQew8V89TpnJ{l`HNeILY5gfvBFf;0KFl?9h&$Lz8G za|>g6N)@C?i2?<5h&^g8kn#G!z)+}=q+H5DM_*wqOT9j{M~N@+QCbB0%lyCt3meef z0|h3T+LmC6$E?m)a3!^pO$GzKVZTDqdM^|Kd7+4}f&4!)72GE8@;A0{$;)B2HMl%q z?W4_07KHpOK?!QjZB~ji8l_ABMWq8f?c1#u% ztUMaZQNOdAO+U6z{mdJJIUZp8%=%D-bHEH#A2M?Rn=LR;Zy(0(vHYk3$Brdz`qnV@ zDz{ZP(7WWD7N$+unVc?ugPpO;YHB3nWdW0kQ95I@1e5J%8rTOuGB}UJHle?P+JxJ& zl0c6wIi{P(eOicBpNJM^ED9rn=O42Rzuc@*CDZPkdzfB$j_Gm{;L%Z80WA!o@eb3K zBKHECKtaBwM)OB|DO$Z3++grm(0_nw<2v<;+b3Hinjk%FmTqENAv^sO+u3x(NzoCh zDW*138*`afZ(%wtvX`mK)Yx&6AkI}rk4Z9k7qZ*0DVEm*|#J$a--+tHwI zpP+aciyzr}bmv($(@UTR+_`Ox&Gow`bGVk$-MJ!ySwMX;zXLin`ke?i%bUxl7w#Lo zwZX3Ci0XT+gSp`oS2qEtQ1mTRVvrq_bexKAJx+#YcUL>`!faWnx zOccslIF<1(0gwav1Ilq80Yn1<^*~=KSk`7N_*EExHDIM*4Fi@)EAZ?Uu=Fmpf{VaP z>qS;8JJ?*c07SszK4?UN@U#&1#+^XPESNt_A&Ti0K(@ae>~w%F@IAeF1e~ZtJ%r32 z$A&1Lj((t_Mbyx1e*gSNYT9dKvjd>htl}jCUOM2*jmRAg-I*TJ=R73#&m5w+o1em zwc%E#%f71~Vy=Lis!4|?MPb(3&*s6Euxltkaf<2Tn_y_WZLklJj#2VkVZM~T7uVWD zyUz-i%G|H{k8d(o9(W6K=o!jSEJf)B1B_G;*lFhI(i9P%ibuLM#TwT~GfgQm z%^nQH>V1HucK|8yUQIfuf*9o%JT`@KzX}@XATKQ9d9IAO>l=gv?;Fvh*Z&qko{l_y zasV-{eSBfw`Y zMgJ!-SHhF$z@HsYs!!f$Gv}XB(%p3yI89ImtARI9bm& zng_nb^!2wO%JY+8xkxvgAKNgiL+sRpY@UuKoOpnyXLi}xhQF0VOrsi4D?`2^Y*Pu^>API zM4GT?_sYzw;iLJ=tYN3n3G536SM0%C5cg%zfBx~QEB3fzkNdI*IO>W$?gM0M4zBgS z`vAGFi>b6+v8Vd$1y}5;nTsp-s485s#}#|<>00#7zkd4Te#Yf~##KYfc*DIi`*^=H zi`#;>U9rb%#QltGdcQPw#U5Aeam5}$h%5HEVvj5KoV8z@yJC+k_SnQM_Qw@_R2e@D O|KkSXSbFftFa8BzZg!&p literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1b1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1b1_states.bin.bz2 deleted file mode 100644 index 860f486bffcd827f7f6660d602e9c3d710fdc917..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13188 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1b3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1b3_states.bin.bz2 deleted file mode 100644 index 8afe0ffb979e9e9982588f6c9ee65ca488b04014..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3233 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 IxY^_X0Y=IQE&u=k diff --git a/client/resources/hardnested_tables/bitflip_0_1b5_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1b5_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..04723ba94005c8208a49e6f0d167c0752a597eca GIT binary patch literal 46378 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 z z)3%&B?YGAC4Ew0S}N2f1*Si^1MT+k%_(uw zs-(cQ6bnfTOeY1VlLFI8foYD862D3cOjCPVmx+bd@Ucz3a!AK4mc?^<2BWY-F z@vgw6!1UNx3MK`ny@OybW&hCDKPz8enV?gVEO}p(O^kmR~NI6qrs5 zOeY1VRnviQM&!+jT9Uv{A)awEuT{bG;^m083i+6qBXUTJx1YV|WaXq<2d69TJD(|4 zu$9;9O_wv)=tGWI3j2mO&hXv9D7=o68yxeKV;S-yZ8^VJe;*^o z*?auzczZsqs!rvb^I&G0#CX2NOFnwy<9bQ5a+0j99@)e3?j%|HgMIr}lB~Q#9peWM zhndryhfR`|({jvMk{*%*)99b1z_i0&fBbI4q`-7iVA{UNFiBR6sqFK;~^M|mHraQ&yL8RtJJ#cn7kc?dNX8`b+= zG7hvn`Js3t;=oh0L&qCNZgdZ%g51BauS84=OkW>wyL(G{jU*x|5ya%3h)IEIUcH=z ztZQqDb!4azg3oVD3QQ*jrrA|V3QU)i0@Jvz)Py}6dpYLJ&F7N>(@BA8c5J)n8I=^6 zj&}J;f$5~cH19Y_3QQB_pw#g@f3ZPQVA>|AMCTg27yiQkCk3Y04%^)e#i#P`T@(Kw D2#=x8 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1b7_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1b7_states.bin.bz2 deleted file mode 100644 index 8d541ff7d5bf9730a5de808f688ea99c23acf52b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1984 zcmXZQe@t450l;y*D*k%$$58vo7}j41_(FM)<^ox(_1gLidbS|?SWJb-!`|i6OlYz( z+p|^#3cSO~Z!WC%M{3t z|L=cMOwWFaD-iDKJRR`Gk*^zyrzbuEK>X8LFDN1?$K{cR(?=3vT>j;O55xxDX;R(| z(g!wi7lR^Uu>N}CM6cvR_wM@ z@Lrnm+Y76&nm(@vYj4c4YR`C2y$a*8Y2vIN?S9>01F;iPL(g*E-%mPUIoE{Wbn6JI znX7=uN8A3U3b%yx7BJQc`X_>(+pd<#yGOr|eTUDrfGc$GQ*!y*zR#^Ur?xL0`@_)f zHy3AqxxH(1@72GpN2NC7n*qyi?YD>$(!p3t1*@FIe3F>`xUZE^ct!488Bx;1;}v@{ zBHLoms1QKq(R4L84S^vS=$CQChecFJM=j<)H1+x>dJ3V09~9fe*wpAkk%o-Tzoo3Rq0N)wkluq|(ZO!u3Yi1Y z0shnpp!Swu?h(GQZBMBkyHw@3^yJXEx8cR5;?(qJU(XgRbZrwJE+m&R%D^&k$&U=F z#y@r_@~~?T$qD& zMHM>cRJC5Ax0FvLvhRAM%VP&1#VZ`!X;qefeb_s5@+o%j?Y*J88cLI@zv}X{w~Jq4 z(G|zyw8|hIC8PEhAO_>JGMNf#Ciih$?+8j3GdI?aP0bT)$hmD)OZYn{7wApdzR|v^ zDA`rTk>6Za2 z9TZTOLMj-T(-#`JI2J0SH>NV4xbjdmoKZGVhdYKbBzXUvEvf$=$wAaMdAe>0 z&A{trS0fV6XXy;!I<2NR#$PNw z0Hz`{=hrtcaig$H*89!aKN3F_zB@KK-u^frb?4)`g5t;i(6g#SUHgsj8w!}*f#Wq2 zvM5e_vbxtQ@@h8H(`&D1Dw0NuiRiVx)0wqOWShIQ|Eo6R%FemnTYJEaF1Pb@d+ai~ zw>!Ji`ts(}p6xeN!e?&FLB0K%+xX|5^NEk%6&PS~T%_8wSMWoZrmn87Z4G3!o3X55 z(7*bU_k7G^d3B6NLmmJ?dFhMAi5=N+^H;UVSl)K)`9D5v-johKUo)BGZR!s8;ysT9 zx~K%MNAWk0G3K*sJIMK*-#Y*J7s+;*9p+ek@W*fR|i*FT8~T>tTH!+ zRoWJt0`coL0{)24oJD85MtnW%$UG~NotGwM3Jc&-Hl@MYK>Z14>5D20{zUFRKBH-dd%km8ajTy=)T!04&)JW|N6j{m)_oIFY4`jIS zF##QNY}J{UWe_qSjZNfAc~n@T1Lhd*CS9dX;aEbJP%uVNon9}&RXdbt4I-YT)9a$b!vKt{A})}-z+45L7QN}Jf#ohM1OpyV6xJ&%?e#GX4HJRPZPgs( ztQDjtoynM0otkZ#R-nQ44RzXzpJydqfK}w<21k^(jS)?RLm|AL)OyZN<5?IQ86vZQ z=!jr2=`>K4Ms5UHej>2)+~Zd9hNycSvDewC{Z;t`O<3k$l!(y(SE^vs!ISV!&u}K_M4)_$Oju%OwOj ztiSwc1TsISM78XrTCYN@beETa;fry8v2XJwe^dN`#xKfIp73w3>1qm|(&+_se!6y_ Pvu+-_SvPzk{)>MD3xaID diff --git a/client/resources/hardnested_tables/bitflip_0_1b7_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1b7_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..864a67df55e298350666235d809940f7b9cc101d GIT binary patch literal 23053 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1b9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1b9_states.bin.bz2 deleted file mode 100644 index 42269c116bd60f0272e78bf41208d4fe45285bb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3840 zcmZuzZ%`8nmPe5w(53P(c3TvRKp;sUb~kfX(2 zkp&@%kn{>6e@NyyMgA$08ItC<3TD00BqWn`QnNGeOx%x@bMoRlX@|Hyv5))SWVH7E#{|gnQ>?9PWMjB1Cg3bP7HNh{*)cvU%=D~O@hi>Nw76OBBHIKWaEa7bm$HgaGCW(L zRUDM@F$n$??BQ^X8cKvMVMi6RjG)FyL0uSAIaY-w;L`?zA1qILZ-JhsrOHgoBJlWR zPuIGcWw?R$SUWJCnp$cD1wS)~cD58q2{PX~)OkP%Qm7gwib3*}Ri2d(>Ue7@hTj%g ztBi~DR$tU?8)Edom)_ z+%_6!1mF6}9yO+}IkMS0hDS-8{z#~l8e*L;h>0PTSvm*^ao86>8XNWuGnH~M;s1+T zBvD}mo(q>*GkG7rQ%<9(;+G`vuJw$|a(V&ABl4M zq+<_FFPy#KeOhepiKFe6Z|ZX@<&xaBvf;67nkM$i%FgWM7`Q9;QdbsuB{uwwy*jy} z`}z6Lc180x(DwPR7pU4^^tQ3oz6ZC95r1$ng%D*J#$yN{&v)TWT+(r6@ZsCPo}K>V zi*Qm11;z^^wfV1ZZP(_$+5g_l!=LfBH_mjN{-L+*!K)7YT08%GW_*B&>~)82_WkKX zH=2CyL7x~xKdJ|xzed(CgO8JI&p&U@A0Dy6<;cx#X`nENSLLxsf)%o)k0HfQ~RG-v36>r)Ofe;CpDuXX!Mz+*#+FyRx?cJDM!dU;STq# z`tHZe{bsDQBXD(SQ&YHaUjfnea4oSA`0&{AjU@XT>q_7?zIB7A9or0T>I}lhmjx^F zpZd~;?fuPb!Zgs4`qWgJ>k#NiKUVCJCEV350vkHYvb7*q{i$c`ddJkbetp8n70 zk-`FPRq}4t^9@yKb-UsW+3PxkVi%VH92i`^R1?o-(~71@7LOk%MOB^BsOK z!*F+O^^^CLcW;|YAJm!t{H5_kheZ*5@OydNza0COR@v^H8oAtPXcCW|YrCh+?{%mP z9d9F9kklQ)BJ~iC>-@tm5_KVz3yH%79Vtm5`eM-UlE4YbQ;Bl%!%t4NPns^azBBZo zc&K82&aZ)R3`boh`ka_m!s004)@UR<3uac^I5!ipka}52q{?ss_#Er;aJ8AAXYx!m zf6DoOgX!;X*R=m?_P_o~dt-X-<>lJK^jOwrdB+RC3ni#AYJgQn2@i1g+nrPzLtN`G842VPY+6g0RcGWM9vR540{4<3whLDg17lqKhF_GKf3uF>!x<`!tCX$WG#^Us^)NU_&jIZs(WqwDR*yJd*^(HCA!IWYp>y5 zUE3ZY;HrlqloleyMwORUJ?{NFN^f1gf9r{|55E%<(GU_g1Cngoi!X@9Y4(Fd%HKR~ zIh(^+qWoYHOQB}9@^B2rc!HVBx42>F}Al`^(G%0Kf!^au|t@ zMJP9=K%#tohLelp<@`Ou_s|!`6?qA(%ruJ7W~fq1FbR)C zaj`wOZFwwpd(S6z4STp5cZ)}jmka9AIi=Tx<=wRJat?bWl01lJ>6l~IOoVfyJiyb_ zu-DU23BgPxhv7L*F-!z2r8Zk<6HlQI+JtyL(D28qLvx^?db0b*%e^CMjpt>~E3KxY zF)@z6815-~<}MLChU5EGt+G(y^;WNo-^fS%C$Nu^m;Q3AcwVSj>6Y^F8im2Vr<; z8r)6SrIlHrUfSIl7W@cy%Q|tXKpp&Z!A3Rm*nqBGs3_b=Z)gqSi5?ZE&$|COAlxlp zy?$VwE$}4;9m{FtMJ|<;GZ?B>0b6q8%xTkT95r34$gl3i{dR=nV(y^eaYtoQ{H8-U z?`(An{shSi&qE#+7y=_Gy*Yn!Fef8+a_e?2z+M^VcGQc=FtX)>M$#0ZPmBsnnBRe|_!XnM9t+l(QYa1>IQj=CxzVqhO41>XdRg_yYlHGLoRH5UtsLtQXg19C2 zR5|;XlEsTBK2pj})h9zzr@c4}p2oZ$`WMCY8$;z76W-~N8DlZ-HcRGnw6IVZ%XpfJ zsm}}9&(fSt>(k;449yj{LWEBPd-X*i!(|wG=P*SOUXLah#4CXo)n2VVZyBOI8W*KNNqA`@XiIQ0&0H0FZ9IA|dmLj3n5B^s3+ugtJ&T?e`d;ZxE8d*u^ z^|Uh#5&-?0&hm}6>+(E?(TfR^7){u)pqE(!Ns*fHs)|z~5JOl?Lfp2Q_6+edep6>N zwv?e4k$MTBhe&)5iP-@H)+6ko9AapOr)Oyk<&xS;Q%rdkj-P?%_5Ws ziQqs3jE*Hz#USFEhcSeY2BWke8(n2Yq_{jxF&=QnkNH6_=Ek_WH22BGP8;F5bB-G0 zRo-cFZ0+uHNo!pB)|}v0e$Ci|RMLoQaA$*Z>UqtbYx~ZRWPc*JOop|*H=P%xDM6fdgJOGD+CSN{WlNq^S72%`>xjyQE|Uc&D!!@Nok|nw5PoG`CE9N<}7 z;HJvgFcdV3#u=`PDQEl3w679cO?t%Nu6z??`lEG!qzbtEn0m7=r?a%ZL#uJNB~#Au zyh)qr8u(FG(B5m)rRXj6pRLtoYcB)moxVxwg6h_)`jdLQnhGrSbh}2Y7Hb6#O45JfmU@8+}3K9YNLhLYRcLCU!>K+)`De8p2|-(cWB+XTJA+4>xMM9X3+^+ zt1fBsbFGT@eyxtRb{=pvIg+a?3z-Y{Wss`(dql{f#bhR_6Hp>IGww?eNCv1%7ORgL z;HRWgIh81={Rak&N?w$jIWT~1K)Eq_?`1Qd@{wk1mFHyNVw+Anp3L@DM5~(PkRg>{po`u_z0zw2mJ=Znl*r%V8ye&xU82vi9fr@NK?EU4 zT+ED+5oR6&5u&T0AdTYIp2u9TX_JaV8YqU?sq|@nk-n24o{z94>5w@^Mnqg=C(!FY zK8S{N>!N}e@n_^AbgR3{iJ&T8AvgX2FhVC}wtAjmWbMbb>SzTTMr>e2ffGGM8ph3q zULfIJBAwuM=6lRV55Y*d;Z^B!Lk*1{X5K1)nyo{Md5;HQ)0T7qd$=juFTo4vs@{V@M8DFn-9mOO~l?sziFVgR+rk3lR13M zOF=Ess#UlS_s?Cg%a>yF5Es?I*59VkHL((L-K#)8x?ZcBj?=2DkD1$aSw$250OL&* zv+8xy(8D|mt>aH?m3>vK9Fh-z8vPxJL$ocGqt zUFS!ah{YF->e8*6ad$JY2C3b==4@=nXVzpi9w- zajKE4Hmnj|@(ivD44$EBBnttiGS=G6XO7qE=vsfrq2gXrDuR6Us6hX_oUuiaKxce6 z1VD`AZNgGDVTo_JTg3!u3}}7;{qgRFP)y#7|473WZ!-K|5y&3K+Is><*aj?nwX-2T zFubTbMRST`Qhb}xW(spe9F!tq0_PME5Cd@*NF>)YOdKdcbD4a0mJx*FsB!C&aFoXQ z9{>U@KxnWw>zih$ogNa=3pPfp2k2X3EKwZhFfpWY$XMIkwVC^{+&~czwm%Mf4FuxC zzh|X0S{|cw##%-lhlq(i`Lyr|L%k!$XAnt(d;(bmmUUYF1HX;%$OtDE3*<2nHBM1S z{xN#x`)e~e`Xo}k?fnqB$DYqHOzc4<6=jsWnDZ#a`Yxn1525dW5VAo0lP%hwv~Otj zw=zY=tOAG!xF-XGh{-ZR&5zR%LT11vDV9x$BWOB$X38`vc8XC@QVto6`ZYt^EdIE|d?YksL*e(_7T-0A!rvu)Grk5v8N|7wqptRZCb6m$vt_+0qoQ?`Gi(aTFV`$ z4iGK_^O8apV;|D$8$wQ`rg)=P|J~-$`_-7ETRWcC5TJz)~GTDb%Z59nBS5L2lpUxARQ z#TQ~n9Ut3tyk9;ZCZsXr*-XKCb}@A(7Zsl7Br;hlrrT)Ltmyv#ujyoMRCNwy8K2F$0L1N4$9h9dDVxb!9wNkVvznI$+`z_;*~c_Z?veB&lB!vkz3z-W#D%kP2-cRe<}9-?DyiyJ ze=gI)5`7J13V8A9(E4V?LhEXPRjd7n0i5}_Q^=}u$nr69HUu8V3py~22kj%BncfKM zg6~KpZ3aYSk^IpU1Efq~+6g9Bvm6nDGLEPhz?kOU1eR_eLq8b7`w>mxS;m1X+AB+zbTFnShdg8L)kGB>^=qQ+)n`sMyy}6r+Jn2C&HdNH6l1xCG5#hq+#a zZU22hrxkwrSa<^IRtQ3x7<;OiR@Mh|`VdEcyLLKPfM(|GQGS_eUvS@ z1#rp!GJx{Q!08X@m31z3!v}8iH`N8QQ(G~T4H))GleIc#ErCNbqqOrM_%ijvjZ6nm zQR>W7A}f=?ObkYkOz&c#xahPbNLqgHD-@>j5nVnX)91sdWnkDVT%a!joa$YKSTkNX z9CnL=vRTUA3s3W)OGJ(?UP=Y2yjd1u{Hj^V)oVK9YS6H%NVW*9&kG%iINj zxN^%?%SzMfsDMEF##gi8tH_&54~i-c3Ncb>10e0sb=31t!(l##g$Cliha2X#A4*`h ze2UF6)SfKujCip8q5y6J3Nu9{6T|iES1UAj zs5yyr(MJTaNZRj11{SIV30&cH9a|-dndE8c1bWaByde(6}vX=3iP>gAG zLeFX8`Klj1hn6YP!Mwye1)(%SMg3Osz{strtf>?4a0h~WucHcXDT>q$*-=xykk%C* zT^{JohXQH{nSOz8JvG%=k2@-KdCo_p?Y{bVh~Fmk{gMj=ZW!9ajW#zOq<5qlDONA5G2=Y`V5S247t+j(l3_2(>IexUjJFzmpNBmNRF0U{S6M#H zbN>D$iIOI0bvptg8HtRDM5LAujBy)JtDXvIV(W#}|0)>R$$me=TsNLI_e6+Fw}MUh zxf;+oL~uR z5oobXl_bT*fZM3c6FSIh0(Kt5_5%O9X$09b&;)Q|#Zs)Rq)n;TC+Hwekr7HOC2-C3?k~!B^u5fuOVSAzCLGd)S#QI?tigykl7`?ZvZchNlq%{$T#p6qBv}c| zOJb5U^XUId#muh@Bn5RGGa!rx^bs>1pD0w5wIPWONkSCVB04kWV*8ts!N<_l&Ej@m zhIW0dvGF+NO=se)E~sQ1(3bn}Mr&xbr)+~!J6*P6M})bS3G_b97e^&Lb&g7yAc7$_ zsfaBCPf6F_MZEP(>pPrPy8RsL3lTEW4enW#!f?+<4=S<;FGfjQV`-XzeNfH zqaFqOeNH_P!bqw^QV(VhBX)_4AH%0j6Q;bN&EZR!NKD6a7%~Y7nRg2}(B2Wr2dLU3 zUfD$s&Z}X0iB+1JDxiNEU05g|SaOhiz+jjJ+{*7^+0UYL^D|PS@EXvA|7+L_zK?iBY1Ow4@s1}JqrLA0+}I!A9jIGMoz%FNE#|{7Z0_%R%i)9 z16mrP2IBeWVF3J@xP`nN3yTSZe95+apXCOo5`!ID%=cz_vaz&JFhB3a++-^gAXdHMw*gm z_j3tWvk<^-Ofz{ zhzqr6ZXF&fq!8Fz7&{)e9PpGQS`E}VRTQVP3p5le>b+*Q^VBIU1l<$IbExh*q-=6ustzu^!7vqr`psVsIwPrIgV#4@-gbnwTuWB z9)2o{x&IK7<`UzHK3~=2c*bj0k2OT0#hQ-JmBRUhkjtD1SI;7bVW`6i-^@&8MbodA z8;86+2GqN;$ZK`=jan@Pakh-HuxwDeEa~Lxr0luAbP~25kL8dJfo-z#y9Pfn zh6@1VTc4J(uuV}ecDSiXArxL?EyI9+uwM~O2;KrSl|dUuEM!#f!N5$rMU47BkkN95 zo9)~&al!7JCV$&1XOfKs7T_($?!ANCp7P;--<*r(AXJUBGmO7q39J!&DZ}543ZUp| zSRyTleh!oDz$TWMrv$`(NMhsI5&PyjVMv#(^D)T9q1~9h*esUjIMRaT<5Mm~Ymr+(-7EhwC#nvP^h&m-C~Kh40=)3&I&H3S z3D%9RvhvtSbgQ`iDI%ttWbq_Pk{QA+v$5 zR5b??O%SQdD)C~XpMmNW`8y--;Wn``$pfWGBPlsODRXE=%dcRrGV9}#2X~{Z#l#oX z(Qx7_447p5ZWX5g4g*a?};u>Wswfsi~Qg8Y)9@62q-!a z{Y0zj5^u(L`WST+?M8*^nxK`WP=5ezRBVB`O_x8#G!c`p8Wwkx<9H7=5&I`$H^gHV zeGtpz5GlVhc9VjS+z=v zb9mO{FeEtw1C!2ordNqMcvH&bIoYpA#B%6T#1>hDt_wCeOClZo{1|5p*PIREkhs;CH+#*?l=P8Y`ZbB2I9H7elF!j0pLMwPjJD>+D)SuP8#5%pz@q}vU);aJhK34w2m=oS|?&A{7 z=$mpMt514cb03r_G@!R={M(oKD1RLm`27Ck|2^eV-mr9cx}zT`N2WUxJtejW>iuP< zAm*ta9rH-30fLk54(wzWd|~0_!w>;6n;2iTZA~hV1v+mbZSF-{ntgQ)`T5nA$_!yO zoEXf7Ji%yttIU|d*dr@5TH6>H6-i`Sw#>qQ#n~@F^LAHhxMc;#b67@m_f8)zyN*OP z7zLAsB?oGPE-BeamYY#tdI5c0M4w2%^=3YZ#W-ZTlns>{uW9eN?|fClpNT(&t%R_HTN4F}eN5M6bOUHo z>$Eyf0*nk1Rd)3I|VB>+sJV3;jGWZ=(y;B^R=W1svqZOrw36BKc5h=r{4SW)|CqeWk zi$Lf#d4<5l0wA)J8`D6K8xqHm1lfDZ$pc7?l$<;;ole-%2SBxk|MA&-P6WBo;m==o z@&oo4>Rf4qcUxeaPlV!^Uj@TGBfI(~~*PoN`H5$q?9b3%x$xl$BJ74LN3 z$|XdQVI|5w>@|gzC|@Nk4l7YqSc&rgsuCqk&Ai)EGbu7*%i1z7Jwu8nOwasT-Ua;hEmu<Dr&mzW!zNsjEqgWRJAU~lb||`K7jF)!$QUWf_&vaR{iw}l$!StN zsmser;H{eBcBj>8m0Vt>8hAN<01EsB!=M)UI{*p|E}HL3H=@royer{NlKz!C^%0xt zZ>cJHNl>9NRw)pV_D~gE`kYktOKx4UcPrIC6xs}JpbpQgkE|5_<~f;if?dYKS*c)W zSVh=d98ovCg5DkMosklavs<$7g~KZWiGtVI45$(H6}j%QYlz+U+f@GUeMfC8n`Lm~ z?IquI!DOHIhs=Yg+fIN_ewWY`2bCB}`%E-Ljca0mLuS)i?%W)Fzp)C;)(m z>U~q+*1fWKZk=#^|-{>*whhoK^SXYm4daxhEUX2s>??UOOqZ4-`FVI}x-LGw8 zYvpX-6dJ4?8nS>?MIT0IIw ziuSveH#PTAEo2TqMXR4kg_XRj*@OF7{v&NVnQy362zS^+kwZ{u<#zegT3tDLuv&G6@~#q65?zG_qcDOkf}rL$DQCK8-Y|>{j|p4wwO;;+-;Uen=vi&HkXI23F!xnTOoLNlbg8!DPhu0s z2m6`r!yU?B>7g*_M3r9l^~tx1yvmoza-cAw8cW9M|kYZyztnU@Yoku2Ol2$(h(l}BAGHWc;T@xZ+ZbLJoY6#_GMCVv{ZQP z%Zsw(L=G~T>36FhoU(Xb# zXZG-AM}s9W?Bu?Kz8^X~_9ft3ctt}O9+pB;b4;R*q1?nJ@o&t>DZSw!AUcUpW`>one@N&EjSSX literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1bb_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1bb_states.bin.bz2 deleted file mode 100644 index f1f353e416336decc3c10ac6b97518cb5dfb97d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1940 zcmY+CYfw{(0fhs&q3SJ2f_c~|i;`gEjwCm3CuMk}xI%`=BXF++NRoRa`)iXCXLP{_ zj|4GSBqWh!7g0n&NGeITouSmahCE4Fbrcreu`S6;C(!ATW>En_t3P|rpYP21cjn}u zsQ&{u4`G!f_n-eoLpZ#7@q#@e${6+c*P<>_X~K>z1aiXf35N-UhlERnhuh{8E)wEz z5&mDak1^`j6XK!FixfCVLQzWExk`8z7&6&>YGL|BVXXGItmx~-d zmLtp)v3++Bf6ymG-M82J2E{qlSL15~IdEh&CpHOrwx0ek>uP#*Sn?X8H>Up#d8m|= z(*c#DcA5c)g2DNe=v-yq@w6|RpJ#20vgBuIukOk_{gwBD#`Sa~zH6dE`VxEE@Ppj- zZ2KC$*q7N0htDxC-1e1+GKc$nghv)4!rVw$F#P;n_GjPp)e2ag#&qJzn8|s0ZOqi{ zf_OpRm=#AA)Rr(Pkl?;Cdn_FIDeES4V|Qa#UuQ4U7v4Pj<3+MJ^0!A|Q}Lo8c&h5h zWzt54X`TVSU!Z>Gm{}3tdh}pld+c4ym`D^dkB(K`$Z-ZFu)V#t1GXVXW1T-XQDQU5 zosSYPYD(X#nA)Aj5|Uj(1D#%%#JBS0N;Y#jt9IwLKQ~e1Ti*3B%AdbArH=CTyW{hg z&p#S?-t>>EJ%QzH>#|(N3y#;Y8sg_i~n z%%b+L#b+u6_9QfEJ2GTa9OR{Ju8Ptk-V6OLc$ts6N(A|EHG4^IYGstYCY`C~biJwl z^^HZo+IMdPdsmPuID6*TJ<*XN@qFYY>^Dt$XyNr)*X&%C*5q*Tr#;FA`NWxz(^Yw8 zGMZZ)`nSn!efH9w+I@a%@~pU~DQao@5p8v(AslJUSSfmZdhE2{!SBsjpEIqJL`mQ3 zg_nQOgcLbDdtSx-mwjO&J-Bi6yU8r-sMo*7sM^llO#0*6#Mw-~eB+^vRnLi zu<9v1*dZ)MuNUl)nEPj7wiBTelQq|(F@fRy70)y{wsnP433Dt<9nEy;zD!3)rMDQ%B?FkHJxeo}In2cYYDX>W0W$xdQVP2;p!CZje~)CAxhh z1#gP(6uoYVvxl}-H?2S0(NsHZKN%z$I?`3Y@N@WlUprH ztr#wP+^_ zGBU?OiWmeYeozs|5*YaignAM^WL6xYZ3n6aj#M3nO-|6OMBSZ0e01Wo8E sq-n{d&d&s$y_A$+xXoZ)G1Ojy2e;!r)RHYp?+?DZBJWQ=XFa|5e`M!vy8r+H diff --git a/client/resources/hardnested_tables/bitflip_0_1bb_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1bb_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..026830879371ea113b6572ad04dba4857aa113bd GIT binary patch literal 20159 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 diff --git a/client/resources/hardnested_tables/bitflip_0_1bd_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1bd_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..5195b6cb01e35135f6bab7960250d9c96120135f GIT binary patch literal 27930 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1bf_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1bf_states.bin.bz2 deleted file mode 100644 index 43164354dedebfbdaf3016b280bf34c44326aa3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1567 zcmWmC{ZkqT0><&>%;8u#6;Onnrg;|4sD^gZN2ImoFYKbf|F-p$igUpfR?qI~$*W`c1KAJnF}CVC$FrWi(twDH+Ga)z zp3+xjxGsd-LYvZy(zd7BA0IH88nwvIue&#!V!pPU|Jq|fSYBT0O3CHd8cQERP}HZ1 zfoL;bf_{2FfrpLQ`$dPHP0Z`bV?#iKbQa%y%7`j>*F&_GUBU{M6wO>>JQk39IiGjb zKA8Mb@SzjcnsgnXi5?AMJJ?U-wq9UUp|NsiSphetvmtMuiWUZ&epccdZfxc@Kjd7k2@sJnozDpQANF}m+0}$ z;wfeyy|F(W8c60*!-@MbvvHM&t`SMd)S|W8P5v6;6#>&v#_|*B28Jei zI=^Pq%DgEySNq3Dy5{~W^{OvuDBD0Z(KYR>fo8&kLaUNZ(pnrdZ0R; zZ?3m@r2kNTJLX-%yiInMQebb&(JNOuee8&QTojrhaYqZVaeLDWIaFE_qa!X1-gv!g z><&o7L>_Pd&`32(HD|Xof+c8YXwNFBXgb^epm21v|G(DN^dw#Tj}D2td1~Wy;ad1E zWtOxzra-gJcyN<&r)|}^bUVE7*0z0}SC$%Gq;4&mB>Y{ek${`>c2 z>mB0R$vv9s9p}kEFaH#L2g#n65B&DpE1mCEx037c79JC;=Zy0m5o!NQ5`y>sUYzk< z5hmI?lQZ{Y$q@FRx7TiPnMix(p2DkGjn* zm_JI5esE^;@vCPRg{Ey7TZ&3Aa&hs*W=}{Euf28jI9(c_gz+rrWy(Up=A+L1 zD7xUIMjdkPv+~yS@iM1wVWG}&0`G~7xbPr!++4@y%^T_jU(HW2{-%+~8bren?di;U z2Lx)(1*}1?th@NS8q}&tFG^7A`GzAz1I8-7^v2nps)v`OAcqal%6+5+-+z`)r^U^< zS?BS=5vGg>LgjrI5gWfOl!@3CEWOa;WH1N$HZ;PFp|``slx`M;(3nV1IZ!wv!EJm; zgBDlfW|XpD0hNUQ+21(~X?BP53j_KG2c*Pp&>~C`Dp1TM$%PvrAF;q>(4c^q2YkyT ziY%{0fwWw>LtPQg!i#*}a^SusisM?l`KStZA}9${7=%U;B618O#XO%wNQQYHl2R!3 zUfk|b8JZ4n4Wh9E*dT@=Ni>cVhTObtW^_hJ*&T39=#)ekC}r45#^dn@heA0)8X(Ui z-)>MDU_%|@kl=(a!c{5QuF9&QNl?zRTSi7_4Jiyrhoy;yny^EK6Np0|0ol$06sdqD zgwUeLxY?Hj@lWb3p4(bm0f%Qm;C0y)&-kJ--}6?LQ!%Z$&>iFBim7L`SHoPq9J;~e ziiKus8~+2bWUFNW diff --git a/client/resources/hardnested_tables/bitflip_0_1bf_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1bf_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..0136c6877eb28676395114bcf0f7be56a95e7348 GIT binary patch literal 16786 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

3K?F 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 diff --git a/client/resources/hardnested_tables/bitflip_0_1c3_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1c3_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..4c8bc7add1cb4680c9582529ca3d212ea9a11a48 GIT binary patch literal 22127 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 Oi@744C`eWki6Q_~$+DjS diff --git a/client/resources/hardnested_tables/bitflip_0_1c5_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1c5_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7a03cca135e07354574fd92a83184561d037d45d GIT binary patch literal 16936 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 Nsg(4d@$v0k{2y-&WUv4L diff --git a/client/resources/hardnested_tables/bitflip_0_1c9_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1c9_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..10be732e147a744f91994098b290e9dd8ce29854 GIT binary patch literal 24745 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 DUzjXq literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1cb_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1cb_states.bin.bz2 deleted file mode 100644 index e9caa94a63d622ff914f025d06bd0661b2da5c6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1466 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 V5z|-aT=!pYf=9USZ+PN{e*@A&I-URk literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1d0_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1d0_states.bin.bz2 deleted file mode 100644 index 26a43e303678add8ae61b14c78774bb6217abbba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1281 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

&(g^eaCfk1r>=zIHY#? zr<3aS5Yv&-Vmw40Axs72jsx50K0^5~)P(XQIs!n{h>qzy_!!r{67#tk*?e#+{84pf klk5XMrSih!IzC-~V5nT@Zd4He@N?;1?LK=!BqvGxKam@fzyJUM diff --git a/client/resources/hardnested_tables/bitflip_0_1d4_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1d4_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..5734c0aa7707869e7ae3ea88428529170b68553b GIT binary patch literal 31544 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 diff --git a/client/resources/hardnested_tables/bitflip_0_1dc_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1dc_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..0226241f927daecd4013a0f8f112b8b2f0fa2845 GIT binary patch literal 23829 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 Rt$bVji5Fpe<9q+P^S|@T%LV`d literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1e1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1e1_states.bin.bz2 deleted file mode 100644 index 7e4c4e5a876efa998dba9e5ddc0d52e073236520..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13795 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 IQ5QY&p9@bz%m4rY literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1e3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1e3_states.bin.bz2 deleted file mode 100644 index 887da78ed508beddae7bfe7f297d5781e24624b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2971 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1e5_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1e5_states.bin.bz2 deleted file mode 100644 index 43b2cee21b78aa1d46490d5965bce370d876b408..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6318 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 diff --git a/client/resources/hardnested_tables/bitflip_0_1e5_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1e5_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..6f2431a301e998115063217d20972b314e4e8daf GIT binary patch literal 55696 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 X!j$}`$&|9(hRiJrp`5&9@mK!<78&s0 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1e9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1e9_states.bin.bz2 deleted file mode 100644 index 64ab8f4cebd1c24d3f9e5bfa4061d15784f3e251..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3842 zcmXw+Yfu|kmd9~0vVmUn(1Y$NjWOr}v^sWoD^q2vY$rAb+t9;H54uw= z{Dra|KR^hOda*zcT2mD96I-CcLQJZ{PE0^j%Th~~WW09OytWoFcw$dx7H=|+pP5y* zcF%`X=fkO6x9cgj}?r%9>-23!F#{-kBH7Do7_6vE%IXT5S zyWZQrQvG>O`FlD4AD6R*EGOHOQ}DkzTeKEr)Bgn+wJ=LWjs)ccs5EB_r_~Z$mvXH6 z!=5c@PJYnzlOtEIqB+H~vC-o9w)01v=UW~h4(svv(unyjoS1{?(E=7|(jXB;0R4>- zu8j*t$P{a*m{0_t=E$i!zzn#G=ZJ%zYMf(PIFqSy=-?E7(ILx(Mu$Q;2LS%VR#+J0 zg+N}nlfUe#F-EQ1@Ti6q+5+T0YevWZ|UN63ko_Cb-6v zwohG-lGG4NqX|gXIopiPwy!PQRvqBN2g+$%s9$r@XW8(MAfE=1z>%^Y^&T!j52V#h zc!L&k+llp9Nx&s{?PVe~y|-35yZ1zfIXS3qHb~(Nz5veW?Va(iXRK<2M=r)daUNH% zuQt~=w0Vh{oYlrv#%!+O>vZ{c!6Dh>`9S5pN2=R^vy4R)h?tJo!X$Z;)!U zLvZ(1Q73O_k>Mk|$~5q-NeA;+d2HA6F?-NW9QC&fl~H4)j|s3o2v0Gh;I=dsN9-pX z35~gahit~)I00XLh~d(JB2-EYLjPsHod8UYfr0(fuV66;ni$9L?|=H%qgG z;2`F;%>{-EVqiaf&KXV|*5?B5Oeh>rs1pjS1X3_af{e#ku-uQ zBbFWu1&9efa>jIU*qiZ7x2E&gqM?v9yPRpH840B>t=qT>xZ%W~CF62htO zxgjM#nIKOWDT=;6-(wqp4hGNWu3Kibb#K&uq68<%=-mQfOE;)lJFbpq$)_+668I=l zH2A}v19xw(32S0(d0d$|Ab(Ny=4{pL{i>C7&g82DUmUl7cOdobIQ#tLx9*IujdkUF zz)Gv4f!J4G6Tjw*UB^PCm!d!t&}_zfM|SNw(5;-x~V%X_%>M@u0oa zBy=YullgbG5W@~HAAj9`wPh1NFFDvlyRo6v03K=5X~yDCaVZ9H?IDg2`SX0<2#6^1 zd`)>5XgU`La<@j%49;Ogam$oS1zE1xDOD*k&6Ic%#UY#pXwIMo@JOJY80e#nVLsHL z%at6Z0NFdY#{c9j{d&5qP1)0z_8RQr@dt*lr;}L-tWWdDHv0FJ6+sX*%A#w3)?%G= z2#Sjc%>~B)Mz8Ic5BB#DDwKPB_3&nw>#KdefpgzX=%q#fQoB=Y%G^O;^E>g+P7Ut1 z{ZPK}-;4eCp5wP-WlOKnDT^&Ybes@zs+-+s=XR1Uk zNB0;rcRn^g6sW2{t%|3f-2M&xqHFvUKeMq}`#OJf&p=DbU;D953y+f`!;Zz!G=AWw z1KnI(y(?e6JLsI;S@m0+E&X-GmK7Re()Z%i&5!tJe(8qiKNq1%C7afN+u~c^WS+6y zVtLJ%2giEPZQFK#*>89v9%w?uG&cGj#C_Je@UV*8{9vDQXJF#tNVDSX#E$Ouhc3q+ zPf_^5T8vw4J_}hdftlm^z26-lr5=A18=pE2En;1len=k*-05Qb|0^EUu#exWv zGQD48wtr}t?ElxloS*H`4Tx{biw0v$FDlOE6}}|XU`m%?k1?&KiVAMaX1JNOT~%WWm!CJUr(?P%?&bm>-#`F8jt&Q*>+Q z?@$9~X7z=tf%>%|dcAjaMXcKu=`Uf4vdcGiZb3~J|IzCysT?u>LrczK6P4&oW#h!P zyCq*LJ8)BjX)RsC;bOYRssq<&G~U#(2cJhSKiZjnSyNV+iOw1Xn^s}!r8#E#p~uIL z$sQ_n`|!Z3`$Wg0%qCi>_KQ;cdvH1^| z9~R7({xtH*&r~oy>dh>cbd)Z!6cfOFYpi^`MblKfXYFO9C~yfcC(vh5o;12JG;8<>VgG)TjhyBo6pW$rp?Eg^*PF1+XQIAS*Tg6rbjS-dBmoN z(H%APo~`SHIh&sRlTBIL>z&K4+<~@asvkSn@uWSz?e`Tgoh&&ybUP&@b9Pbodl~Uc4Kh)2rjreuM~7 zxHp^zuTqMGe!|H5Jk<%ShU24zzs(tEU0?%?<4DR(XmPG}O72l%`bMiUra<0xA3hP( z`5KpQMcpZ_{C(#;^*<{K{=D)Xdz5e5MHO$zK2H+cXU(}AktEWbKCqdh1;HG}OXdBi$yU+4PZA}0h zSh1~abd{{NY`5VfeLyfp^cq~l1 z89d9+kB!3c7|UG)IF_3mdn#+W;OyPUIvPx7OQtcwB76V>T)CCY_LM5#e!Jwzjq)w- z5EW>URz^-6gJ+KE{?OWW-?`dSf{HAYjAoB+CaZ?-gaM&Z5eQ&3Zpk`{tV}`XdMg;2 zz8g7o`Vi;qh}h3;VcQp~g+78iEO;Bth}@;iP709fEgHFDAe(t-D!kb&MIg2Mj)Ja<#9bgn6)Atk%cmp{YwO#3E>q3b%p9ML0CrZQTdRF zG$_oa%)M#8I_$#(-F%!y84%#feT0jlpDc-j-{iuqg$g{agRBV6vljzU z0M!~KkOyFv;+7bMEd8i{tj5uxpg;;RYuiEYLb_4_Lx@Ku^J~p2xx*l7^DfPA4>$$i zfH&Pf7M_oY z?w7z7DT#)qV9IE@;-qr7PL5svuEA){1xe&|o^Ln)tVQlj;x1U6GOouf3AyK|>eZfq35imGa^wGP$}?h#n|tCeqk-*{=o zt&vu(((AQ}Oi8OGHx|9BSb~|O7we^!QN1Ew<(J}qUip1oOn#QNsC7|S26hawfg-OtjSb*U=D*gLeEWLwguG@mzV z6CH#fB?axhHeHO~!u|8Knr7`~;Jm{(DV;ym}AF z@=?TQ0cVj`wGiCaXq9SXgw|^M+5BIk)xp++Wl=trpGvMUx^Y0RMIh^jDlX0CCTOj? zWXMmnD%c0KI@a0+z|rJLt|}~K&fAwks^0GvA%hmvSfo}!iQLS*FF_!gpdwkQJZ6}m zqDo~|BCqxz9yTg@QEJZcFtP#VCgi=BNqfpinypoyr;%vA72pD)jJFRDtH>pg-1-2t zSgR>*I_Y>a&sPzxs*gj4RBn+jcvJLhuNhcQghWsxcZY8nkb`uIe#dqgzJLJ{gdlM- zD?&z?c_>7Pu7QFKid%agYrUpTDhg?!7-FZYPV)=gI~C&j2wRdH(x=Fbh->Tw?z*2h zq9NV7px{OPS@{sU)n4U9P!+C_3%@JV37M^2AQ)Nu4_bA!0u3`ZFr&bU9wH5s=0h)# z@Gg;?;C1?2ti>IIk#NJS(4~fI20g;M75-LF@PQ!E?Ib5L)zCAm-UkK)dV@@rw=uuZ zWAx!ptmpeil*AsOO+|;iE~@!jt@Qgzv;XA)aAO_|B=iFT@blk;kq%y&v)#?|N`ZtIdjQ^iFfL;v_Ac(530iA)vHdt%!^gbj z)iSMGh3jzt-1WM2DK-yrQA2C}tqNTeD-qXy3gn~fwYupztt$FixlNZ;G%*A)-V`yb zUMB-R%%jjc{)|?cSGCF_`S7RF-;Ov$+fqq}XWH~8kio7+w7Cd@%&cX~9U`&DI}$|B z0hm_;+K8=6*&jO2S7}ol2i_O8$?nj3uPVK*R;#*MOnfu&EC#z)zfb8Qurl@4x^&$X zgdEoUMQlYSFyGMTml8fOs0I`~Hwa`PKXo1d?-e2J(&~UMx-=aVk>z6kaakOBnj?Q& zYzwo@)9N!&!LLXOM$ORdQ~i3VqDd(1L&Yr1#MWWWF5r$w%GRNl3mGQ8fdLKNQgC9N zYUEWLR*743Os?`wo@Qty0|90**V^xd(u|<$Tr>+|U zAja`FVX2zD%r{)EU;#7+G~b8*c=tgl7VpD&=uNK)yeE~CGe}e2Foj~Td#dVt0x36L2%{8TzOtXtlVrk0w;23 z3w!zLk+J_&MgT-J&M-sE=Bj|$)_w&r7t0$~E6BX5PFePv34xxZ)$`8^fe?X>aM6P} zrI&=8$AC4MuW)j9*VB%y79mX8=f+{Nz*mPlU3e7@$=WV|YZ?=dD11+xHTGJR?y=2S zETn4M-f4F%R2Z^X`-p0R5VQ*+8WIZj+S8L5+lhqxHm%m&iF2Ev2>A2FtU_ygadnDGAC`gRC!~^yaKDhuZ^`f)hv27JjxmS4Lh@08Q z?L}{v-X6IC3mtFi=~*35wQBQimghlV;D|0vD|SOvW^(>AH^C_ zwRu}uSHwCt6ZglR%6-uLz~|#0N>5Mm6>8QZSn}Hl0~#Uu!Gj{~=9zZA zeYOi&4*oqZEFSBd!-hup>6w}s#L*~l^D4{DiC>Ee%&IEq)g#S-3E@2UDmacL1nu>z z(Y~|6{5YVxm9XI;aJm)>SnK&FNiYjJ7Qp8Bh`q=_{&Y{fQYLe>Q^j<>zX{Ri+Q0zR zMdVu>nE*p0o<1&e`Zvgm+i4(msW|uxCrsr@yxQT`fgTZwPTCBIfB*tQj7|pu~VISRy7V5_p;@fV=I8QLhD4 zM3Kj;(^zso|JxAwC{$VmzJMI;MR+lm5WyZ~9WtFkZEu!QBYThwwL1GGrh;D|8EKKGL=Lt62E52}Vu#$}4nKM)oB@`++Ju*m=x>523qZ;4CL{B@Y? zCD``g26S5GmyU%ekZzSAq=~U-h-qbia7aJm$ZyvU=L*owtbIbZ<-c?LBT^kI3Zsv* zdA9*B+MfqdJ{36qVZFN6g>Lx3P5!3ZKz3@%MzR6JK6RQ_$E+oAXl9mn{sUjSUbvC& z;8T=3{j|u+R4@~R(JRZl7$`0}EeVpA-}(xLX?#?d&d2om@M#4Y_6ZlbmjF)nEkUfA zuNw}#%|OX4=jsKh0EnHBhnp~nyZ0HPANsWM1n2@89=17cKHY<4U&94bAKvu>oWwGB z!5?0^?W$#`>2y>;AbsPjx$srwO;wGEDg*K{QfR{$jl9)-JhEAXdLxcl>l5`dxbf9M~mm_PLzX`>d z$xY}vBRpRXq36&tB|4asSSK%(Ca9?2A|4pI6_qu$;vMclaPMO`U` zL3T@YjryUA{mLah(x4@8<^uZKCKYt74p;zssBwdu+#h@gt@kkJ@*ud%58a@ z@X1T$)#2LIEQB&0ynY0^Yl98^%9ihj3b!MvceYpME@UzChaNCBPhevg0MQw^TK0ya*inLH#K_|o3 z9RnCdwkl45uq&!P3iTr+A;GNbK(ZuJeJ*RfNdT)$Q?=d|y`n7B+r~w&+I$d#zm>o> z-M7Ce-_iF0!0#oUU}3_cO_=pI{L3Ilypc2npCVgIOiHn=9>n!n&`y$-u)HWHIlX}U zUn!gUb%CUyjuQrigzG{dG1KuWLN(bNlGuFb%7+tzq+|J9;uAe2*+fCMb_;~C4NOb@WV`5lwd@T>6AsYw@+;iVG**Q*L~NkN&Efz& z?2_cBp2F&4@40>icPDyy$N$kBgm)tsX1N$*;xvRg{zS+FK3SV51tA{uYos7B>QS)Y z=hOosjHEgw^#i=?4)cIoJ-YlW5&G@zvs zT3%#-%E!N9Fmxqn4ccwPi zqY(eRSV+C+Ld3>bv>K#{>G=i3i<*&%O8o)&Vt6t_2WZ5`2K1yBu^*y56XDs+YcB(d z_pu&v*Q4U=p*|^Xl-te!2P#5{2^7EY>JL=#RBk3-zset?Dk1Nn$+yvrsq3)4_lo#- zLGZoTAR7C@U{+9rXipYz!P(;r=V2g|ost@2uv4#8QIbleb?DH|mh0)w=@95lPUSL)JT~8B(XvS5{f_B7tJ(br#dKJNm4OgZmW>3vX7u9GRf|Dr9>%@K}W_{W; zR0N0<7qTEa=C`JcUeJ7UBq;*agI0};!S6Rrw9xNGFDnNb+K6mTbNfmVi2XpTSrTu? zcla1}6YWNYxi!Hk*;;)E+NjtfahooGifJMyUo$4|CdctEXd?Dc!fuGiF8UyrMTokX z!FAXa$O%Y-*KLyHiyU?Ar+ft*iB7la%tP>ZOQkRJBAxU@VfdDzn(A5Vvm zY*Lobma5ru)CU-_S{k!KirSg-z0~uMsK!Ajkf2zFZwZIR7p3-Lj zW?s%iRscv6<}Ug%)vsYTpMi4E!zl(5_|Q&~%+Wsa$=GV;WTf^DGE%Ig+eZQtmrr7& zG?My6eOt)OwGh-Oy<+n0a_&R-PC*Uw|0daQ;+$qrxA#IkFZ6zABi$Kj%D zFfi$SXVn@p2X9Du{8;Msh*%a~ir4~s&~-t9vnbNR&-Zc0aLw5e-d-Mv-k9*^iKcSX z1%Ah?km}2s(OBWM6mf!UyckV=q)pH`)+U4vk{>Hcew=|`k57J_$$))Gen3ak6#h^} zf)}jTr>c_@CA5Nfv;%seLPHtdN37FV8BeHoE}a9f;uGaRj5*;g=RPjMjJ_fFF>un` zn){$dp#i-`Ny=q*wnsP|VCgP5ms_n1do z4G^46cVH(o;0p_<9gYZy*~IvwZG)*C7U;aijJXeKY4+7IsZJCSxic>E@^LBM1|1>B1xZ(j z@fP^KC^LE$!F42V^zo8;^k|Z=HrEazi=2~2H3^~1L6&)o&>0S z?;2Se6du^j14L{&livZ=JH>%{u6L$9TS0o5@JQetkv5E)z$amQ5=3vZ34~tLRtZdO z03tiMFcb8+AaM*ykiEB@Jcz_d%gKYYxCuM@AgEUJKR$2Ii69p`{PEjPzC(SX*0nZx zw*|KOL@0jwRWRH`vhw1nI%ay!BicB0q`lR#l7O4x}K4Lec7PL!|{_kyvC(8e;PLwb;^Ou&INs$R#(Ux}U8B#Q1dghPvR8W|n8P}^rBJk~f zP{=QRQkN#tr@f(0%93A_9BRKLvJ!rYr$#nP(vu9B_ceL!C+E51oQe+W(*117&mtZA z!O!w3sYGd>BRNa%jMg9%Kij>VD4&z@)vc7}Tyy%^j^C-V29FZ&Vx|Lt??1key}n8F zE*ku~D`@DU2v?wFuMYW!U%H73MYmM(4j~m8BPAKX7dWrqt+*^XO`0clX(b7~HM3oH zTAfzT<(0dES8@+PfuCR)^a6haK%v1!J+5^l`aILS7TzT3U+GgHS4@9PUBSzO4vmRg zf%s?-UBSgqNmsw*))lo|>Gq+~X0(7hHm^RuQ~0arq)Q2^jQO)tL1kD)s4b4`8(ziT z9n{W9iN>jx?0e(zYCxjlH8vY+M14iBd*U8qSALtp-@RAVwoojC6K_Wo@paF_L6K0J z)<AvJX0Uaix`a1N$9C(4UBWb0-Yvy^8X$g-uEsG4yA{cNMVmN0RPUMbw${qtxqZU% z@rAQFztR)*55)?-v94a<^kP58JQ^qL|2;}K3!S(Vd4cBg?0!uXrIoXJQfQ=eXw(AI z6_KFjjE-n$E~vgu)Gl3^|$y;!~1g|~-3Hvx=deS#mJwD{8LxWJFx7Oz= zDf8j(1Z|7Gn3JGD@3JcUxeml!xBLszEWTO|H8HSU=*LG%d44sNcilqX=Uw;E8j817 zOLnvAv!r2YJFW7t-hl0;pQjJy@!bZEr-`-HrVeHznuWA_42Bf!H_K0I?x9=A9C3

pwY@z`Kz?La@t6@5Is%1bqkdl1_()rvk~0m zzKKGn4zVA1f{zpe>9qP`wZC;K@94POEFW#gw8+z39?tJB3@#A~|Aa{HZYams?DOQ(<(mrtD8*lk0+dX8Tx&@@IM|3_4Mv zSA2OIkDh>Rcq9x$wC5vXc;bO>VHZD~u1lxCY5ah}>R;@aqywcLK?{$55hI%=Bl<1b z7LN2Pp>h@P$fI94vY^Q~XQ1H|9sJ@<#)AaGJWCNC`;rcieJS@C)nQ|$7c)HeB|P?J zg4oq3ND7aA+3m?IHg9ilHYYsx<;L*XmtcPo9{W;7j1nIEvcvUy&LnNISm+TR`?4TB z_9Z;_#r465$G&ug$G%9Wj0|3Q?8_S-fC`U&36Fi58XPSZ9{cj56x|Zxu`dLW@9{XZBGBZ5( zB|P?phRN{Qmvo+ng7Dav@Yt8|*ca)*2#0b{SCz>4deF@>Q fFC0t~9{V!luSfs?IUV~l7@Rbt`1#q+e<}Sh89nOL literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1eb_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1eb_states.bin.bz2 deleted file mode 100644 index d76993719f09a579fb5c6d66f5c959d14c725613..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1928 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 V?Hf2c_tx-~9S17;Y2oIT{{m1QFI@lt literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1ed_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1ed_states.bin.bz2 deleted file mode 100644 index 8574c08f7f7377b2817d99a4b2eab74d1bd2793f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 724 zcmV;_0xSJOT4*^jL0KkKSxfJE=VpHfOeg(|PM68xTTnZ(LuoI-jGDa5Wb@k!93#K~DQ zr(%~GSbZ1tUqp6Y-f4>rrc%i~l6=ZcrGz;A5q(z&6kJ9|S>?wG>H3|M7WPU@#&lCvf~7ozk-vUwn4UCdp~e2(GZ zUxUozuT|~`6gY?SaX6Xo7wAK|JD4zV>`1)Cqa{pPEbf^nnpYVyD~PxzM8X+mm1JC2 zF^Pq6vS3*pGBB{NI5Kc?V}pspJ;l;=j9|kPgieA}780k>E`)mp@e9~L(EQ9e50PI| zb|b-6cqMoj0^n28Rwh-9p@Rj63^I{ABEQ&PqAm(L0(Sy*_p(^U`3%9txM7mW$%hh7%^h8 z{P+}9eXx)R-lIsxVt|wFia{p{SW!`c`-%aHg%rhNr5LOVs>Tpef~-o!m`h<*YKX;y z6V-R7AV8R$;j2M-R5rYE<{}*yaI8cyF G?|J0XGCb4( diff --git a/client/resources/hardnested_tables/bitflip_0_1ed_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1ed_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7f18cb77d521babc89861c2657abaddad18445e3 GIT binary patch literal 15310 zcmeHOU2IfE6h7N_+fv(mDweiX&_#igQ0PW}gb?T^*vJD&Lx2c|qzMLVK#E4I5rM0y zm?#29j3!iS3~3@Z<-sUIl)e}+gxF~O4H}}Li3F&EJfP|EJ9B^bZg)%BShXd0AG&jA z=boAQ=A7@GGc(P*ZBga@8$LWdhiLDCOT8p=u}&h?#5RiZOzp+GIF;~0nuF54G>sEf zz?C!#KhI#wk@HOXXeXUcdx>z2I++Tk2JH_NOvYa-+|OM!0i{NYvYq=qQ&gl?U)&6F zw{lx_6q8l2Z%Ky=?PV%cq4FcgEr#T^+z_c|iY?P$Pg^!IRf?QoySRcWZ$Brv&eVwP zfF$Yi-Zw%fFcnFhsn|Tpx27NY2IAxZ(^QeMT1@}+a6}>K;aEAwP$I?LSW(M1%X)Xt zOPmJi5(9TW7x7aEX4)2=!c;D@*d3P0E*(IFz6r>*yB@7@%iil5zCUG3xYaXLrnOtK z5P5`Yo%h;SfPX~0sNt^7wTcXel8DUpK*zu>ZF@IUi_8j0+nR*vBc_`a7YrV_RLMlE zkT?;EqPJB#;^hIbj+>bmpc6ZSB`kXk^3lkk(T;K*VB5qrW)V}VS=u69niv+zAPXSv zk_$Qwz@S?6n_F){AHymMppQkt=$OKHJEjHs=kzT+R_Sz9LqxVP&BJJ^Mt?eKbi@Nr z4(r4*sp;}^=2@$lpkjzWDQK6Yyk^m~UCO838S-E#$u58P!5;o%8V!sb05$+>oqn^f z7eK=z`JWaAc{9^Om_($N=^n{fLu<|`)qhK#hY3Kw0Ww*eRw`nOp;=?v55bB;rl#OC z${7BkuN{>r*M({H4Z>;IiNT&>>Mmfi`@AahK2uxYO6XI1!@i9MdK%jm<(>OrwTg8TChp#y6U(E5* z?CC@U>I~iVYZjAM6*myu)%9wq^pJ{v3AXSH*y4mrF;tyvsM^tX-bqny>rl1F8Wq~P zC2Il}v{CgCX6RBYI1Yml0R%V8S6m2gr`TaW1(%VC)F)90!X?|-kilSB5aeb@vwNAA zn893OTB;MdPh`6pw;{B=x2@7BhVBz6=57d7WONb*tf><5+9Xlq=~bp#D)|dX8?-2J z4rOLxUGg`T0)1Mb?kPndKX8$h&#^!m97-mxxWe|0N(xJ>9RgU2mA+HtITdx8Y2{~* zOiPE`)W;0B)QXUG*8H6TcOkd1J@ve^GR`p5{yyu@P#y)tr~T?w zf~i5E-H~%lBem{frY`q4eC=j?t^(7RtV))~1q>!xn_7C&=sW5VPrQ4S=}AxZ_oS$P z+@4~Bh_o2x+7urq9(0&ztS;zA)f}r4K}rtTs_-oAV{u@8Vc)s1j;>->K<2qC4IZ#I zAsnjaozW7u^H=FIjaPC21VtjFxJS*YvIB6oxC=Ab{&S-IfL{NA7MSP`3XI9cRi|dj zF?aRgU8bx0H~|{K9bz1i$uf)^%EF7bz>5Owq2NV()g+ssLI{NS5eFFCxhEn^zYQxmmf=_Qjv+I~<%bRS^7P$a3(%{&oNJ)CD2chb22nU<&>#fQ( zDvJdKm%Ho)@|@Y*Btr9rvv2(ROPNC0|$O!Zy;XH2P5t9f%QKAlRb}^ zIvVFG4^d@vKSAKrS!vOUpp*pDnoQj}bp=@o_T;pB+<#dyT)A5F0ei)KQ)~1Dq-K!a z;U=ylyu@`p{692G6PiN!{}HbL|I%cw&_2yt?dW3Y3n&`l4m2;2vHq$JAUo%b$D&A7 z_c7EEc5z(8iLR0Jjc-7`$m1G$!#(-BCqEDKkjh&Ck!&*8jX?jXLZ`84eBG1*9J1!G z{rI5k#~pX)YhtTgANsx8N=#HuJBcz(Vw&!ts8$8p4Q6a8eVgH6_0*s?s~>99g$h&N zq`Ib+!j#v8Busge1U0fxu{20RY?wt#i=cjxGT{{iWx@%>a!%eMnf7h}StfjaZgP3l=6q+L7E=uZ z;mA*1sbO?(>oumvCT)x%Oa_D1KFNc$l4bO5NCdqKCIXuhF_|I+OS+1us?)PgAra<_NzvK0$zX5ABfl>ef literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1ef_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1ef_states.bin.bz2 deleted file mode 100644 index 7a9012f472da88765c2e52c0bacc57dbcd68cd7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 414 zcmV;P0b%|^T4*^jL0KkKSyqOJvj7KmfB)zZ2si*32oQh}AP@pD2mk;PK^0K|5kW){ zKp2Do2w1=Z+yDRr01X-%FpQcF8fXkK0MVhN2+5$)rhvl$4H_CSjG7G^XbcKUkrFdg z6CtC`Bo9+*Hm8*I3aiMV8B(XiD!g*+KU28q9p_=xOb(}b;Olf<=gs$n^B=hN2Wk2f zgX-YKxKYWBnN^kyCn0u~F$`76Uc!3}UgCS-C-nar&3(?}gShc{F0jAt-;k#!kK%`XKU$%@7uLgb~`KAe0@(O~i%2MeJ-PKP1l@IG%)=CJEEHEHKKNq{y{Z9++G#77GPfSXp8# z3=w5mkyyw^7zP;a!6+1%)EK?=9~Av zeW`69XgM+VaB@4*vBZKP;Ugi$^3Gp9J;kcTM1PdGC z5rVjvI+>csnd*f&&zKy;Bc|Xp!QG8*oNBx#wMIr|=Sz;&FjH8FM@+S^IJB{iquk0A zQ8Rv;bLHbXrak!i%G9fR)mM`gb{iA2a@7i(7Uy(${0Ik4mr{vMZ4z6VuC^J*Vs}aF ztT~Qg`|$vrmmFpaiO-nQux5rXx_1H0;Px=dIIrGxduf6*>nYQcQ2v zett8(Q;k8U7V8e@IpM#_lmPxpo|$!C8QWo|xJCVtYs>BcQ-ITJiK~dxkc+8#+_iY% zhD4J%&2-nYjAQejyra9+kQAD>%bvN;=KSxR8EH!L8^MYpAb;&LNsa>6l%wsIu)KScodf8D$k2!Xry|fv!CgKh%!CN zI1)kWncb&T@Mpr0+z|XL56lrzFPKvH*_C}7QOPSlg=jLPviB)g2n)h;6(DLqpw;Ue z$Zl8}IG4`i?Uv17lF6`(V?Hw(X0~#LXX_rr8{NJepgB|E>( z)Q5FCV0RzvP6x`O3O37xwcr8fIy}4{MXh!2Xka?yFruF6tn6Mg4$z=;tBLRd*ICQK zBCoodfiLjNLPx!pDE0=9O6^embsvxf{tAI)qo1anr7kpo9+bc8)Q7l zgxaT)k3|fad?{?N(0t4*RJhfn`IuWzt*3FCj~S7~#i{%+k<7(b^M`D+zi;Ias4mH2 z@G=LBk>%BUK*=l*9pG21c?~$}uzaDe8K!8|1Bz8h_qvcBXL>Ia{YP0lOJ+^FoXfOi zUCq%y5XoJla~!kKv`JZR{`S-ul>;Y|OLnU4yaL>JC%?x>On j&Bs>2$8_PWN>J^>OkFs0;iSq9iAL30giqJrKg<6BdfMkd literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1f0_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1f0_states.bin.bz2 deleted file mode 100644 index 058cbfd8224ddb270471570d8f18cc296e763c80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 511 zcmZ>Y%CIzaj8qGbeDUz*TSkuqUs7-0T*1)6z{$WE>cDW2frEiT;sUE30|;m^NMR6M zUID>b^L*XrUFw-P`5UM9YYq>;1sn7Z7Kk&gEKp_%Y?R?mBzK9XZFw zPvQ-S4mXxF+BwEG%5crlXV@U}fQOmofDKE6`wDG_7tBlvKr^+OxnhrREkC^AFv}a! zrai6yxcL^^G;fG)Z1^DXh3SQ8>l+@u!#7I!8f_206Te`8;b8M8gAam#I5vnezOi-Y zZ+uevMr_3fgVoGj1_pLa_7mC<#JX7M@G%|QP!Pl2P@unHPh;Q}fdsELtOE=i0YL*%A4cbIngt@=4Iu@=jGhs~jhY3XdR#r? vOoyhkbh8}NY;4uhIv5eg6`{tMnAn==&DxNVAjbYr?@3p|LdA=RFW&+Hc!0T_ diff --git a/client/resources/hardnested_tables/bitflip_0_1f0_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1f0_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..63b4270d1f5b05949c19c8dab073e076f5f22dff GIT binary patch literal 17155 zcmeHO-Afcv6hFI;YstFDAZlHOT@=)czUZ-t=}R|735*gcijclkh!A>_Z3wc2UVZkZ zpqE~vh%jQFe31GZ3bII|*dPg_I{ogQ-F3IM+AJaBTyU>5bLZUieSdT2j?>%|AH47| zyO-#xKl6!%r$l5*LKNpZil(Thp4cUvyXQExMI=tqC{>RVd(_W9?M6Ss6c)+EJD!ZA{M2*h#`*oOVPOaIu-a@LQ%B=-y{qh3*a0T9F}33Wstfm^EuD zcy;Ye5s#l!0{sT2Cb?v9JIxd|qs@4)VF7a-v1i83Os{ei$sWuECL>AqA|Ql$FdH}# z@$$3y&M6SQ$W%KRNW&C21JFKLKIfNaGs7XHoGiO_tx$y<^Bs_^W~x7m!+nO914XQ7 ze+{G$<1Zp|mHn_0-oIgm*2OU;H#OZ8Jl*Gi{PSrs3<*S_^waP#9G71xL>U9)e{RO!UmEQ>FTShv?5Bb980t~y}6?o!$xE0m#RCK$NLa$d=`+(9+0HP7Ba zgz1>fGMz0Ow7Q&Ig27(EfuNVLF@d!sJ;~h)3q*~v;9Eh1VGtBXuR-(#e%t`=21en> zt?ZuL$bO<8(E_7}+Yk_a&_E}8kOA>=ILQG1gHJj)10s@UuNLQQY^}3asnpTO3V!O0 zK-m#Y)rG!97&n^0sl&L`@w<*`yxEU==vE!5*hSA2Sv$jCy2ZHQai(6d&;{{A@X6lu zmAj!oSg9M%S)#B`2ntOG%6$ypPe6>}yjmo~?!j<*HoIZMw$e1F`9c1X{E&jFTYhNj zq_`8Ia$7HF(kvFL?^+?v+QnFQ<#Q#a z5s4iokvOqLBreA~iYpXXD6UXkp}4|6xF8|xbH^V&cPOqlIqB(0YYI<7is1(CXffe$aY_)+^v_TCdQ0h1M&yUZM30tygHhB8R^I R?|Q|;AuA@KP2QcJ{RS{iO9%h} literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1f4_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1f4_states.bin.bz2 deleted file mode 100644 index 69262a53fdb8a13e507af155ae5d0056251e95b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3035 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1fc_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1fc_states.bin.bz2 deleted file mode 100644 index c3d5507871b8e41bbb6254aa53afcc2c63c3235b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1127 zcmXxjUrZBs0KoBs{-f=MuK#~ofX;Ok+Fsyy%N{yVRG?)*(=8Utxd`+QP3FteC?ibf z*8fP0ofD9I&>;9H2qa!jmejB;y`u-1_`nC7g4ZE} z^toN?hX{gRyvBW!MT)NDz(pg7qOG~HYW%`+ulWT}K?;HRh@Zj`gsK#}Y% zH@^E%m3-Ubkwi2#T8&rptK=}HdmJuMywG3!%oF`3R&{=Y3x$`oPr!q??cX3rUKw6* zU^j+uNCqS z8K3Gh`^F?XG>z?_a2`Znp3|Qj(5T|nc#8@V6I%OoK~=Eb{j5m72zF_PJ#>&mf=phs`09GpiT;UWZ@%8R!GIDx9zKo zHPNN=Te4Zm6-;M_CNK23Dz{XP8E2u!$a=J~ls>7P$!EHywMAULezPK*Co)7&`)dC9 zEvwMu(Hd$mt+?vocR%uf&I|&tN)#3N-G*49_v3oIE(a@encluVN4HFvVg^m2zg1^; zP?PNWVYz-Y!N*mhp`Ui7rN+}s(LWr$zg?AdF(Spj%KXfueXS}Q=n8pOg8A15qo|@~ zg9+qaxGA5%4eM3w2UF(k5ZXKK2&^b8R+{_kY9ccgLf?D)lc8?;CQNVlhP^`dYr7({ ztsksOc<tGXflWw7t(9q4OjWHm+emCsBe~ zXuX!RV7fG10Fd!#(`1kz!R#PSk~lGDlvn2=WcyIyRVN7EXARmlw>7CC978(|7Ci;* z29bix5)2JzIiijC>dA-*&@|v9fPrLOo*?GMCLy(|e8QX6qwYQtdMpXpkvK+>qZZtP z5fE)Ex#X1=%;8~boW}s}ZbwmT(kR)KLa=D< z68qmR=hdd2>z&bhvxbcr>?nBJmQqd+G?kgBHJpE(4H1jVs7F82E>9RR@7+SCZGd!i Vrw}$soZMTyY2~89%e!Cr{{uNrzNY{H diff --git a/client/resources/hardnested_tables/bitflip_0_1fc_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_1fc_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..3fd553268765df8b2b7a61e6d22b0b6caa1857be GIT binary patch literal 18407 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 N1v(9kpXaZ)+&Az7G@$?h literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_225_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_225_states.bin.bz2 deleted file mode 100644 index 15195d21385b0eede73fd2ebfdf61354647a4812..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12468 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 GUjI)zux=Cp diff --git a/client/resources/hardnested_tables/bitflip_0_225_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_225_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a5259b6246dee7b88830b44cd7b0da33f3ee17f4 GIT binary patch literal 41275 zcmeHQO>A7(dHwF2``)~nxpVIuj)ofkh%=NednEJcNg{=DOw%uNinxhV6Kxj;TA;IF z1GQBvp_U5=rHSiC3!x|)Ewa!eD8@ihc##DcS-86gbdyyfpc^fxplS$kKr)elva&SO zb00}jk|mi+Q6K?63F7;^@BVz>`OZ04q(<`S_v*`+{q zee$Z|d!z-KROA~gR>YwseM6X(M!Y&1>mA2kZ@jURh*#17DZQ05B>$q(PlPO<&l#J0 z!)$v+ow~lxnnW~RD?#G*{$^j&?=Nij+lwKch!^Wrh$t76f0G&uR^(5#7h5DSjU^02 zIr-02TUevnLH{!%vqZzCi2Uo6zd_*|$#KfJs9-5i!e62=CQSlw1)4Ag3bCRyx+xHz zvB|+^hy1Qk9Ty#?6QQke(@W@t?s+EmWTS1pNWJG~JW}Y8L;w=uQ*L4fy)|=6cLg53 ziN%Y?3dv7!vW%4-Ll^Tu+W6uZn-?~Ju^CdSax0|9azsRbNM4J)&TdK!)k*$5e{^Hh zBT_^i3ey15tPT{(kOCwuq1+{s=P0CNxP*XXE~4b6)VS57KwiypjxwpIv4UK%hKPA16Bn$9 zM?>Bm>9k-dS3vN_=$gAJFSTxOv}Srh#=E3%>xd>!VYv~>CCYUKMn5DYA4sDZGY@ir zVVXl!jv!a%l$0RVB>KJ(b;_kQzp=4-h~_pnHqHmWb&+s$wxok|0!2*x%{zC{US-70Byk=SpIPgQ^fcZXW~q^N2y&q(RwFeTg{RfO2)r8>0jZej;-3(M$b>#LMPl#k`FdX79Hb%>599 zWd(Qk^5EhiqUJ@U56iBsWOY}S*VRrW3aQHP6kicBxMnKtCUQtJF%qNLvM*x{roH^9 zWB^UTP4!4NsoJhni26(-OtF9%R4Agumv;u0f*P0Ya1r^J33{#JRY6VMOotW9Ln7Jr z@DepHrdVD=0H;{QaavvTKmdqTxwi5xVA}&4kQI9V2@_lBVsDLSwAcQn~B9;O}Cr>@e1twH|H;i>NN0pr>4| z82cv4*9KzwiwpR@ypH4g^7@7Kh>nO(Q2;}o-MXpngR3WjeJtlC6_LVdkup8<-rc;l zxlBqSpbE&r6jZl_+QnH3I2rSkQe8jK!skI2P zF?O<|;-ayIT4O~bok)*zc`y1d>5e}Ya*j0UF8UXfCe9ZDV9X{!q*2GMOqVYCg^nWwUjpTwO;*QJ2O}%qWj^$GugR?My>bP$`g`Oei~1 zUry=JI)+aue`J{^@B#{^5qndzws{@Ugx-;nD9Df|-Kcg3sXVOKUT$2bctN-3OfS}G za}-izXb$yo@+`7&+`RJ|LW35co-j03YQ!|PFcU-IaI=7#!r`QDP2o_=dcr&4*s!nd zQ4N`**6-q=sfBy5>t-IqLzOco8*Z#q_-*h~5aq)(?`j6K_W@1h3R)y)Oz$=1P8!uY zp*z6NRLR(5G>gd}142rRPC`({L&{FMn^VJhab~B8Tf?YejQ+N60%WbKxlyi_+@xC{ zHbt0!Qe{CzyVq~TPyt0UDI=iST0o!ONM9G-x z3SqWggcn0B@6ab$&_kPGX!K;Eb4GU~L+uH~xILM-6-8}hD+SYQS3H-G(QjvU*ad@Q zR1?2pOs5KTFM?vme{AeG{tN@1X{=lLGdffO*aw5brt2G^ISvdBE`ospiaI>q@H}!o zj&p!z^sjLIOWmv>mt(=XDCo?Dod|A&_ zG1lx3vv&m$GmHU;k%*Bo^!pb2{~JskldQjEwoXF2*Cf-Vm7D>xEeDkzFmhcCy^0oIRbX zbH}N(+QRxsmwKmF4@{Y*1Nd|+kFr63g;?Kt`SwgmV;CA2wM>G-O54)Qt=87N;P~9p z+cOUAp-=eFTJ>-g4@6~-(Cx^9DlHYq9^L3Wa*_dHN zONjE;ezNbNuia$-+K1Ww?)Lh)-&ptPHPMM+EngX6O9iM@{p+WlIxVl$+!K~#$XO0p zSwpXsvUFoH&T(KB0%s2$huQk3TQP!j{w>`>^Yf+BXU^$@KvJp5<)h<3*+dNgK=`&X{T*x zFs3=oOP9Kj!8j}6eHg<-Tm@r6i;3vjdw+ptY%uXT4*3+nnmqj~1n?5Z&Y?tQ2kpF)iZ)p3DruU5po^;3DvWgA@QHapB(k0k6sr_5T+T26F-(|jPa7JIE{ z6Bx4=vlg?~fW6l4_d$7w$U8*dAwF9#_n$oN@7&mHvDey1$dhO6wb*O1*J7`=`;Fld z_FC+<*lRthl25y4uf^X(d>SsEeUH5sdoA`_?6ufy?f!%t|KtPzfve#m-#a@fO7JDuBTKrR{2N2AMP1tL(*Lnzs1D&wfVz0$si@g?mE%sXMwGJei zyN%duvDbPLybK2Hwb*O1*J7{5UW>gJd#xAIPWD>twO#}-?6vqaAAU1GMTh@I5C4mv zXEPb^5P65lJ4D_g@(z)Ah`d95woZQa3GWbjhxk=gJns&BE%sXMwb*O1*J7{5Uh8>E z`Q$V9TI{u+#KiNj*=w=aVz0$si@g?mE%sW^*UHDAve#m-^*AEF?uxw@doA`_?6ufy zvDad+^>u3b=yUd3?6n@n!`Gj)*J7{5UW>gJdoA`_?6tmLFZWxp*J7`=kA{PsvDad+ z#a@fO7JDuBTI{tBqL_Pa*lV%Z+QY)Zj_kGAYq8g2uf<-Ay%u||gK6eYEB0FKwO#}- z{7E(ZNj3aQHK>?h8VWZIT`g$}4c%KP(^cip@c&FvIBjS&Ha3_vc4Qvc$BZ5Qz$D_B zNod||{ZJW_#-#lzZ66fZa>jn7j4jQW-WA_;1~qN3C@YP=N zSL@7L%v#h2*6M9T$!;v}8tUwyZr{=LzOjRvv3IALwV1Vjt63{pqP<`L{pWxCpZ^PA CoB>Gy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_227_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_227_states.bin.bz2 deleted file mode 100644 index 18a6d49871207a91671b9bbecd09e0a98f45fb6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 zcmZ`*TWl2989tY}cy~s#fwgx>XuWG%umP{uClwDHpb&6$0gAMf11sZ zGaAjD(VTzI|9#*8{j>j9r(Suv>-ENCum1*V2o+yG`}M~9jSp^A7Onrh(PeKBA>92E za*+@hf^8}Ef5$7=8c|dosDMJ}_kIC{6RxJ1Effl5FnD|E&g+xfGsrL6j|C(cl znRxE+gqC}G05NAu-@C>|-g0vl(VvIQ$ zvXNX5InP~#67WOo!3#0oRc=DCf63$>4gStbLWkpswahrdUl30lSUx5}G6#9rdUo#H z$dV(axK}*+r6U&O1-D)%NMKv&1$qvPX6`QL2QgP8ANK~Ox9t{bF6LvpfLj#te2n}s z>%~#l!d@JoDW6<2=qg!^=SFBLzKFSl1$=^~N+cQV;pIJT=-;J;R5{KEmxVa5t)=B(YdQ*QlQ?LIyWsP-#$d1%Xv+8Et-w z7A-NYb)HH=g3M4fh8NIeZh$vqk+;Y-4N9Tc*3rA#)ojh0{QjJ{2Yggd7QN8wIhca%K-1>@!Vxf_#hR9 zI>`r7kkB@!SVFrq!4H(ux>#@M2+lOL!wQ9+^LRc4<~OvM6s;6<*QOnOE>Am3 z0U_qG?As``w8I8wTKs8o$#!GYv7u>dw#1{ zHS|`^cWYH{23Zxb508-N=sD*3RA7FQM0^OrBx{K8^(zE1cj&?p3+TKBee3;RDMUB3{ckbk5ARp&7z|p^ND-^pI=1a8p*IVw?)x&nJk;g?<{sSJkb}lYK<2|)f(`X@zhHgR0V2I zxmz9?+A_tJ@KajaCxvp63=D_L899V2sZ(ue9KD61PtHdgc>jWdA^FD>|7sXfWuAe% zO5g}C3gE}^VuT&fm8??JOgy)blJ^arDQfVN+Au0P;tpAp>-daP!kLCqbE-`-{R6u4 zC7p|-j}h;Zl_azgK8~MGRLP5C|LBf2EK?O*-^j5{aF*xIxzMT-+ybteGxY>mOTn#M z)@7eqofr>>b>J-xthr+57*&8jn=S9EnqL|ELkdkI8xGv~*Lb7YQ60mNtV+0Q;(3SM zp`z8ipA1^f4OF%6TY)74rK}NJjCic6khXlqvaHlSnXmn5(l_)c2KL-7Qo!GKbYB40V`fKYXed<4D*;Ks1hx4&ERe3ZaX32)R{ z+9E1m&wW?9-HhY|W%ZIgx@4fL$rS<0vPTr$`~bx8K?Fxe2>g}z1rS#?9>q$bJg>YW zugh1<2@Q5YFIM-G+2LE5zXond{DBlK;=3_jHeTl}LH7VpthIZ1$N;g2#v|;eyWDZqCB~w($Oow8)1Y1VMssD%5oy zTn_Obq5Mvn`q3bKF@PZ{2ae~KHa)E#gQpE^SxeQX&l(MF05rEw#QC^XE$uzQ2l{zE1bbMVCzY8wR1DJMp|Nwt_A&jS*Uz%ytKOz;^0t0V z+)zvif45+J3I<`jmMPi3MEIc+C3{v3y${}1kk+2YaMY_U*r-qgA7%)2!2wbmFxNFq zEWz9)fNz(3Ydw|r5WZOo3C^hkRP|L$U0jMdch%b(_;ui^j$CHxFhn-uzx#Ri@YLqt G%zpu4Rqjmy diff --git a/client/resources/hardnested_tables/bitflip_0_227_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_227_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08c31153365ebdaf62319aaec612c7c2448f20a8 GIT binary patch literal 26933 zcmeH~-)|gO701t=Upu=qbI%@s`XOqQtX_Pwc&;}?J6IYbVs7bX&JOnkN zE7AuGNExIGDuK}Qg7U@|gj6+=@C%|yAnhN3kYCWI5|aG@5-*fZLo`*>_VOJ&DV?Dp zK!A8SE7>z==l(e7d(P+FS!a4>{0r@$Pk)iS#6l5Q#fsa>x;k}VMGmZfi6 zxSQafRYi!zFIqLdnSC|Hzjr>KxgIpt)BV)+w+uqA()3hXr(-Fk8E+W)HP_$jQMsCl z)GT)>Bnz9l+$0-U2cgbma6-qqs{$r(394MtJ-0%Rj%|E#GV`&Pl5>x)E3AJPC*DVx zeDftHcQu>qu5r(^;9bOt1tq=Ha4Uf9@yOPPX>7~M+}fvGAvWA!GfgVNmzaB0vWC?} z_P9es)+oWJviCA^i^`B#`L(n=s<_8<+*aefSlLkP~@P`|=GhjBlTnM<6w4R}Aot5ljYT?fx?_!Bzku#|fM z8L<%3uwJwDWoYev0s$@Jda#-*Xc=VjgpXD@sVI0FjFg+?Z;-zu^3iCM!tGFRBlkU; ztU+53A&tVbWoUw^6ots&Fh8d-^$5dA9VQJSyHyVAf21I7 zHH;~2Qn*SHsw7qoDt?`? zWvR5eC+r2jH4zdt364Nctz%SEMXbLNBVH4M)o;{GI)&th(*7KXddV86e>);iu-9S_jTOYYlbGTa&qDvh8pu4Q{9+v zLE$SrV65=4?l$;iq;;pkt;KyDW8w3>{hX(`%9zFVVCLSek1lMK}`j1{+@ zo=0h;s&_TIfneV_m~Q#Bua8bm{+QdOfc&8}p@aSY;56phRze8W_vkX&1J|1+>v%R4 z#j|$-Ee1YMpcj4W5GQ-rxmSX^bYBh2VHYQ&U!yL`?OIVQD?-oDh<7$Dl@*ht?%hha zUWdc>ooeJbh=OZ&*v1x4ghU;^-2x&PEHop>%~&~Ivd}1Y8nc(s4kd25)1J5WXpmUp zhKg3Pfp;>zX1NI5&MNN>-OdGx8H zT1jpv@!!6ni`^-NJ8Qhnw8sp%zF6j#hi1Jn!<~x($2#J{$bC9~2tpn@W(=KsVi%ou zc|TVxX8^$+CmlFh-(3$*?&cKcO>TY#kS>qwCS-gO8951>Y-1L8Eo*+pWaMe1oZlUAOpv4OLhHy zfHS?_;djv@mYK{4VBNd)U%{H`O?Yt;J#%rmg8EJV%(T8&)0^P4f``!meS9+A@-_M+ zy>a{th;D3)sAM8oc1(+Tn%F5eV3XbhCnpAhPo|ilaji z5k%g5O_WpQZ{OAg5jjQVMN3|^WukO?y;j{L{5AOX7OMFS? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_22d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_22d_states.bin.bz2 deleted file mode 100644 index fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4981 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 diff --git a/client/resources/hardnested_tables/bitflip_0_22d_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_22d_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b315cfd6097ff70103efe6f78b2789a1d8e17d90 GIT binary patch literal 29127 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 diff --git a/client/resources/hardnested_tables/bitflip_0_22f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_22f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c7380444ac75b1e664e239b7bc16c474037613bd GIT binary patch literal 18288 zcmeI4PiP!<6vy9hW@odTo&9|$T@tc?lAUa7jizZ9nqtsMgGID0Eh&aZsnIQ{6jY2N zc+l1Xizfr=$zH@%yjk=jh(T$3RS&uKB;=sSLV_(*wDsqkO`2cZK`0XHBeP!0+W0H1Z(Y>LY1ad#cZ*Gs~a@zuD{o14 zeo_EA{lyPy)Wqae7y#;Q`1#1G#|w)1)a!hruQ-$im8{gfZ%BWsIMNbMdc%6vML;L8 z?rA1+2u-KROFp6u=R_~C&9t%;%;KWIkoA)kvqzI?^vOK`@gKD-J_;pW?%fNrH3D@0bc2b8*_T47t~orP;fyFGlZ~G0{P!z${DH0k;BytIC3|KkN5;* zdJ>o|&0wX%unhJ0V7~M^rnt~ib)p`t#HTSw(QGJu?(xRKDsJuKDs*sGoyNRVk6S~# zH9e%Mlf8PN!UfC`G4sA8g$W%!%o#tyYX`StWsi^J<|FfXYajEf81pV@oB>sMOR$91 z;Q-XV1gbUp^<_QCh3R8%VLKLjy(`h<+WrzNoP%lW z24UzS8u&r462bv94r=kXKN4~p%dL=WF#`gF+eq7(0np(Pbm%c&D(a!vuvqLuRKAi_ z^lQDMb!~(*%VW*wP0X{*6?XOH4o-oEWdxE!ExPc zV7YO)8gtvo>`dB*hp;?ekCz8$K|7PA-G0vY{Ox`b)jnpaapwv9xT@`DaT+%}Odrl> zS<;cJ{d=!iY{xvhJ#^Xt*8d;D&|e2cDWa77Xf2`?=_&U&ghVN#6j6$i&nesZ!B%>T z^c3kS(o?qc%d+$o=_%4vq^C$vXbUc@D8Y%CIzaj8qGb{2#f!mZ4-zEaMdh76t|u76umv4h9B>1B`b{7!=r87!LRbHLEpx zdP=2y@Cub+)cDM@xItA)H7I;u!;}J+#SC610m^%X`kMlkmupRo6m(MwR|(@X)i~+4 zs4vu2zA3O}@r5b1LQ~z7R!kG>QP6kw3T_bU(b853v`bm+DyeZ~v8t5D>xQYE7rYDt zLwZytR3*F&ybM6Js)Wjt2b^w-E25pmhTrK6!`#njEP=zvH>z|w<` zfiD6plzIZI7M;=oqQC-?SfGksB5_omySq;rsxM&F-DOBAmREbB*^`)q6@o2koE(P#XojW(md4C J*tQ|90ssyfbqxRj diff --git a/client/resources/hardnested_tables/bitflip_0_240_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_240_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..e835ce4179c307e40e9ceb5e2d400f569a1b826c GIT binary patch literal 8357 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 GUjI)zux=Cp diff --git a/client/resources/hardnested_tables/bitflip_0_275_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_275_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a5259b6246dee7b88830b44cd7b0da33f3ee17f4 GIT binary patch literal 41275 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 CoB>Gy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_277_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_277_states.bin.bz2 deleted file mode 100644 index 18a6d49871207a91671b9bbecd09e0a98f45fb6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 zcmZ`*TWl2989tY}cy~s#fwgx>XuWG%umP{uClwDHpb&6$0gAMf11sZ zGaAjD(VTzI|9#*8{j>j9r(Suv>-ENCum1*V2o+yG`}M~9jSp^A7Onrh(PeKBA>92E za*+@hf^8}Ef5$7=8c|dosDMJ}_kIC{6RxJ1Effl5FnD|E&g+xfGsrL6j|C(cl znRxE+gqC}G05NAu-@C>|-g0vl(VvIQ$ zvXNX5InP~#67WOo!3#0oRc=DCf63$>4gStbLWkpswahrdUl30lSUx5}G6#9rdUo#H z$dV(axK}*+r6U&O1-D)%NMKv&1$qvPX6`QL2QgP8ANK~Ox9t{bF6LvpfLj#te2n}s z>%~#l!d@JoDW6<2=qg!^=SFBLzKFSl1$=^~N+cQV;pIJT=-;J;R5{KEmxVa5t)=B(YdQ*QlQ?LIyWsP-#$d1%Xv+8Et-w z7A-NYb)HH=g3M4fh8NIeZh$vqk+;Y-4N9Tc*3rA#)ojh0{QjJ{2Yggd7QN8wIhca%K-1>@!Vxf_#hR9 zI>`r7kkB@!SVFrq!4H(ux>#@M2+lOL!wQ9+^LRc4<~OvM6s;6<*QOnOE>Am3 z0U_qG?As``w8I8wTKs8o$#!GYv7u>dw#1{ zHS|`^cWYH{23Zxb508-N=sD*3RA7FQM0^OrBx{K8^(zE1cj&?p3+TKBee3;RDMUB3{ckbk5ARp&7z|p^ND-^pI=1a8p*IVw?)x&nJk;g?<{sSJkb}lYK<2|)f(`X@zhHgR0V2I zxmz9?+A_tJ@KajaCxvp63=D_L899V2sZ(ue9KD61PtHdgc>jWdA^FD>|7sXfWuAe% zO5g}C3gE}^VuT&fm8??JOgy)blJ^arDQfVN+Au0P;tpAp>-daP!kLCqbE-`-{R6u4 zC7p|-j}h;Zl_azgK8~MGRLP5C|LBf2EK?O*-^j5{aF*xIxzMT-+ybteGxY>mOTn#M z)@7eqofr>>b>J-xthr+57*&8jn=S9EnqL|ELkdkI8xGv~*Lb7YQ60mNtV+0Q;(3SM zp`z8ipA1^f4OF%6TY)74rK}NJjCic6khXlqvaHlSnXmn5(l_)c2KL-7Qo!GKbYB40V`fKYXed<4D*;Ks1hx4&ERe3ZaX32)R{ z+9E1m&wW?9-HhY|W%ZIgx@4fL$rS<0vPTr$`~bx8K?Fxe2>g}z1rS#?9>q$bJg>YW zugh1<2@Q5YFIM-G+2LE5zXond{DBlK;=3_jHeTl}LH7VpthIZ1$N;g2#v|;eyWDZqCB~w($Oow8)1Y1VMssD%5oy zTn_Obq5Mvn`q3bKF@PZ{2ae~KHa)E#gQpE^SxeQX&l(MF05rEw#QC^XE$uzQ2l{zE1bbMVCzY8wR1DJMp|Nwt_A&jS*Uz%ytKOz;^0t0V z+)zvif45+J3I<`jmMPi3MEIc+C3{v3y${}1kk+2YaMY_U*r-qgA7%)2!2wbmFxNFq zEWz9)fNz(3Ydw|r5WZOo3C^hkRP|L$U0jMdch%b(_;ui^j$CHxFhn-uzx#Ri@YLqt G%zpu4Rqjmy diff --git a/client/resources/hardnested_tables/bitflip_0_277_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_277_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08c31153365ebdaf62319aaec612c7c2448f20a8 GIT binary patch literal 26933 zcmeH~-)|gO701t=Upu=qbI%@s`XOqQtX_Pwc&;}?J6IYbVs7bX&JOnkN zE7AuGNExIGDuK}Qg7U@|gj6+=@C%|yAnhN3kYCWI5|aG@5-*fZLo`*>_VOJ&DV?Dp zK!A8SE7>z==l(e7d(P+FS!a4>{0r@$Pk)iS#6l5Q#fsa>x;k}VMGmZfi6 zxSQafRYi!zFIqLdnSC|Hzjr>KxgIpt)BV)+w+uqA()3hXr(-Fk8E+W)HP_$jQMsCl z)GT)>Bnz9l+$0-U2cgbma6-qqs{$r(394MtJ-0%Rj%|E#GV`&Pl5>x)E3AJPC*DVx zeDftHcQu>qu5r(^;9bOt1tq=Ha4Uf9@yOPPX>7~M+}fvGAvWA!GfgVNmzaB0vWC?} z_P9es)+oWJviCA^i^`B#`L(n=s<_8<+*aefSlLkP~@P`|=GhjBlTnM<6w4R}Aot5ljYT?fx?_!Bzku#|fM z8L<%3uwJwDWoYev0s$@Jda#-*Xc=VjgpXD@sVI0FjFg+?Z;-zu^3iCM!tGFRBlkU; ztU+53A&tVbWoUw^6ots&Fh8d-^$5dA9VQJSyHyVAf21I7 zHH;~2Qn*SHsw7qoDt?`? zWvR5eC+r2jH4zdt364Nctz%SEMXbLNBVH4M)o;{GI)&th(*7KXddV86e>);iu-9S_jTOYYlbGTa&qDvh8pu4Q{9+v zLE$SrV65=4?l$;iq;;pkt;KyDW8w3>{hX(`%9zFVVCLSek1lMK}`j1{+@ zo=0h;s&_TIfneV_m~Q#Bua8bm{+QdOfc&8}p@aSY;56phRze8W_vkX&1J|1+>v%R4 z#j|$-Ee1YMpcj4W5GQ-rxmSX^bYBh2VHYQ&U!yL`?OIVQD?-oDh<7$Dl@*ht?%hha zUWdc>ooeJbh=OZ&*v1x4ghU;^-2x&PEHop>%~&~Ivd}1Y8nc(s4kd25)1J5WXpmUp zhKg3Pfp;>zX1NI5&MNN>-OdGx8H zT1jpv@!!6ni`^-NJ8Qhnw8sp%zF6j#hi1Jn!<~x($2#J{$bC9~2tpn@W(=KsVi%ou zc|TVxX8^$+CmlFh-(3$*?&cKcO>TY#kS>qwCS-gO8951>Y-1L8Eo*+pWaMe1oZlUAOpv4OLhHy zfHS?_;djv@mYK{4VBNd)U%{H`O?Yt;J#%rmg8EJV%(T8&)0^P4f``!meS9+A@-_M+ zy>a{th;D3)sAM8oc1(+Tn%F5eV3XbhCnpAhPo|ilaji z5k%g5O_WpQZ{OAg5jjQVMN3|^WukO?y;j{L{5AOX7OMFS? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_27f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_27f_states.bin.bz2 deleted file mode 100644 index b6c1eb54c9a47adde8f344c3c51fa06cddd1c782..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1135 zcmYL{Z%k8H7{<>zx3{<4)_aQudL%pNmAXuJlKBCWeP|3g z;vk$`NED|Ar!LjFtQ#A{LEQb~LS~&u;|vnFbcSu+vgn;_93s=sKO1qNtDp9MdXx8; zC(oPbS^rvxZ*5@vs@Cl%Hcv#r#@zm;r%!J$mM_tL-6x$#)4;Y`0~&x65G-F0_Jbi) zyaE27TgO*8Vk<{-qP5?TIBTyQreJUF)YQ%k%ama5=s`sv4ITg%-)Q58Rkn_cGa*bn1daHzPmgmqIJ#v?YY(+&+`tQGWSeWO zdW#egLJHbtW8)_DgOfV;=soOfAO+T$>y(Bhu8Mc@Gy|EG*_zQG4#fTDKQJZ7Jz&nt zKVfxfLGP#Ssggl=#I0dmWxo0soTm|S5;5#RtTiFOCBa?xu~mF8F>@b*wAe>To0>ID zngjTG)hJ`tO<=EjPQ5ig+&aT8M7`)dE{dK8i}7M->rcE+!Uep^-+{jiWCy${0E~Uy z7*-_evv|3y_N#*W`5e415WnhIKTNuZC7Pgq?Odo{YlyVRE2iytxXF@V-K32wN`6`Z zZ-g7n2CXmdrym4TZX!YE@803#uS+ymAb@@|BLB_51G@O@LQ0B1M49Nna5tYSj(gDq zNQyX+7QPfd@nnIN41B^b(r~GPEAH|$p1@QUHL5@avSQk&?t$}YR)~1mS$#_GD9%*H zyM<8mnKsjkX1Ou1pjAqgcmf1tOMRWV&(C7+udLa!l1eL3oCL2qAbzB0cbrSNLGnsA zz(x*@BSYcPgoT}=`-zgTJ4B-r#l&O<`e8FsT-vEpNb<-_w>fa^lDHAe5m9lbUGU{J zQu69mvU<+?tO!td-=M8VDf*aH+Smv%9LUSlPlFD=6)|Sm7%rnMY}c~hD#bI~cuKbM yq?CJhtAP65h{epMM&USMEUYYNF$V`pBbvxclPu2&Ubk@ez4D8LgVzqeN&f>&!H^vQ diff --git a/client/resources/hardnested_tables/bitflip_0_27f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_27f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c7380444ac75b1e664e239b7bc16c474037613bd GIT binary patch literal 18288 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 PB=Gkpjy`|=@F4sbDYe8t literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_2a1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_2a1_states.bin.bz2 deleted file mode 100644 index 15195d21385b0eede73fd2ebfdf61354647a4812..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12468 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 GUjI)zux=Cp diff --git a/client/resources/hardnested_tables/bitflip_0_2a1_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_2a1_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a5259b6246dee7b88830b44cd7b0da33f3ee17f4 GIT binary patch literal 41275 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 CoB>Gy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_2a3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_2a3_states.bin.bz2 deleted file mode 100644 index 18a6d49871207a91671b9bbecd09e0a98f45fb6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 zcmZ`*TWl2989tY}cy~s#fwgx>XuWG%umP{uClwDHpb&6$0gAMf11sZ zGaAjD(VTzI|9#*8{j>j9r(Suv>-ENCum1*V2o+yG`}M~9jSp^A7Onrh(PeKBA>92E za*+@hf^8}Ef5$7=8c|dosDMJ}_kIC{6RxJ1Effl5FnD|E&g+xfGsrL6j|C(cl znRxE+gqC}G05NAu-@C>|-g0vl(VvIQ$ zvXNX5InP~#67WOo!3#0oRc=DCf63$>4gStbLWkpswahrdUl30lSUx5}G6#9rdUo#H z$dV(axK}*+r6U&O1-D)%NMKv&1$qvPX6`QL2QgP8ANK~Ox9t{bF6LvpfLj#te2n}s z>%~#l!d@JoDW6<2=qg!^=SFBLzKFSl1$=^~N+cQV;pIJT=-;J;R5{KEmxVa5t)=B(YdQ*QlQ?LIyWsP-#$d1%Xv+8Et-w z7A-NYb)HH=g3M4fh8NIeZh$vqk+;Y-4N9Tc*3rA#)ojh0{QjJ{2Yggd7QN8wIhca%K-1>@!Vxf_#hR9 zI>`r7kkB@!SVFrq!4H(ux>#@M2+lOL!wQ9+^LRc4<~OvM6s;6<*QOnOE>Am3 z0U_qG?As``w8I8wTKs8o$#!GYv7u>dw#1{ zHS|`^cWYH{23Zxb508-N=sD*3RA7FQM0^OrBx{K8^(zE1cj&?p3+TKBee3;RDMUB3{ckbk5ARp&7z|p^ND-^pI=1a8p*IVw?)x&nJk;g?<{sSJkb}lYK<2|)f(`X@zhHgR0V2I zxmz9?+A_tJ@KajaCxvp63=D_L899V2sZ(ue9KD61PtHdgc>jWdA^FD>|7sXfWuAe% zO5g}C3gE}^VuT&fm8??JOgy)blJ^arDQfVN+Au0P;tpAp>-daP!kLCqbE-`-{R6u4 zC7p|-j}h;Zl_azgK8~MGRLP5C|LBf2EK?O*-^j5{aF*xIxzMT-+ybteGxY>mOTn#M z)@7eqofr>>b>J-xthr+57*&8jn=S9EnqL|ELkdkI8xGv~*Lb7YQ60mNtV+0Q;(3SM zp`z8ipA1^f4OF%6TY)74rK}NJjCic6khXlqvaHlSnXmn5(l_)c2KL-7Qo!GKbYB40V`fKYXed<4D*;Ks1hx4&ERe3ZaX32)R{ z+9E1m&wW?9-HhY|W%ZIgx@4fL$rS<0vPTr$`~bx8K?Fxe2>g}z1rS#?9>q$bJg>YW zugh1<2@Q5YFIM-G+2LE5zXond{DBlK;=3_jHeTl}LH7VpthIZ1$N;g2#v|;eyWDZqCB~w($Oow8)1Y1VMssD%5oy zTn_Obq5Mvn`q3bKF@PZ{2ae~KHa)E#gQpE^SxeQX&l(MF05rEw#QC^XE$uzQ2l{zE1bbMVCzY8wR1DJMp|Nwt_A&jS*Uz%ytKOz;^0t0V z+)zvif45+J3I<`jmMPi3MEIc+C3{v3y${}1kk+2YaMY_U*r-qgA7%)2!2wbmFxNFq zEWz9)fNz(3Ydw|r5WZOo3C^hkRP|L$U0jMdch%b(_;ui^j$CHxFhn-uzx#Ri@YLqt G%zpu4Rqjmy diff --git a/client/resources/hardnested_tables/bitflip_0_2a3_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_2a3_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08c31153365ebdaf62319aaec612c7c2448f20a8 GIT binary patch literal 26933 zcmeH~-)|gO701t=Upu=qbI%@s`XOqQtX_Pwc&;}?J6IYbVs7bX&JOnkN zE7AuGNExIGDuK}Qg7U@|gj6+=@C%|yAnhN3kYCWI5|aG@5-*fZLo`*>_VOJ&DV?Dp zK!A8SE7>z==l(e7d(P+FS!a4>{0r@$Pk)iS#6l5Q#fsa>x;k}VMGmZfi6 zxSQafRYi!zFIqLdnSC|Hzjr>KxgIpt)BV)+w+uqA()3hXr(-Fk8E+W)HP_$jQMsCl z)GT)>Bnz9l+$0-U2cgbma6-qqs{$r(394MtJ-0%Rj%|E#GV`&Pl5>x)E3AJPC*DVx zeDftHcQu>qu5r(^;9bOt1tq=Ha4Uf9@yOPPX>7~M+}fvGAvWA!GfgVNmzaB0vWC?} z_P9es)+oWJviCA^i^`B#`L(n=s<_8<+*aefSlLkP~@P`|=GhjBlTnM<6w4R}Aot5ljYT?fx?_!Bzku#|fM z8L<%3uwJwDWoYev0s$@Jda#-*Xc=VjgpXD@sVI0FjFg+?Z;-zu^3iCM!tGFRBlkU; ztU+53A&tVbWoUw^6ots&Fh8d-^$5dA9VQJSyHyVAf21I7 zHH;~2Qn*SHsw7qoDt?`? zWvR5eC+r2jH4zdt364Nctz%SEMXbLNBVH4M)o;{GI)&th(*7KXddV86e>);iu-9S_jTOYYlbGTa&qDvh8pu4Q{9+v zLE$SrV65=4?l$;iq;;pkt;KyDW8w3>{hX(`%9zFVVCLSek1lMK}`j1{+@ zo=0h;s&_TIfneV_m~Q#Bua8bm{+QdOfc&8}p@aSY;56phRze8W_vkX&1J|1+>v%R4 z#j|$-Ee1YMpcj4W5GQ-rxmSX^bYBh2VHYQ&U!yL`?OIVQD?-oDh<7$Dl@*ht?%hha zUWdc>ooeJbh=OZ&*v1x4ghU;^-2x&PEHop>%~&~Ivd}1Y8nc(s4kd25)1J5WXpmUp zhKg3Pfp;>zX1NI5&MNN>-OdGx8H zT1jpv@!!6ni`^-NJ8Qhnw8sp%zF6j#hi1Jn!<~x($2#J{$bC9~2tpn@W(=KsVi%ou zc|TVxX8^$+CmlFh-(3$*?&cKcO>TY#kS>qwCS-gO8951>Y-1L8Eo*+pWaMe1oZlUAOpv4OLhHy zfHS?_;djv@mYK{4VBNd)U%{H`O?Yt;J#%rmg8EJV%(T8&)0^P4f``!meS9+A@-_M+ zy>a{th;D3)sAM8oc1(+Tn%F5eV3XbhCnpAhPo|ilaji z5k%g5O_WpQZ{OAg5jjQVMN3|^WukO?y;j{L{5AOX7OMFS? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_2a9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_2a9_states.bin.bz2 deleted file mode 100644 index fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4981 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 diff --git a/client/resources/hardnested_tables/bitflip_0_2a9_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_2a9_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b315cfd6097ff70103efe6f78b2789a1d8e17d90 GIT binary patch literal 29127 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 diff --git a/client/resources/hardnested_tables/bitflip_0_2ab_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_2ab_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c7380444ac75b1e664e239b7bc16c474037613bd GIT binary patch literal 18288 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 PB=Gkpjy`|=@F4sbDYe8t literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_2f1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_2f1_states.bin.bz2 deleted file mode 100644 index 15195d21385b0eede73fd2ebfdf61354647a4812..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12468 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 GUjI)zux=Cp diff --git a/client/resources/hardnested_tables/bitflip_0_2f1_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_2f1_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a5259b6246dee7b88830b44cd7b0da33f3ee17f4 GIT binary patch literal 41275 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 CoB>Gy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_2f3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_2f3_states.bin.bz2 deleted file mode 100644 index 18a6d49871207a91671b9bbecd09e0a98f45fb6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 zcmZ`*TWl2989tY}cy~s#fwgx>XuWG%umP{uClwDHpb&6$0gAMf11sZ zGaAjD(VTzI|9#*8{j>j9r(Suv>-ENCum1*V2o+yG`}M~9jSp^A7Onrh(PeKBA>92E za*+@hf^8}Ef5$7=8c|dosDMJ}_kIC{6RxJ1Effl5FnD|E&g+xfGsrL6j|C(cl znRxE+gqC}G05NAu-@C>|-g0vl(VvIQ$ zvXNX5InP~#67WOo!3#0oRc=DCf63$>4gStbLWkpswahrdUl30lSUx5}G6#9rdUo#H z$dV(axK}*+r6U&O1-D)%NMKv&1$qvPX6`QL2QgP8ANK~Ox9t{bF6LvpfLj#te2n}s z>%~#l!d@JoDW6<2=qg!^=SFBLzKFSl1$=^~N+cQV;pIJT=-;J;R5{KEmxVa5t)=B(YdQ*QlQ?LIyWsP-#$d1%Xv+8Et-w z7A-NYb)HH=g3M4fh8NIeZh$vqk+;Y-4N9Tc*3rA#)ojh0{QjJ{2Yggd7QN8wIhca%K-1>@!Vxf_#hR9 zI>`r7kkB@!SVFrq!4H(ux>#@M2+lOL!wQ9+^LRc4<~OvM6s;6<*QOnOE>Am3 z0U_qG?As``w8I8wTKs8o$#!GYv7u>dw#1{ zHS|`^cWYH{23Zxb508-N=sD*3RA7FQM0^OrBx{K8^(zE1cj&?p3+TKBee3;RDMUB3{ckbk5ARp&7z|p^ND-^pI=1a8p*IVw?)x&nJk;g?<{sSJkb}lYK<2|)f(`X@zhHgR0V2I zxmz9?+A_tJ@KajaCxvp63=D_L899V2sZ(ue9KD61PtHdgc>jWdA^FD>|7sXfWuAe% zO5g}C3gE}^VuT&fm8??JOgy)blJ^arDQfVN+Au0P;tpAp>-daP!kLCqbE-`-{R6u4 zC7p|-j}h;Zl_azgK8~MGRLP5C|LBf2EK?O*-^j5{aF*xIxzMT-+ybteGxY>mOTn#M z)@7eqofr>>b>J-xthr+57*&8jn=S9EnqL|ELkdkI8xGv~*Lb7YQ60mNtV+0Q;(3SM zp`z8ipA1^f4OF%6TY)74rK}NJjCic6khXlqvaHlSnXmn5(l_)c2KL-7Qo!GKbYB40V`fKYXed<4D*;Ks1hx4&ERe3ZaX32)R{ z+9E1m&wW?9-HhY|W%ZIgx@4fL$rS<0vPTr$`~bx8K?Fxe2>g}z1rS#?9>q$bJg>YW zugh1<2@Q5YFIM-G+2LE5zXond{DBlK;=3_jHeTl}LH7VpthIZ1$N;g2#v|;eyWDZqCB~w($Oow8)1Y1VMssD%5oy zTn_Obq5Mvn`q3bKF@PZ{2ae~KHa)E#gQpE^SxeQX&l(MF05rEw#QC^XE$uzQ2l{zE1bbMVCzY8wR1DJMp|Nwt_A&jS*Uz%ytKOz;^0t0V z+)zvif45+J3I<`jmMPi3MEIc+C3{v3y${}1kk+2YaMY_U*r-qgA7%)2!2wbmFxNFq zEWz9)fNz(3Ydw|r5WZOo3C^hkRP|L$U0jMdch%b(_;ui^j$CHxFhn-uzx#Ri@YLqt G%zpu4Rqjmy diff --git a/client/resources/hardnested_tables/bitflip_0_2f3_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_2f3_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08c31153365ebdaf62319aaec612c7c2448f20a8 GIT binary patch literal 26933 zcmeH~-)|gO701t=Upu=qbI%@s`XOqQtX_Pwc&;}?J6IYbVs7bX&JOnkN zE7AuGNExIGDuK}Qg7U@|gj6+=@C%|yAnhN3kYCWI5|aG@5-*fZLo`*>_VOJ&DV?Dp zK!A8SE7>z==l(e7d(P+FS!a4>{0r@$Pk)iS#6l5Q#fsa>x;k}VMGmZfi6 zxSQafRYi!zFIqLdnSC|Hzjr>KxgIpt)BV)+w+uqA()3hXr(-Fk8E+W)HP_$jQMsCl z)GT)>Bnz9l+$0-U2cgbma6-qqs{$r(394MtJ-0%Rj%|E#GV`&Pl5>x)E3AJPC*DVx zeDftHcQu>qu5r(^;9bOt1tq=Ha4Uf9@yOPPX>7~M+}fvGAvWA!GfgVNmzaB0vWC?} z_P9es)+oWJviCA^i^`B#`L(n=s<_8<+*aefSlLkP~@P`|=GhjBlTnM<6w4R}Aot5ljYT?fx?_!Bzku#|fM z8L<%3uwJwDWoYev0s$@Jda#-*Xc=VjgpXD@sVI0FjFg+?Z;-zu^3iCM!tGFRBlkU; ztU+53A&tVbWoUw^6ots&Fh8d-^$5dA9VQJSyHyVAf21I7 zHH;~2Qn*SHsw7qoDt?`? zWvR5eC+r2jH4zdt364Nctz%SEMXbLNBVH4M)o;{GI)&th(*7KXddV86e>);iu-9S_jTOYYlbGTa&qDvh8pu4Q{9+v zLE$SrV65=4?l$;iq;;pkt;KyDW8w3>{hX(`%9zFVVCLSek1lMK}`j1{+@ zo=0h;s&_TIfneV_m~Q#Bua8bm{+QdOfc&8}p@aSY;56phRze8W_vkX&1J|1+>v%R4 z#j|$-Ee1YMpcj4W5GQ-rxmSX^bYBh2VHYQ&U!yL`?OIVQD?-oDh<7$Dl@*ht?%hha zUWdc>ooeJbh=OZ&*v1x4ghU;^-2x&PEHop>%~&~Ivd}1Y8nc(s4kd25)1J5WXpmUp zhKg3Pfp;>zX1NI5&MNN>-OdGx8H zT1jpv@!!6ni`^-NJ8Qhnw8sp%zF6j#hi1Jn!<~x($2#J{$bC9~2tpn@W(=KsVi%ou zc|TVxX8^$+CmlFh-(3$*?&cKcO>TY#kS>qwCS-gO8951>Y-1L8Eo*+pWaMe1oZlUAOpv4OLhHy zfHS?_;djv@mYK{4VBNd)U%{H`O?Yt;J#%rmg8EJV%(T8&)0^P4f``!meS9+A@-_M+ zy>a{th;D3)sAM8oc1(+Tn%F5eV3XbhCnpAhPo|ilaji z5k%g5O_WpQZ{OAg5jjQVMN3|^WukO?y;j{L{5AOX7OMFS? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_2f9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_2f9_states.bin.bz2 deleted file mode 100644 index fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4981 zcmaJ@|5K9rzV{obJXj&}fSit{fXM^u6N59ZvssFu5Efsa2azd#9+&1KKh;jn^u?_J zQ9*6dpe4^~6BLC<-6cn7+Ge)^>s(~!-a)V2)9mctv2J_Dx}81dDYv$^F8c@E`}yJX z!{Mx8 zEr<{DKmmn{kT)JuWmHfmAx%);=q_r>7(pR!Kz*npBP$5);%Bpzt>nD>BG~&$zGFPf z>XXr__w=WTig{EYVRPts9!w(NJq0in+lry zQ31(r9ep-seHKd2?7fpyKR!QsCunL}9}4;`rz(C@y--E&a8P)LvZy85^|H}+`B^aU zZSM(rPsN{7je13mD$$p<4HCKN4&v|@aDTE`v3V?5O|miz_0X@W`m#D8CJ!LtfKNvo zU({*@6+;f~Gr!q=A$UT9z%!9yZQ~q+?MwS6ZhDU~^V4Ar)0Q*Z=fY}I>~ZioDrlOr z>l-dUGBW`rRa0~xAlSYXwVc3piYi)iMp{+6(HS`U{q*Yet@F%ROkhi0?<^nr2zknz zJc87PEGN;e1{3;3{uAn)1}L}nnqRb(j$J9wbjT;)ya8m-P1h5}(@p4Fh-vi|R<#6*4of`yRZIwSq|4v(B13sOr zZq(p6d#tg;Er$W?8r0KJ?>WHlApKKIB2GvE;*YAI3ep((;v+x%64QJXXNP)mom`a8 zB-BCLCO&i5$38B+pr}4o^57V+lCl8MV108u_@?5s*vsn1_1je-=@*(ujbrJEe&PjM zqix#ru=Dvb2;Bxr&qms5gl|(=RaT6o8ZIjKmoBL28gS#xFFxJxx3iso@SI zk>Be{m!oE0_J3B&H-}<%A^Y>3_lvFk24BUNoPRPuLJ$0Y?`wkI08g6j*(<6T!|qo4 zaaKDL#fGZ8YK21L)6jZzR@B@_n0-6kUeIEao2Nz@{;NFb94hifF+EUZ%e+83Z2bx- zl+j*D3tu#?FP537(s|1(RcriM6f=Y@-8{QB)vAiY?FuEx(2eSagjWbs!um=rsTW&- zQp&Vh6Pfq*;+PEC56aU%Llb8bXmXYfu14mJyN)8uxX;z9! z#NnK7C~7j0>;!K18UmPGw^F#~zYmZIUC=xg#AGPnngV-GU}$^+q!C`3%4?VcL%n7% zO5m){80u}v1t_f5OaT9M zE-E?i?5TsN*waZ_FYzXC8$cq9MGMY$h$W+We(&Jqyw5#R;gyl>z1VQptvn;YcM$5M zg|Z=X2uaTHa$h<-yPPkwHUnVeoIoX)0weL|A2@C*nA%Y*HPFs zLgxY1uuwRD0`g9V-6tev9$1Koe9op>PG0PR>et>Al66{&${{tsM?a=LW0*$_eA6(= zKy)h-A*;xl<~K;PM(*Jkt?z&bEw6UzY4zr|{{)aZl0Bw(S&w>ESMS5P1n?3g9r5#o{+^)Izkol~7t%LN87z@>7hUxp9%#$<79CTfE1$fT< zK5$O;mh>7u8m|JjN$*Ho#7&Ctm8M-2KE`|Epp>HVnO50q_E#d+#rL`Xe ztnihh@X@u-pMg#0yR5(qBwzcZ=I*+|kDuW6o>BB$VHwz@&B64QjGaF)#6e8)4!R+) zlvfshUNn&v6E)qmltApzh74pDeSP_^&pf?|9>{tb>>;gR$$CwSUdX{&1fK3ehesJW zIg=HGuaK-)N!F*0ZAraQ=>Gb&!{3?}n^m+^76y{l|L_AZ-@c}FDm=vDd|Ba8&O)%u z8AdlbkRvjTTr2YuG8AraN`#J%52^QQ3X_IVMYwE*%HgB!a-0(Fa>uTbI7m`&O>z@c zLA)D*7x&6C4Hf8fp4NZOHA0L96)T5xLOxONbw$GBQKkWwi^0*syi{3u3K2Wp()!15 zQ7vCD4B$GXM)H9;3nUGrLqr!D$n(A9fA-*c2c)>`EZTP;?7imHE1C<71WnwV|EA0d zhexuJ8lLnl_xZ1B)m{;PT}bABVLM^M&!LNqQrj98KW_8=?45C@51z; z#Y}s~H}^w-29a6d;dek{deXn@UsaqRsPc=fC!5UKicq3WUPU^Bz-!$l3{ zHF3Skw=Qd$3K@dJ;B|`H?w|Blau*e`6jj5p&VmdH)TiPUO^_y)AgTmI^2v$(8cAL( zMkG9LCFoH1noyi215|z-KcR|*hg|zLi$&(Xfns$HuTl$;0s=&wb%Dn+j2r>d6Oxt_ zFO;g&v@0H4>=tanrx*H9DQb{)p@wG_AwwK{0zG*Jq}h9M96#+7kO;;x&P$Nc73x7o zcTpG(F+AB>B1$AYj4ByE_7tHe#(bA=Q9&SYPTSI5z%zRY-RMvuEB%cmdPP%&P^ekh zwOSU{0i>WLD^ac)3TV^%0%{5LG&jzaf{oXJiW|~1tw^jc-;KuRvQmPafTwPzVw@j-~&+tn@l`+vV#(#WK6TQeC4=w*){|$-!>LG7^h+3)Bo&Wy@&nL4)34 z^>w8BCXxw&GnHS!ShNt#(c}#ReYnPr40<#ARCnZcWpg)S7TuQ!Voj>+Co^ zB-d*QJ=ux|g@u9SFj@=psrMlCBNr#U0~I^+L1e^Iu=V_jIemukHKANf<|S>2cazo)EG4L6Cf z{-k~R<>af9tG_jUofH&(y;jaO(1<3X(7_+?a`@*OWY$%_fw21yy5`7E@3|e;NZX=3 zbcAUm_hnPz7fkCH0fpF5P95C4HYjH|5LeZ?{uz03`Ji+|++L2{00(m=QvZgM)umXE zpWZ#V_X+TfI`Jhp036hanl0A1_K`jL9sYib0hC_eW*2Q7 z&wI182wDDk_rO_L;uKZ8wy(OjS`q>Od?mfqRNRG%^$Dw!^?vArT@3NP&W zp|%#qV)&EV`WF-Nji=}_fGeupb?Mu#Ii}8(x;~{ zaC`$!T>V>d!-L{->H4EOMHEW`0|(bx)sYWI_`Bsjv>x?G<&qKOw45zyirU$3czu<4 zP23%Mw$JiUme{C2eVobjM>f7uUl?@##P?$>V#7#KR6visUHbWpA37-8Xb<=GVDD@i znORn6Sts{i=EnKmyLZC}v*NO1;IU)$%S;>hruRL^A9_8U>%ZpjsxcYf})0o{oMP=!68x;;;Bm2%vT~AwCSTD(DWo%EoX0h50J~ ztwwWzccJ&-oDjlY3&nIYWJ>gb)?~N(HORu@aC~9JgkiBIGOJq>QT&S1#vh%Aw<+&k zYiNz8L!+r>MB3ENS+^OfvY!6u*nn-8$GuC8V!70i%nla7d}qT&KN8B~N<`dIDo7##l1pS&vr74b6y z|C6d64e@XGNke+kksaWW_|nFL=e#PIR$P-3G5yAy0N(XCZ&vPUF#CF9Jq>-f!g*%` z1VIT8?~+MJ+XX;2H7%1vsFDc#T;TKyVbi|d68F}2;Hk?->9QEZOrBVd~p0=>4!rTj|($@ zrf-s+OI-YP2`cDhiqPYel#Y5vjoMP{idiP%>m2q|s}GkQhJa;g9QCz107 z+<8{WMqz&7y!m`!E7++RnE1Y!VVo=6Coj7;$+#4Z4Ar!_SGu8zXy?OA!HcAy3cqEO z$#(w(q+=9{Pys13;vA~C7=rz`YUI*K^6{jR<#;LpTHZ&E?(b$HC+{B<9g*bIsc?d0v-g)~ zJE~Z?D;{2=!pma+d8%rC6UO3I!Q#@BSF)bWP;1$ZCKkhDYtf6)sJo4fs(rkdgQ|&y zW?SsMc!rm|TA)a8hKhyOJfjYk;{*>|8>Sb4Jhc^zfsMU2GDX4EPw=55l99#UPqu33@M$f>Io{_;ZGrVDf(_`{ZVWdHeq9R1IxAUrEIc) zs94~r%*}MrtO=fdY4iw_DulyJJN$IA^Q!%ALB4f?E%Yx4H7UO3gxX>s$Bjx@ZOb1w zg|XN$`&u9*Zl!DV5XQpdgwdqjUrtN~sC04xR#$JBHaT*5SJ{HPj(1uyZx?ammlt$y*r+SWGtSa^{L>Co w;BbQx*p+lXQSPwGJ6rZQCCW$d*d|Ba35(BHe_(zptyQ_Ag8u*cU-)1DiU0rr diff --git a/client/resources/hardnested_tables/bitflip_0_2f9_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_2f9_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b315cfd6097ff70103efe6f78b2789a1d8e17d90 GIT binary patch literal 29127 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 diff --git a/client/resources/hardnested_tables/bitflip_0_2fb_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_2fb_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c7380444ac75b1e664e239b7bc16c474037613bd GIT binary patch literal 18288 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 GUjI)zux=Cp diff --git a/client/resources/hardnested_tables/bitflip_0_335_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_335_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a5259b6246dee7b88830b44cd7b0da33f3ee17f4 GIT binary patch literal 41275 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 CoB>Gy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_337_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_337_states.bin.bz2 deleted file mode 100644 index 18a6d49871207a91671b9bbecd09e0a98f45fb6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 zcmZ`*TWl2989tY}cy~s#fwgx>XuWG%umP{uClwDHpb&6$0gAMf11sZ zGaAjD(VTzI|9#*8{j>j9r(Suv>-ENCum1*V2o+yG`}M~9jSp^A7Onrh(PeKBA>92E za*+@hf^8}Ef5$7=8c|dosDMJ}_kIC{6RxJ1Effl5FnD|E&g+xfGsrL6j|C(cl znRxE+gqC}G05NAu-@C>|-g0vl(VvIQ$ zvXNX5InP~#67WOo!3#0oRc=DCf63$>4gStbLWkpswahrdUl30lSUx5}G6#9rdUo#H z$dV(axK}*+r6U&O1-D)%NMKv&1$qvPX6`QL2QgP8ANK~Ox9t{bF6LvpfLj#te2n}s z>%~#l!d@JoDW6<2=qg!^=SFBLzKFSl1$=^~N+cQV;pIJT=-;J;R5{KEmxVa5t)=B(YdQ*QlQ?LIyWsP-#$d1%Xv+8Et-w z7A-NYb)HH=g3M4fh8NIeZh$vqk+;Y-4N9Tc*3rA#)ojh0{QjJ{2Yggd7QN8wIhca%K-1>@!Vxf_#hR9 zI>`r7kkB@!SVFrq!4H(ux>#@M2+lOL!wQ9+^LRc4<~OvM6s;6<*QOnOE>Am3 z0U_qG?As``w8I8wTKs8o$#!GYv7u>dw#1{ zHS|`^cWYH{23Zxb508-N=sD*3RA7FQM0^OrBx{K8^(zE1cj&?p3+TKBee3;RDMUB3{ckbk5ARp&7z|p^ND-^pI=1a8p*IVw?)x&nJk;g?<{sSJkb}lYK<2|)f(`X@zhHgR0V2I zxmz9?+A_tJ@KajaCxvp63=D_L899V2sZ(ue9KD61PtHdgc>jWdA^FD>|7sXfWuAe% zO5g}C3gE}^VuT&fm8??JOgy)blJ^arDQfVN+Au0P;tpAp>-daP!kLCqbE-`-{R6u4 zC7p|-j}h;Zl_azgK8~MGRLP5C|LBf2EK?O*-^j5{aF*xIxzMT-+ybteGxY>mOTn#M z)@7eqofr>>b>J-xthr+57*&8jn=S9EnqL|ELkdkI8xGv~*Lb7YQ60mNtV+0Q;(3SM zp`z8ipA1^f4OF%6TY)74rK}NJjCic6khXlqvaHlSnXmn5(l_)c2KL-7Qo!GKbYB40V`fKYXed<4D*;Ks1hx4&ERe3ZaX32)R{ z+9E1m&wW?9-HhY|W%ZIgx@4fL$rS<0vPTr$`~bx8K?Fxe2>g}z1rS#?9>q$bJg>YW zugh1<2@Q5YFIM-G+2LE5zXond{DBlK;=3_jHeTl}LH7VpthIZ1$N;g2#v|;eyWDZqCB~w($Oow8)1Y1VMssD%5oy zTn_Obq5Mvn`q3bKF@PZ{2ae~KHa)E#gQpE^SxeQX&l(MF05rEw#QC^XE$uzQ2l{zE1bbMVCzY8wR1DJMp|Nwt_A&jS*Uz%ytKOz;^0t0V z+)zvif45+J3I<`jmMPi3MEIc+C3{v3y${}1kk+2YaMY_U*r-qgA7%)2!2wbmFxNFq zEWz9)fNz(3Ydw|r5WZOo3C^hkRP|L$U0jMdch%b(_;ui^j$CHxFhn-uzx#Ri@YLqt G%zpu4Rqjmy diff --git a/client/resources/hardnested_tables/bitflip_0_337_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_337_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08c31153365ebdaf62319aaec612c7c2448f20a8 GIT binary patch literal 26933 zcmeH~-)|gO701t=Upu=qbI%@s`XOqQtX_Pwc&;}?J6IYbVs7bX&JOnkN zE7AuGNExIGDuK}Qg7U@|gj6+=@C%|yAnhN3kYCWI5|aG@5-*fZLo`*>_VOJ&DV?Dp zK!A8SE7>z==l(e7d(P+FS!a4>{0r@$Pk)iS#6l5Q#fsa>x;k}VMGmZfi6 zxSQafRYi!zFIqLdnSC|Hzjr>KxgIpt)BV)+w+uqA()3hXr(-Fk8E+W)HP_$jQMsCl z)GT)>Bnz9l+$0-U2cgbma6-qqs{$r(394MtJ-0%Rj%|E#GV`&Pl5>x)E3AJPC*DVx zeDftHcQu>qu5r(^;9bOt1tq=Ha4Uf9@yOPPX>7~M+}fvGAvWA!GfgVNmzaB0vWC?} z_P9es)+oWJviCA^i^`B#`L(n=s<_8<+*aefSlLkP~@P`|=GhjBlTnM<6w4R}Aot5ljYT?fx?_!Bzku#|fM z8L<%3uwJwDWoYev0s$@Jda#-*Xc=VjgpXD@sVI0FjFg+?Z;-zu^3iCM!tGFRBlkU; ztU+53A&tVbWoUw^6ots&Fh8d-^$5dA9VQJSyHyVAf21I7 zHH;~2Qn*SHsw7qoDt?`? zWvR5eC+r2jH4zdt364Nctz%SEMXbLNBVH4M)o;{GI)&th(*7KXddV86e>);iu-9S_jTOYYlbGTa&qDvh8pu4Q{9+v zLE$SrV65=4?l$;iq;;pkt;KyDW8w3>{hX(`%9zFVVCLSek1lMK}`j1{+@ zo=0h;s&_TIfneV_m~Q#Bua8bm{+QdOfc&8}p@aSY;56phRze8W_vkX&1J|1+>v%R4 z#j|$-Ee1YMpcj4W5GQ-rxmSX^bYBh2VHYQ&U!yL`?OIVQD?-oDh<7$Dl@*ht?%hha zUWdc>ooeJbh=OZ&*v1x4ghU;^-2x&PEHop>%~&~Ivd}1Y8nc(s4kd25)1J5WXpmUp zhKg3Pfp;>zX1NI5&MNN>-OdGx8H zT1jpv@!!6ni`^-NJ8Qhnw8sp%zF6j#hi1Jn!<~x($2#J{$bC9~2tpn@W(=KsVi%ou zc|TVxX8^$+CmlFh-(3$*?&cKcO>TY#kS>qwCS-gO8951>Y-1L8Eo*+pWaMe1oZlUAOpv4OLhHy zfHS?_;djv@mYK{4VBNd)U%{H`O?Yt;J#%rmg8EJV%(T8&)0^P4f``!meS9+A@-_M+ zy>a{th;D3)sAM8oc1(+Tn%F5eV3XbhCnpAhPo|ilaji z5k%g5O_WpQZ{OAg5jjQVMN3|^WukO?y;j{L{5AOX7OMFS? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_33d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_33d_states.bin.bz2 deleted file mode 100644 index fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4981 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 diff --git a/client/resources/hardnested_tables/bitflip_0_33d_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_33d_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b315cfd6097ff70103efe6f78b2789a1d8e17d90 GIT binary patch literal 29127 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 diff --git a/client/resources/hardnested_tables/bitflip_0_33f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_33f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c7380444ac75b1e664e239b7bc16c474037613bd GIT binary patch literal 18288 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 N1v(9kpXaZ)+&Az7G@$?h literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_365_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_365_states.bin.bz2 deleted file mode 100644 index 15195d21385b0eede73fd2ebfdf61354647a4812..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12468 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 GUjI)zux=Cp diff --git a/client/resources/hardnested_tables/bitflip_0_365_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_365_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a5259b6246dee7b88830b44cd7b0da33f3ee17f4 GIT binary patch literal 41275 zcmeHQO>A7(dHwF2``)~nxpVIuj)ofkh%=NednEJcNg{=DOw%uNinxhV6Kxj;TA;IF z1GQBvp_U5=rHSiC3!x|)Ewa!eD8@ihc##DcS-86gbdyyfpc^fxplS$kKr)elva&SO zb00}jk|mi+Q6K?63F7;^@BVz>`OZ04q(<`S_v*`+{q zee$Z|d!z-KROA~gR>YwseM6X(M!Y&1>mA2kZ@jURh*#17DZQ05B>$q(PlPO<&l#J0 z!)$v+ow~lxnnW~RD?#G*{$^j&?=Nij+lwKch!^Wrh$t76f0G&uR^(5#7h5DSjU^02 zIr-02TUevnLH{!%vqZzCi2Uo6zd_*|$#KfJs9-5i!e62=CQSlw1)4Ag3bCRyx+xHz zvB|+^hy1Qk9Ty#?6QQke(@W@t?s+EmWTS1pNWJG~JW}Y8L;w=uQ*L4fy)|=6cLg53 ziN%Y?3dv7!vW%4-Ll^Tu+W6uZn-?~Ju^CdSax0|9azsRbNM4J)&TdK!)k*$5e{^Hh zBT_^i3ey15tPT{(kOCwuq1+{s=P0CNxP*XXE~4b6)VS57KwiypjxwpIv4UK%hKPA16Bn$9 zM?>Bm>9k-dS3vN_=$gAJFSTxOv}Srh#=E3%>xd>!VYv~>CCYUKMn5DYA4sDZGY@ir zVVXl!jv!a%l$0RVB>KJ(b;_kQzp=4-h~_pnHqHmWb&+s$wxok|0!2*x%{zC{US-70Byk=SpIPgQ^fcZXW~q^N2y&q(RwFeTg{RfO2)r8>0jZej;-3(M$b>#LMPl#k`FdX79Hb%>599 zWd(Qk^5EhiqUJ@U56iBsWOY}S*VRrW3aQHP6kicBxMnKtCUQtJF%qNLvM*x{roH^9 zWB^UTP4!4NsoJhni26(-OtF9%R4Agumv;u0f*P0Ya1r^J33{#JRY6VMOotW9Ln7Jr z@DepHrdVD=0H;{QaavvTKmdqTxwi5xVA}&4kQI9V2@_lBVsDLSwAcQn~B9;O}Cr>@e1twH|H;i>NN0pr>4| z82cv4*9KzwiwpR@ypH4g^7@7Kh>nO(Q2;}o-MXpngR3WjeJtlC6_LVdkup8<-rc;l zxlBqSpbE&r6jZl_+QnH3I2rSkQe8jK!skI2P zF?O<|;-ayIT4O~bok)*zc`y1d>5e}Ya*j0UF8UXfCe9ZDV9X{!q*2GMOqVYCg^nWwUjpTwO;*QJ2O}%qWj^$GugR?My>bP$`g`Oei~1 zUry=JI)+aue`J{^@B#{^5qndzws{@Ugx-;nD9Df|-Kcg3sXVOKUT$2bctN-3OfS}G za}-izXb$yo@+`7&+`RJ|LW35co-j03YQ!|PFcU-IaI=7#!r`QDP2o_=dcr&4*s!nd zQ4N`**6-q=sfBy5>t-IqLzOco8*Z#q_-*h~5aq)(?`j6K_W@1h3R)y)Oz$=1P8!uY zp*z6NRLR(5G>gd}142rRPC`({L&{FMn^VJhab~B8Tf?YejQ+N60%WbKxlyi_+@xC{ zHbt0!Qe{CzyVq~TPyt0UDI=iST0o!ONM9G-x z3SqWggcn0B@6ab$&_kPGX!K;Eb4GU~L+uH~xILM-6-8}hD+SYQS3H-G(QjvU*ad@Q zR1?2pOs5KTFM?vme{AeG{tN@1X{=lLGdffO*aw5brt2G^ISvdBE`ospiaI>q@H}!o zj&p!z^sjLIOWmv>mt(=XDCo?Dod|A&_ zG1lx3vv&m$GmHU;k%*Bo^!pb2{~JskldQjEwoXF2*Cf-Vm7D>xEeDkzFmhcCy^0oIRbX zbH}N(+QRxsmwKmF4@{Y*1Nd|+kFr63g;?Kt`SwgmV;CA2wM>G-O54)Qt=87N;P~9p z+cOUAp-=eFTJ>-g4@6~-(Cx^9DlHYq9^L3Wa*_dHN zONjE;ezNbNuia$-+K1Ww?)Lh)-&ptPHPMM+EngX6O9iM@{p+WlIxVl$+!K~#$XO0p zSwpXsvUFoH&T(KB0%s2$huQk3TQP!j{w>`>^Yf+BXU^$@KvJp5<)h<3*+dNgK=`&X{T*x zFs3=oOP9Kj!8j}6eHg<-Tm@r6i;3vjdw+ptY%uXT4*3+nnmqj~1n?5Z&Y?tQ2kpF)iZ)p3DruU5po^;3DvWgA@QHapB(k0k6sr_5T+T26F-(|jPa7JIE{ z6Bx4=vlg?~fW6l4_d$7w$U8*dAwF9#_n$oN@7&mHvDey1$dhO6wb*O1*J7`=`;Fld z_FC+<*lRthl25y4uf^X(d>SsEeUH5sdoA`_?6ufy?f!%t|KtPzfve#m-#a@fO7JDuBTKrR{2N2AMP1tL(*Lnzs1D&wfVz0$si@g?mE%sXMwGJei zyN%duvDbPLybK2Hwb*O1*J7{5UW>gJd#xAIPWD>twO#}-?6vqaAAU1GMTh@I5C4mv zXEPb^5P65lJ4D_g@(z)Ah`d95woZQa3GWbjhxk=gJns&BE%sXMwb*O1*J7{5Uh8>E z`Q$V9TI{u+#KiNj*=w=aVz0$si@g?mE%sW^*UHDAve#m-^*AEF?uxw@doA`_?6ufy zvDad+^>u3b=yUd3?6n@n!`Gj)*J7{5UW>gJdoA`_?6tmLFZWxp*J7`=kA{PsvDad+ z#a@fO7JDuBTI{tBqL_Pa*lV%Z+QY)Zj_kGAYq8g2uf<-Ay%u||gK6eYEB0FKwO#}- z{7E(ZNj3aQHK>?h8VWZIT`g$}4c%KP(^cip@c&FvIBjS&Ha3_vc4Qvc$BZ5Qz$D_B zNod||{ZJW_#-#lzZ66fZa>jn7j4jQW-WA_;1~qN3C@YP=N zSL@7L%v#h2*6M9T$!;v}8tUwyZr{=LzOjRvv3IALwV1Vjt63{pqP<`L{pWxCpZ^PA CoB>Gy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_367_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_367_states.bin.bz2 deleted file mode 100644 index 18a6d49871207a91671b9bbecd09e0a98f45fb6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 zcmZ`*TWl2989tY}cy~s#fwgx>XuWG%umP{uClwDHpb&6$0gAMf11sZ zGaAjD(VTzI|9#*8{j>j9r(Suv>-ENCum1*V2o+yG`}M~9jSp^A7Onrh(PeKBA>92E za*+@hf^8}Ef5$7=8c|dosDMJ}_kIC{6RxJ1Effl5FnD|E&g+xfGsrL6j|C(cl znRxE+gqC}G05NAu-@C>|-g0vl(VvIQ$ zvXNX5InP~#67WOo!3#0oRc=DCf63$>4gStbLWkpswahrdUl30lSUx5}G6#9rdUo#H z$dV(axK}*+r6U&O1-D)%NMKv&1$qvPX6`QL2QgP8ANK~Ox9t{bF6LvpfLj#te2n}s z>%~#l!d@JoDW6<2=qg!^=SFBLzKFSl1$=^~N+cQV;pIJT=-;J;R5{KEmxVa5t)=B(YdQ*QlQ?LIyWsP-#$d1%Xv+8Et-w z7A-NYb)HH=g3M4fh8NIeZh$vqk+;Y-4N9Tc*3rA#)ojh0{QjJ{2Yggd7QN8wIhca%K-1>@!Vxf_#hR9 zI>`r7kkB@!SVFrq!4H(ux>#@M2+lOL!wQ9+^LRc4<~OvM6s;6<*QOnOE>Am3 z0U_qG?As``w8I8wTKs8o$#!GYv7u>dw#1{ zHS|`^cWYH{23Zxb508-N=sD*3RA7FQM0^OrBx{K8^(zE1cj&?p3+TKBee3;RDMUB3{ckbk5ARp&7z|p^ND-^pI=1a8p*IVw?)x&nJk;g?<{sSJkb}lYK<2|)f(`X@zhHgR0V2I zxmz9?+A_tJ@KajaCxvp63=D_L899V2sZ(ue9KD61PtHdgc>jWdA^FD>|7sXfWuAe% zO5g}C3gE}^VuT&fm8??JOgy)blJ^arDQfVN+Au0P;tpAp>-daP!kLCqbE-`-{R6u4 zC7p|-j}h;Zl_azgK8~MGRLP5C|LBf2EK?O*-^j5{aF*xIxzMT-+ybteGxY>mOTn#M z)@7eqofr>>b>J-xthr+57*&8jn=S9EnqL|ELkdkI8xGv~*Lb7YQ60mNtV+0Q;(3SM zp`z8ipA1^f4OF%6TY)74rK}NJjCic6khXlqvaHlSnXmn5(l_)c2KL-7Qo!GKbYB40V`fKYXed<4D*;Ks1hx4&ERe3ZaX32)R{ z+9E1m&wW?9-HhY|W%ZIgx@4fL$rS<0vPTr$`~bx8K?Fxe2>g}z1rS#?9>q$bJg>YW zugh1<2@Q5YFIM-G+2LE5zXond{DBlK;=3_jHeTl}LH7VpthIZ1$N;g2#v|;eyWDZqCB~w($Oow8)1Y1VMssD%5oy zTn_Obq5Mvn`q3bKF@PZ{2ae~KHa)E#gQpE^SxeQX&l(MF05rEw#QC^XE$uzQ2l{zE1bbMVCzY8wR1DJMp|Nwt_A&jS*Uz%ytKOz;^0t0V z+)zvif45+J3I<`jmMPi3MEIc+C3{v3y${}1kk+2YaMY_U*r-qgA7%)2!2wbmFxNFq zEWz9)fNz(3Ydw|r5WZOo3C^hkRP|L$U0jMdch%b(_;ui^j$CHxFhn-uzx#Ri@YLqt G%zpu4Rqjmy diff --git a/client/resources/hardnested_tables/bitflip_0_367_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_367_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08c31153365ebdaf62319aaec612c7c2448f20a8 GIT binary patch literal 26933 zcmeH~-)|gO701t=Upu=qbI%@s`XOqQtX_Pwc&;}?J6IYbVs7bX&JOnkN zE7AuGNExIGDuK}Qg7U@|gj6+=@C%|yAnhN3kYCWI5|aG@5-*fZLo`*>_VOJ&DV?Dp zK!A8SE7>z==l(e7d(P+FS!a4>{0r@$Pk)iS#6l5Q#fsa>x;k}VMGmZfi6 zxSQafRYi!zFIqLdnSC|Hzjr>KxgIpt)BV)+w+uqA()3hXr(-Fk8E+W)HP_$jQMsCl z)GT)>Bnz9l+$0-U2cgbma6-qqs{$r(394MtJ-0%Rj%|E#GV`&Pl5>x)E3AJPC*DVx zeDftHcQu>qu5r(^;9bOt1tq=Ha4Uf9@yOPPX>7~M+}fvGAvWA!GfgVNmzaB0vWC?} z_P9es)+oWJviCA^i^`B#`L(n=s<_8<+*aefSlLkP~@P`|=GhjBlTnM<6w4R}Aot5ljYT?fx?_!Bzku#|fM z8L<%3uwJwDWoYev0s$@Jda#-*Xc=VjgpXD@sVI0FjFg+?Z;-zu^3iCM!tGFRBlkU; ztU+53A&tVbWoUw^6ots&Fh8d-^$5dA9VQJSyHyVAf21I7 zHH;~2Qn*SHsw7qoDt?`? zWvR5eC+r2jH4zdt364Nctz%SEMXbLNBVH4M)o;{GI)&th(*7KXddV86e>);iu-9S_jTOYYlbGTa&qDvh8pu4Q{9+v zLE$SrV65=4?l$;iq;;pkt;KyDW8w3>{hX(`%9zFVVCLSek1lMK}`j1{+@ zo=0h;s&_TIfneV_m~Q#Bua8bm{+QdOfc&8}p@aSY;56phRze8W_vkX&1J|1+>v%R4 z#j|$-Ee1YMpcj4W5GQ-rxmSX^bYBh2VHYQ&U!yL`?OIVQD?-oDh<7$Dl@*ht?%hha zUWdc>ooeJbh=OZ&*v1x4ghU;^-2x&PEHop>%~&~Ivd}1Y8nc(s4kd25)1J5WXpmUp zhKg3Pfp;>zX1NI5&MNN>-OdGx8H zT1jpv@!!6ni`^-NJ8Qhnw8sp%zF6j#hi1Jn!<~x($2#J{$bC9~2tpn@W(=KsVi%ou zc|TVxX8^$+CmlFh-(3$*?&cKcO>TY#kS>qwCS-gO8951>Y-1L8Eo*+pWaMe1oZlUAOpv4OLhHy zfHS?_;djv@mYK{4VBNd)U%{H`O?Yt;J#%rmg8EJV%(T8&)0^P4f``!meS9+A@-_M+ zy>a{th;D3)sAM8oc1(+Tn%F5eV3XbhCnpAhPo|ilaji z5k%g5O_WpQZ{OAg5jjQVMN3|^WukO?y;j{L{5AOX7OMFS? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_36d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_36d_states.bin.bz2 deleted file mode 100644 index fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4981 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 diff --git a/client/resources/hardnested_tables/bitflip_0_36d_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_36d_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b315cfd6097ff70103efe6f78b2789a1d8e17d90 GIT binary patch literal 29127 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 diff --git a/client/resources/hardnested_tables/bitflip_0_36f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_36f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c7380444ac75b1e664e239b7bc16c474037613bd GIT binary patch literal 18288 zcmeI4PiP!<6vy9hW@odTo&9|$T@tc?lAUa7jizZ9nqtsMgGID0Eh&aZsnIQ{6jY2N zc+l1Xizfr=$zH@%yjk=jh(T$3RS&uKB;=sSLV_(*wDsqkO`2cZK`0XHBeP!0+W0H1Z(Y>LY1ad#cZ*Gs~a@zuD{o14 zeo_EA{lyPy)Wqae7y#;Q`1#1G#|w)1)a!hruQ-$im8{gfZ%BWsIMNbMdc%6vML;L8 z?rA1+2u-KROFp6u=R_~C&9t%;%;KWIkoA)kvqzI?^vOK`@gKD-J_;pW?%fNrH3D@0bc2b8*_T47t~orP;fyFGlZ~G0{P!z${DH0k;BytIC3|KkN5;* zdJ>o|&0wX%unhJ0V7~M^rnt~ib)p`t#HTSw(QGJu?(xRKDsJuKDs*sGoyNRVk6S~# zH9e%Mlf8PN!UfC`G4sA8g$W%!%o#tyYX`StWsi^J<|FfXYajEf81pV@oB>sMOR$91 z;Q-XV1gbUp^<_QCh3R8%VLKLjy(`h<+WrzNoP%lW z24UzS8u&r462bv94r=kXKN4~p%dL=WF#`gF+eq7(0np(Pbm%c&D(a!vuvqLuRKAi_ z^lQDMb!~(*%VW*wP0X{*6?XOH4o-oEWdxE!ExPc zV7YO)8gtvo>`dB*hp;?ekCz8$K|7PA-G0vY{Ox`b)jnpaapwv9xT@`DaT+%}Odrl> zS<;cJ{d=!iY{xvhJ#^Xt*8d;D&|e2cDWa77Xf2`?=_&U&ghVN#6j6$i&nesZ!B%>T z^c3kS(o?qc%d+$o=_%4vq^C$vXbUc@D8zuv!=X+RE#eo85?cVBI?<$SF>+g{-Klt}sm%73ti=)6WRXF-maaio7u&51eXNlAmWM^>4-Mz< z4htL6cU1%L_fw)Tox9BCCSRw{rB(@M@fF)8pFWY?>Ii5x60Mm1obNx_&G$3qM1$tXS)i{~`;IVi#6$NV}0 z3h+c(>a^fXQ;R`~qteMM{Xeiakt$#iq8^H@vooK<&c;dueOp(H1^ zy|=EHH;0%+dxNY&65bd*z@LY8Yl%C=dQg}O*dB5!1vC@ql@^iCx&b!yRuxFxyw~0> z2cfs#Q$@5$6EvT&d)gf-3MJ=EDg!j?0(f!|^x#BdQ#%SzTEk@yiuO@XByi+d&5EMG zq~3B(@6_kAwJD-wiqpDxS?kDEC{GA2E*V#pB$venRT+wvl$Vx4N`5=w^b2o(QN;FT zbn<8Qa^4K=E<#4Lr?Q`rUI^3erM7q3;WTPIB=Y+8X-Tb=eN#d|_>*3O_$@Fg0KCVq zvZGD9j}7R4c*^Rq6(LJTOv+TX!*$6!Djc%g%SFCjC1T?hxaYPgdD0wpOpkaE_z`#p z{JYsh=yniHLG-Kch1kH&8epCJ27AcRmiftNfbD&NCNfT)NWeH_lFPd>MWD=(a=Ft1 zZ}j!F9n7w@0*}~9ZR&(*RI1w470H@mCMdXc>5@9W4{omlNyxlmmLxk z`qSCN>}Zs($&-cxb&&pm=!Vf6(6y!jWH)>cQK#0*>@_?;om{R4(?G6LWwall#JSDm z#dop~A@=jc{51ZINjYw>0P9#4%*+c!DCLWzCbQ&0w@k8Q`ZhkH({glIj2?cN?~sCW zB-)>M-;+YAk0$Ey<`#o2Rh`@v;LQLEbpl7Bgo8&{&XOJw9z~kInl)vA zrefW)=TRli$!><_6O%%1tBntx)QMh4^2!`3r=ZG*?{(k8n-)j6GVHv&OUqcBT~|qb z+&Amgv)uw?m+OkCA?`*APqA}GcdzmyY|32vcu3Ka%C&V$Ff`nqnGt0griBESb zsT!g_?QQ|rg|*}$p>z8`%(;o2X386Xp|Dyc2Fvj#CC+jj#;a^K`G#*m``%7&b(dW) zHZ^%q0!|gMiNxmHbvFT+K*D%5%dyw3NKwpJqRnViyKa&)!e5Aqtl6*fi>?+Mo~pK0 z+vYjslk7??upy6Ut=EJ+5io&#RCbd|eWsg4ud`wOg_6dt^v}F!^aG?9CR?4hfqack zw8_CHtLY)5uyZalE?PxnPcd4f(A!QO9MB@jtqcaK>&iU>GwSm1MTP^u+UTX zJ;xxc65gZe!yKfv^#S&GqlJ!#=DRy>*1F_&@I3o3pG^a=mwJUOHSm%xziB7G#c-0% z8Rxs}m7Uhz#5VIn%&r*pyr2%H(o1^I^QX>x?~?oHtu=j^Bg^qjIE{Qqn6csC(?PQc zp2uLSfXm)@Nw-m{$C9BsOCF_Z$+)DMY6^nJVCq3#Sx@5v>-ev4F8<)pCcc-Hh=6oZ zmL_=!P-B$UyeXj%Pa4uTd7F82k;EQ35~9||vlgR!i;|s53dgu*M&}(Z;Vff4rB+Dt zm0A?FhD+9JMp?EwjEqfz;539|8O2|Y2g+Cjn9-7&zOawYMD}eW_AH6ZE)fkr;=cqd z(0x#nDqORhhqLDWzL#=-r-Y~*UT3g4r2h`GEaxSDBPvhGIEh)s65 zI+`>WZ5$xE%0UM&Ul}DfdYgRYag{aOxW=23(Np`F4nR?ei>F*OcXXFW;BC_3MzQ}jh;Xoa;2lnK_7na&Qa`MblRdLMKz1;rP0^EADM6TH)6-_89Rz&417YT z(c3~-b;f86O}}(EuXC(T&!f5Ybmrp58S}YLH{AHV8oPufeqFR9~ne+MwYCBy_4pRBO0Mbu-) zsKouI6*y=GyoM9(7^1LFUqoCCg3D00HPLOz(})U6ayYDZ(k+MeA{UE26??1mKJvTH zhwzI|hw(o4UhhUrF58}>IFTR%@8RJLHd{n58APw<04cFE=IIoQLaB0uXkOC5bRQr( zXhhBGUR%BU8dVZIOR&{5pQgJ%(kl8EvCF)L_;@zap|Wvds7iNfo%2#ZNE#tvp)I}h zVNs0b2s=qm@f(z|C$*1F{5JBA_s()caFidaT-c@N&{Mnc{26qkOy^UDSe}eG$&vg8 z#P!9L01v~kzlln2cY$dEerN zjhCG-6PSz7V={NbcQRJ2ZO1ODlis&9FqeSqY@Y1`WgLU+MhC4@LT@2~s2BGN&c-L` zC6RS(%@+0`RZ>!fgz*HmTFrM$@tT#Ed>OviQT->XB3UkuDpge=Ag|DCH&?Ly-P?Le zEb$^SfXCy>UUwm0fwC7@e#_c%(8$%S3G6^wiPUV_6vlZ- z6PXQ`dfQ~=6~LK1mR&&us<{$GZ*OeI9H(r1Pk7JGdkI0wqnNg)t#slK@rgv5tu?Bd zMy_QiohFd(r|>0sskgmI6fhq+J3gS)a@(Px zXd4I+|A}d0DMq>b!aM|Sq51Z2IJ5kQ2|bMe^u2`iZ7+3ukeZ z&zm4m$MbnBO0%-3tYnm2s#!%?mqas|mO@qXgWh9`qfPgDW8D!0Y#!u^J@2}4C$Wp` z&n~xCojklo-gz}6paUPo%4sS#Hns#$suO;F7aHR{N#u`)VnvPe!Lkr9uV}+srzZBy7T`3`$}snAmhSAcI|Pq z^Hxgi?YPDX@^j)NK}{h}P@7$g0`-QLT-IZe6cAI|N!$EDckEm?-u4kMo$@Z_U5NC3 zJlaF!oK0$HJwcHlp;QLJ`{-9}Km0uDv}#juB=(N?R$QZ^AcbQ8B^tBIIU|a(K*5NU z+*8>NvN7GH#i=TfI1TkAIJ7?)PN45+uNbz|*%rfjlg_Th32KU>QR(V9L%ZCpj^8q66hvOOgdkzl8rRFxFN z-!_LpeiU{r#LlzX(d=kb(~?JJ45S_eLLl!IWWA1sKYmJ;@bF#PZLDetz*CkhfE5}? zj*zpw{sQ56SC1T}RUl?k`$W6QLpmpa$}z5M=?7>e-IOh$rX*qt_<6Qkp-D3uo9)n= z;v>g3E=bI2QFB@a46=_jWrv3&E|N{`S9*a&SEA3?^#20f_TacYIkm=y3NK)}2Us+6 zp@9+M1LP>o99l+K6HPEM4(iSFcs?C8W)+JqBXQ;URJB@|Y8l}(7=3Y}9|4mgFtlQ2 zc($k_bCjr5T^cheJDRNKD?JLk)XH1x80%zqMh!z zG%ndJ6RhQIjmw}=;^J8=t=LdU>!jvTF0;)g`Xfs1PLI+u#og)t0r-vK2BAk~Q^>$o ztQ~loS!OXxNCsIrJS2LeJ+5UfOD*zR(u}DTvZ;+~(vqzeRJ0h*aYD^8qy>pKg<4Ie zYu4k6SU$lch}&{NP}3LUkIB~06$>XLV%oafZ~U?x)iPWm|6`0>5gw>`5c6gv0v(nV zhQ&l+B1vIkDVGXgK97sT^zwQ-Ad!J`8G?8Mv_0xKYX5(R@3oSB700)#1f!)_iY*pD zv-)0taoC06r;OL|#>$-sACI*DZEU!<_9ORSKmW|3e|y+a>;K1x!JqCFU$h@t?ejM| z4PxDOgsi!qtvbwF*j*jFw#xqbgR;_2uI~NgSt{s$PDy*mYyC=4=Nqb^8g_ZE2y&3{ zJXM~Dn}_OfIRvpMXmVV*?2GVbuVWSx^cOq29zp(RH_x3<^zGz9UmuYcK0P=;pXH2r z{!W&NAg#>O8We#qOG`OtGX_(T(15i3!&Oh+mHDeFn_nMF%Wz!FNgEq6=q5^Telynn zB-`^g;%x7Z|Hs2KGxQ2^F8=eGJ%VQ`@`6*%Vx+Jr^zzw>hT25kJpF@sf_5kC7m-N* zJ|-qrW;f`3v;HqNGvkcrQJ}R#xG4A$uy1I7P40eq_wRvU|DJI8FO{C_*FF1xb&N+R&f=|78;{QhCPBqts5@S|#)YEt@TF5dNdu53-aUCtb^N=Grb zJ4LO9b5+)aDB9NcTP=U6E-#|j*?x|(jO^!Xu5WCPg34JXcR=rF`DXPC5p{9B4ba93 zkzYD0dM8Qc#%EW*v;%K4hTi{i@y*-4A052@cso5m-#1ryd;cVDY|O56`~9nL$ElRV zp0@~hCARNZ0vmPnGy6X{O|$)KK%C8q`f6O7@F!epjr8zzi{kKyzJqu7sqF5C>$3CL zQpIKcUpG))=hflrvj4e}?A=bQ)TsiVqYBT-7E^8X| z9$k2c`%|Y*_w(K???O!0ivMa-hwBYhtg3TwE79TtHVgd7xMs9EK_{H|B(Q+M&AANN4xTbY~`}uEaSO1gqsYiiT zV@L1|`@>nqmrk2c?$}R5jsMMjEeC6`D$l#xHOk!B3!v=d$CK5^scnUm1XN&$`q;UB z6#KaFZd7{?ez?|P59Y)@yYYp@+&*%H++e-<*TlR{vE;UA-B7u%apq^BUY zy@gk!?w_o`^w=YBdG=w9T^saxFATb#UYDP7&fm=Xww}GoXdiubZ~s0~qx=bUHmBod znP}?<_Hsb>5&OY>Wwz_p*)vtE9qWDhU;L|RA2Pn04Nv>7O-k>t9{3%!{v7}Msx=*n z+IMNnwRX1eYx(&yQ^O$kwCGXb&>xO{kb-TS8+mK|FIj});EkNGbdBd6*f;L25!L~r zx?@gS=$TfOm(F;kW+bi@l#jB8=@!p&VQp?axwR74a|cJwD8)>RZRJkkT1}1FeSUcr@($(w7&ET0us)2icHLkb1HxwbSEK&l!R7mPTg2H3j_nk|f0hLSo2 z_NVCvCdw+niL}vj>_Cw%c)8Lc$oVm`XBI#Dl`EQX2jQgoK1pj&JsCmvnS<(%$af%)Ix$-}m0? zh4-4ho$sD313wnuevQFsd$h|d!7>zr1_FgRfy`q@a;QWhX+Szy%bvh!n0>Sc1$1j* z$6poc;E8JtU8yXHi*2)uI9wZ6e8$LGe_afmxB1l_a=$cC_6^Wec^gOK!4`%B;!? zr~G`jPZ_}si`%GN$E6XA7KDcTCbA(PgEzRWTD#C+@}Wlo%RIK;=^yl-1rSH}gOY6b zknDthQd#J84F7yGg~k_$SjLd6U=&JwjaPGYK%nh z#B2S7VYL#J!WN^S)tLhXgf4q%kOgbH9d*>1XGN8Yd8sQOquWQ^rOzv`vd9MXCep1^ zdGtV68ZJ4$N62oV)(+;<2I>Wjf|&>UN;MJQ#d^R0Y!a{c`~6#SWSy8w(>apG*AcL0 z9<^|oG8rl(h%X0E11X3E`g19wk}u-7DeLUGBa+dtf~Z~!i}a_d-qMSM`}Eryw_j|u zE<@C%i0e@i={;tP5jGLfD8y~547ad2Xy-JHnXOuXKX1!F8ZSEs41!|^qK9TI(~P^j zMs=Un>+=XZ(#ng5sWJcyC$MxVX5LAuQ%apuP6z|WKTV3Ao|xI4M7A@G&^m?F$@f-S#7bGb=70Hv?go~1-soQ%%o_9P|OjwSD_ zh(_KKOs-Sc@>=g8z$>a-i)vUIae7@h>Ia&`O7HXqtnH3ESfo1Rl%-4+&^3Wcbq@19 zb$ZM&Wux;c<>`|Q8%TiH^iFW8cQA}OzOGr;%~dy5bwl6SNvyT(Zb9vGGOT99gl9$U z*#)uHMW*2p*N%r+P+Hocuet>A4P$)77=&TIGR+wtD(kZ8n>@=It2r8qF>gqo)}@=) zjjd(&H1~hv@|)tNtZ>zHeBDcAel!~WCdhevE?DL5cXIBDUB1JBb7D2wE6sp6-SRJj zS+_V4yD}|y_N`+EZp)JC649#bLKl|-JG}kpr#{~5_War68}tI+GBG{r9UOU*j6H!? z?(O>6wZz|mYw5dWJ0F$KoT9cY9k$HAo28?kW12=;#~%)9S(?6Wn#(2+b+M$O z*-zIF1z)4!s3dsQPb(_0D&!a!D{Lw@(%~E(HkBrz;@m>sUSb%gr0Ig|_XM^~>AySy zPrwuK1Uvyxz!UHUJONL@6YvB)0Z+ga@B};oPrwuK1Uvyxz!UHUJONL@6YvB)0Z-t6 PB=Gkpjy`|=@F4sbDYe8t literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_3b1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_3b1_states.bin.bz2 deleted file mode 100644 index 15195d21385b0eede73fd2ebfdf61354647a4812..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12468 zcmY+K3s6&O+UHRO1rj1iLdYnXK#(LLAtqC3aS;wd2+-zsa$5z0Nq0!^?1wb&hX|-# z5=fvWAwghl<%9%tLoN-wwu=`C*a7XCfQjFXJM%5r*o} zyzldW{{P?eW=j+YQ?kVIJh49%ld+|;_k;T57w1%dS$CL+{kCmu+P1@QhhJgQxq!u# z`Z_=KUcUrW!#T2z$TIZV{epL99q#k%3krycARh+({I;Isf=u?#29V3{W3wZ;`Uo_k zIib%l$d6@?GnokNZ71S;{Nq(wx`A!dwq6;cH!3iNSjR6EGFBTLdhE?4=s@vzR59e=8Oo(3jRveUxJP$JSn-Dy(g}id4$k(iz(ospCA&N zt06<>g4J=w-U%4Aa-JMiumUzsfWLl3dxk1(i8%PgoUqz`)?zicx_$6>}L~v0yn{ zRkEm5L56N=$3hYk1uvP)Y=I1T>mZUVu?w&YB@=>lN?dcR1cTGK#}dt60b~_pR1l<4 zNN^aY)yeWq4`#cNTO9Ay~$zi9F zp(@Bl*i0DuE|P2b04eIFvH*o7-#QqQr);{d1o9#u^}Wi0noG*T{EW#r>R;7=@qCP3 z;I2lqKezzT2KiQysJRvy3c13s8@+VHO+?0aKn)Cg#4JTgX}j^7^Y{Fp6UM@b^dj<;gS{zg*2?|isQ^G>eF~zQV4q-tsW;Y z6y`&x(90QWzR)0up)=3qi4nWkVDFXDpWM*p-EBh@=(sJv`zVLA* z+b85k&NaO0<2}khbGVj;%ZFCa*Tn36w3@Itu3pjY+L#c{9-`-a_gd03NqG5!5 zN6>7B?*o~q?DL^*xsW~{Ydq&{q3LwWK_C!nBvCD`qE7at9f#0@GKnKh(aA?9Ob@iu z&zH3|3lPl4-~mXcLWa+E`;*JJ&d2j@*4(^a%JrSx#hVEt%lh1o;`*A9D%k_#E70V)-NJiddO*`pk z_XuTL0v7>fJ=k&nbRzn z5N({7e5}Ra1HMxvn+!N&Uz8x?YL00XOg?YeeuLu+dLB>>eS)4whTnt)W@8kElqf)184jR-?@sd1DOL z&6b-kjsH2J5npW+HVB&}YPPp;wN*oz%x#>)*{|jWyt{k8kZKfY25?5u!0LhwDTKKo zd2E7!B@f{j1t7La_A;2I7Dx#Oyh1%bnD1GsL|3KCj&U6TWN>6p?YA7guU$5JEbjUp zBa!zrI-cyaN(;i|p=#izx?`objd1ZLWLK%s5*$+nts$&eO-UenE((Lg;V=NaTsj%e zBEb=>v;fm zCvuv=%nrN9_$eaQs1Cj$qvR!;7aG^e9h^(beo`Dh+8I7-chac~MFejrz{M&Q zQpmtyFSSZ+7`WN!6lLg_sJ{|ZveYAX_?nd4fiVn{v5w$IC?93a$@I(oh7+i|27V5{HiSjC{3hxBRoUF;Q!O~_2b-{CKd(MFm-n!!9p>iC)mc?y0~|09eZ zyqQ`q$(|9>n(f)sj({lgOjs4zbTEQu$Efng5vEQvH~B5gUh-@3k-vNhRGWnFP^+o+ z!=FU8AOMgU0AVAwDjmU^a=;e|ZTM&+J%wTtlG_PSBiCYfdR#vClHpRSar)ZsL(w~j z_!%aB#&W{xyfvYnr^7HIm1#VL1GhYTS({CNjdh*V9JMC|!F-2;UZF-@YHKY=V!G*q zH7&ByI;0p&N1gBlhL*d#;eyneE+`?WJ`RhD+bDj*+YObFb;EI)g>V7MXwpH;|=G z&MZ;@6e5pD26T-Vz#rxfh0`B`)N$w zu`E(jg2fRNgpH2lPci`RVF zw(oJo&9JjAXLWiW**-!6$hgBkf{M>|I*6HNv2XB+Ep*dhP&}AD?c6#ZJc!U{d)o91 z@#o~RTqkH@#OBa*6hK})R;nK`b(zMI*%E^nwBTAwd90KG1+g(ljJ9j02T7WgToygw zf+G)?$0M*R{Qy%TM(f0AgFvNfZW&9oh|<_s4JnkTu{*8?I!K@KXLjp7^OR=69snRL z;C+E+WyrPx(0<<9%Mot7#ym-BIfdXlH4A|V?y;@oIjhY5SS@stl07}hl>KI;o+b?a z#9Al{2|qHYBITb32*c&uhVlzcNdSj|*xkZ=XZm!SUxpxzLWO#w49L%^u|;z)2M8C< z(%c9IKok>O9NZK^!c=>niaaCXF{3cBhchTO(_)0VAP@bW|XGJpUx1CJCU%h9MGX zl^2Gk_WSrkQ#4dCn=r(R$}gRRWDaH^YdFv_&0|kCOlPcuM`eS|M2;0bn(b3G+jWKl zbk2gaV>qu&z)8v*)3T?cLh{=22DpM6B{_jviR1~L%TX_1^eMxAyVaDCHV5n__w)(TpsDxE~d zp65V{5_>TJW5q}6TUNS)gK z?K@W^H`EJ>nck}868{(Bw<9{2YjjF1oFeQv71plAI(!K|JIlUKSallUe-xve2ARru z1P)+drzbaOAKGbb&gmg72_j^UN6_4EWoi}mrbTEx$=N(Q7d+(VuR%xyE+dJ0DR~A%|3R=Zr>8niJM*pU;KD0ufEe{sTmiMfoWp3YeTeWg@ba~~IwWR^8l#beuPPD$UJWy&&+ z$0{wIR1OOe*bLy&0BXx(F<2cPRs-1!^6I#sCDbHTGpCE^>)Jy&CHiD#{)$aNn2a0` zlUZtgrDM$-hRH_m&=Xdg{(>*GHG>qfjx$G_ulVEb5o)rV`5l?W0(R zz&<&TY1B!fMqg0+UjJF%N8&-IGCIPDE{}|$lM`tHR;NWAJeIA5GXEKT!-+3zPw2+m zVM}4rZD$?*6@gded5KmLSrS}^HYJi27W*!AY_@f7luZZFa{eem#sJvUPS~Zu8UdMU z{9M?i(6u=dW`~!CBg`44T&J}i0Jy3SFVq3|;C%9E6oBt=%UPpX2rAFg5B%>yHtZGf z9e4|p;L4|Kft?zi0;*Jpt38cYSEbL_uK6^Fi;g6RC6TIl&*~BZD*HV)6s#xJs{6M z>QCMmE(R%~rZH_Gq#~A+=Zavv&i0IH@o-RX87H_UsywBdy?~{b2gxL+ae)R)tSH-0 zRLBHYC02zbtjHwIus2jA3}f`vL@oYUs`8qB6$c^k=wVkQn9-+fk6u` zRgT8(ER6Y-0OugM#}TcQ-c%gVU;i~|EOmfoNdR;*GO)qP;5!X7$846}I9?-*S~{s| zLts;Pb1UTN$#Vj@z)uAt0X)?3UFaUTG@axdI29a@ttT;2%u@m+*l0f13EF)pj|7Gq z7JU^sUZ7!eiMZm}#>1NmSzav?$PrOJN=jhI4694045ooLX0kFaq26!?Qel7V<&XuG zqxJ2~V$>rQE-HL1c?ro>z~+epl?^ntv!n%FMwZPjrQp4EM)qlrWan!ut#1wk+H*l$ z(T=jg2r0=HMbeBFkY@|6j4TZt!L@q@dMO6rNV4=rIqp)!hQGH1&f%1B`)K|Vd?+}_ z<730TSJ9Q=M#oTJe}ey#fcp)35@9?U{6v)RrE84SA_kHyP_cwR0O7+PZ)doYBabCA zawcPm;(~~7_`XeJ5#Ge#5$w~0u(#qQg>YlyC_gdHG+a&!g}sodGVs)mY!@++HD3@W zg?>x4HVKdg$qwdBKuv?N;G!X`BYapPfiZ~=wk$0p07n4i4do04vPb(rb@w?tNzT8^ zSH5eA{f}vPJ{`CN`0ZUJG;Gb@8XtdW>kI6aTYX#kegRt!`=Oa({BxjRKtSFW!ntrT zI6Q%1I_$?z2-pG=n*HosS$#y18Q}+I?e*JX*xDTA=jRu&EjtS#O`&6BceVnf0LW{^yBT}oVUg{elRE3pp zq+dul%X#sC;L+dyA9(aD`xD!xim7m^J#Sl&{cm_QWj{$FxJZ!zWZ7joM1%me>|Cuk z_62_-7PMe(`o=d?E5||hhv^T8y26LOY0Vz5u$5IY&pp)PRX3XUoA_RpAGr8JYLykUjIOOiA5EVCJ_BKP zA%VOx>S?a&*deZnX2xkIOdZ>CX7 zAhR5UEhh<>jd|l}sy5q8bs?E&eL49rbhYX+3IG4+Mw+W@|CbwWGQw|qHt3nvQr8;* zcoqFUv_XA^YTQ(>anCT_)+gKv%>}~6mI*kuvX^wV5yHP|Ev&NLCo)*VY|_39la>6Pb-mJ9%l4t*ta%*O2)xMb-pur0 z=+r5s9x3q{ZNKRTwyKkvsLdOppo}m!GP`eR)?;*2zhNUjb80^VhXlC$qpcM$O5ZXq z$C@?1*?}y*T0jH>j0bv-c*d;@xiZx~f?? zE#}t|HX*|yO)+80LD)ECn$Q%-JuPI(^G9;cH%CUT;#|}0*QTCPDc`p>OzAm zZh26%D33nS;m^0}l*V{Ck{M~Rvbehpvm^^u<=9cyhSxB*Sm*@_Wt#Z{f_sEQ@WE}O zs^bzPoVxuwnd80=N;yVE!)PMYNcJqK*i<8ojLh*ctE3!`;wwZlIt_>I43=o-3RQ65 zq$ko7Q!petc{JBnXp#nK7&}U*C0HX}%fjJU3q9~>otN+8GcB=sg<60hXjcE?_t6SM z>Yrk^{}YkflotKi_BPtCevK|hWS)F>ntb80mT!JdU8(Raxwza-*yOp`p0&u(=+NC- zxWJoBf<#7@p$9{(*22x4&Op6JOAJ@!{zw-6@Lp~EIXK)R&Li8%qOe+k{4?m}eB zibJ6{dRa-Iiw*NknW%Gaw-&}l67@>GP6ipX?tXj@BmIV7B$E(fShVsREUF-{RJd=n(5~61aJ>A_`fe$c zO+rqAwSLE#b|sU3Fn<+CD#utWD(aV(Q!`W~;->@{6cR;@5ajk@ucn6JC044MRS5V| z!4$+jjtq9fE+8Zjz(2`en(SMROsG^@D`EGeCR|ryV6Wk z&q0d>v?g-Q`1&AZaK`#IgYvuVTYHNRkMH86=E*boLmY81#fP?_fEHM05`N7piMR^o zS~7eAQ|fGQB1xwGJK+i>7m6-TV^2Nj#l1G=pTn z(EbY8quH<6i}u_3yiK-y9Bn<#zRVXcQcD*uar)GI8LR?b5h=|kw3fpZdySvbbPak5 zu-{L<4-mpTF$zNpA@m1=lpL7ZBN1Q{i?J(Wp`8RXC#yJT>ZoDIm1Xo@#`Iu)jn$v* z#aIYlP-F{Qg=aJJY@XrB`CVD=5!QD>&BvJ`aKvXR0(ElEvIU2iQY$ICW2qIVSr^TjGLvvQ zd?=_G@M>ZG8HQUO!7G3_#%~?wAYc+$ov;ir->aAFT+b?&R?_Dsrdxqb11)(wrzA{K z6SLh~nOw1v0*Zlk?Q?aXEANKJJ-nja!-UNM>QOYXoaw)w8H?JMdHubYf!<_!mKGK4 zbxy0mK8->vRAkwq(B?^lpxG-7h4BsAUO)st?0{!eu*HN8n4C3SX)6xC0zIpPiLpzi z*2Sw~=wvC>hD%#%NqIdOAiPYVQhPdEj+1=b7l0LMw8H8%e<43Gl*)s#uCx#sm4~3(K^UpoCDvgTSgPL z@LMBT?$JKa2u3fDH{H-2CFZ}(GnW%zuqN2KSq&GblJewa7kdOY1BuXLRU!l3ocJ3f z>N_45@{Hc9&^|I$nv?fhAZCUwK3nkGTE<!Sk#!dZISLncvjA#neWgbJ{eF zEUOMegfS$80#*-KjJC>%En`rth&&QL?MxWVmf#4}&hT*{+l%cd;d0=>BNvk($R5Rl zsactTSOyDTDGb4wFpg_6uOl??P2;TnZFDAFiVH~yQxyO%48jO^$Fhp4uvwXn;r%2k z>pJly#d^(Ji6xIv$Ven{e}};EO;&-5uzXD89;LvTkf}0VPZ)ZpSt!(kVK4D^^Tif; zq1ddK+~Z*~S|=WIGc(_6-_PfwC1e^@l%pR8z-?#v!lvScm>H&&!WZz{(Xy`a!Gr}T zr^%@YJK%9af@c)l$;`DnnH>uz35>*Xu$RC!jgaA5HYM-egq9*McX%xf7A-+0V8fY{ ztdPe|i@8JovxsQxHH`=!x9smb!WHEkFbNC$vadOsQUsvKac9>fcv{I|*08`;XvHu= zM6UwOBm}7lZ$GaeJS;Cv7<0rD=3*+rqXt1=x6vGAp9u+wiW?^+s)&VgIE{}Z#lZ7d zm^gFkDl5Dln#TIdvt*+1WI`gyq6bKWAQ^SRmXV*qfk7gY;4bHMzz^7LX+&VDWkn(U zffi-%YyBm|3r*yMZTp(+43_TW^wsxS5}l~@{BM+q3_`I444NUaaTNjfEb1ie&fq6t zj}kPDIY2973uOO|649{I7Ugg(*;m$nn5qhwN4UjXeIPv0oTuRJSiVdgX|<8hD$eHB z^Dl0&Cz_Y(L)(N+S0l=Fg|P8^@{ut{{wcKi zATp5u0zV(ZmGI!$=T(Qoxf5E5cEjy&r&}RQ-z(%^#Y0j^iL;0?VKO+nwPHm zSv^_vKJLnPUkF|WgqI^!II@fuZQaEQOnCe?sFye$@a85eDI_|brqaPP@`|v9h&Cu+ z8QG%L%tb#9?RcDM%jF*BtM$=OQ5;gbkwI+6@xYGgwaA=e&pgj9lD3Qlon1q{ht^HE za*A7SPF-}15p=p*!zp-HqjzeVNvJzZUO`yJ2h|?t>8-caZ+55Ylt&hZjKr1mGcl~8 zov3h~p`FOsVxp`W6|B`r{OjoLO|}mnx71q0RH@9}3aL&eJl~jo2QGnVJUn2lFv25L z!g6uMH-vSSO5Jpfy=0YIo!Y5FE&t;1>)qKC;kTttLmi&6Bm^yy)`_6LPA9nBFw(0| zBfN$5UF`SfOV%2Gn(kzzyW|AHD_qe&*4L21mQh_T36ni!l}U`5JBM8fXS}k+*svtRT+Ra1#%V1y zmG2_QHwg9$5LUa7>{bRZGa1gUp(q<}8-~k!?Js27K&Gyo zFc`8eQ8R7tg>B6ayL*i59?NzR0?Ig29x2!}v)7xS#9jbZY>#_1iO~Ftc=Wdfq;s_% z+UhCawhA88=H196yR3s*9>P3p2G=ojEY7$6@FDUg$6lK0RGb$rg%1uWWK^%fCWwQj zB?_SpQ(~o%LJNB{yb+0a%VFA!PYU4+a0yB{BWbNptkKLsvOV7Y$dJ4-z6jK+R1jG z#Ngn+cLCPpAqeVYA>vRZ;t=c(GliT%pl?RX zeUaeHT4R?1oI)J26qez^!0=(FbuimqRu~l$;UEdZ$_fe7Xmbw%wgwgiR~`?Y=Xp?h z&1HhV-UJ+(b4LwU8oa88gQS_`=$gJEFc$QCZC~JN#_-L@SgCaG3KgWZjM1a`PAs}E z0ajLIxICUy#1V%ullVphEfGF{z{RRyR^AFkC=D~>oL*k|P{Ka_fMz5rhk@>ZXW(|j z(xO{xFW`u{)1uO8m;<5V10_0HYWNzGBce{Wil}z404Cp)jU0HADH~vl0C;>nazr!M zY>Rn66Cmp;`eMC0pl!?f*q^q)xx5v-W&4(ho#8vfQhx6jd9Lz(T>#8;$mh`f0Io5M z9I%DS?(^G13`nr+brCFUP{20gw)5a&eaGEhyRsTm5N+|;sWJsM7q4q_VGD}_cTCf$ z-6w)t`zEof++Ewe2L8;B`ToOxeq2`e;g;Np8kvfb`RvNmvvaA^`ny9L|ALC@x$^w= z#kVz;`&x!Zy9$~Sg*MGSMBN2T#_qRAzkSsI0aZRU-f~h9w^;<*PfQww7U21n{QLJ$ zM0I`fpyy8q5U&rk-G6(gI`fY|e&2TQ(uo+~k5|;hrzIy|)VV$(eyT_O{9xr9VJHQ0 z&32G}zyIr$&yEfHBMGm)SeRQ&t z_qwS5a|7M$DoWh-nrOOmBmG?Iht-JspO-&=v2BI0iBE{44s6RK*ubW%Fj#a;;E3J=6BR zT{yYE&z>w9L`J13zuhC57LBmV=`HW(o8E`?3k2T~e+_vO{4QYg$X~j@^(7bo*=1Rr zyHynFeU-F7cGmvjLF4r4LuKW{g^a8FZp^Np>8-4b;l8A9oS@PMlak`;0LNShtSIJf zgY>tYj}d1L-dIl531q%rBFJsEeXbO1BPI=lRE@V+X>dQtALx~qo67C?vC83@a%}-9 zD<5d5jh>v`FUM$J@tOB5(i8?IQGy%mF2sry;{GtRbKsAH6AZd@u<-MC+F$>WSlERt zLgu)*4>qS?m)}o${Bzn@UGknI)3e>q(duCr*7ae&xjsnTtjX=iok;175-0W(K0Wv` zsx#`|qdL^lgt33qocxN}cDktY=QPLnp#4FVbincSBlgpOfAM4Hk%Q0fe>l3Qr1HV~ z!;Dvy#Nyp!H=bUYdXJ&q6VZAqCOW;n)2~zTecnAdr*n*s_~)4?U;Q*s zd4ugym4A8k+pwB$HKp+3nD1^%*I=Ohc;ekO%fHc|R#hpURQOyyjDg-0g}9@$M_JXl zn}3S^yV7THo6KaSQUjl-&Bq=8?@@8hl1^+&)rp;6M~2sfhZZkk*5{aD)A6G3G-` zVPeBw@&FfWIl+kMx23en%8EoTzP!X!GT^ixTbIyB4@B9tr1pZ8w!04h9(pJJ^MRC@ zBmX36zWp(<%`J}b(QzX@X#0KAOY#S+4*Atcv)6 zS44@AjJN;e8fPPuFFEpkid{a|%_H_LczG84BE7Xe7fYHmoHaln(UD7UPk7G?H@|vy z+wxphHhb~E9^3RO?u+h$U0;TVYWMM8-|YP}=PTZ&)UUodz1{wS9aCdpOH1cj%AKxw z+=D{;!qZCXmjkko$^Y#|{qCO~f06rMj1;uzQa;%3|Dd>++l#D>CcQaR zm+{ZK6@qiiKLVisbI6Cdy6vldpW&pc-p}{2&t_?h2yeSc$w)yt`6k770&~C|`62na zHkL45l$Gc}3(eJ+`M2BXRJlYnlE{!Y`uQA%UA-d;iKC!U|1G0?q?Zz;x_(*sT{Wvl z(%RsQcf_Zd?rRHx?{$|Qy2hfa?L3ZN;jK930>3%ZTI~ECcn0up2%8+%Zd3&N@jIR`!6CcvKHB`EDC8@peQ|{f!UCSNR{kr_)jvCqBbg#yn0viQT+4 z+q>-SPCp`Wwx>tjeAwSlaTKKqgS1h~A>Or=p4rWd#$xRK8uIETxpPD%PLzL6|1x&| zL(i#_kl3dmi!B>#&o9_vy_2MPpZ+jW%v$?#?nY(hS>8VnygPKJuJ0ZH_1hw`1A~2t zNm(_Tl{c;_|KkHh8-p>J_)Yoq@TF{Dj%(QW$D|xd%sZBt82oR z(&-sx^2+G7{TV~i0q^dA39ddY{|^iY_#N0SAu9m4$0L= zf6%`3EtcGPnr=xO7TV98_`_NHaj@)92Pjd41Aq7?{`i4^$xA;x6#MZWq&9-&nVGV9 zS+{Z&7qVlr2ZJr*x_cKG+)q=t=NsmdcEyKTXoUm)`8p*c@4imOppd&~+XZd+5=T12 z3s2z0Nr@+LNl3i4cTiN=lS}WhW9QpW#A3UBi38;W*z#_2hqXZ@HzNWUYu zBneF7&qcYSUS+VS*;16-GTt({L$3U`04KNYS|dGOsVw;BGxI(6^=mz;|qr8 z?iZeDPxt?oPd$?l>5^H;)qSFn$%ypK@#f3vL)1Rl{&Qg$HO7_rXQM4Y~w+@b@ zYq&UY`?Op#Fpirw${Ta$I|WG!_;5(~Sa)t>k*G|nRJt#Byxci!D02{Y+yBvOY}DG9 z-&)^-tucs;SbEh}`n7Jr(kuJCe|0dbZ6Jy7p10m9FK_Ng_s7kin>XJ@%k8zs+I#V| zcmabUKa!^WA-6rZ@L^k&Kp>G%otEH!P&{mN-izuLi)LDF?a_{V#0wwyFKa3wJnDD1 GUjI)zux=Cp diff --git a/client/resources/hardnested_tables/bitflip_0_3b1_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_3b1_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a5259b6246dee7b88830b44cd7b0da33f3ee17f4 GIT binary patch literal 41275 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 CoB>Gy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_3b3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_3b3_states.bin.bz2 deleted file mode 100644 index 18a6d49871207a91671b9bbecd09e0a98f45fb6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 zcmZ`*TWl2989tY}cy~s#fwgx>XuWG%umP{uClwDHpb&6$0gAMf11sZ zGaAjD(VTzI|9#*8{j>j9r(Suv>-ENCum1*V2o+yG`}M~9jSp^A7Onrh(PeKBA>92E za*+@hf^8}Ef5$7=8c|dosDMJ}_kIC{6RxJ1Effl5FnD|E&g+xfGsrL6j|C(cl znRxE+gqC}G05NAu-@C>|-g0vl(VvIQ$ zvXNX5InP~#67WOo!3#0oRc=DCf63$>4gStbLWkpswahrdUl30lSUx5}G6#9rdUo#H z$dV(axK}*+r6U&O1-D)%NMKv&1$qvPX6`QL2QgP8ANK~Ox9t{bF6LvpfLj#te2n}s z>%~#l!d@JoDW6<2=qg!^=SFBLzKFSl1$=^~N+cQV;pIJT=-;J;R5{KEmxVa5t)=B(YdQ*QlQ?LIyWsP-#$d1%Xv+8Et-w z7A-NYb)HH=g3M4fh8NIeZh$vqk+;Y-4N9Tc*3rA#)ojh0{QjJ{2Yggd7QN8wIhca%K-1>@!Vxf_#hR9 zI>`r7kkB@!SVFrq!4H(ux>#@M2+lOL!wQ9+^LRc4<~OvM6s;6<*QOnOE>Am3 z0U_qG?As``w8I8wTKs8o$#!GYv7u>dw#1{ zHS|`^cWYH{23Zxb508-N=sD*3RA7FQM0^OrBx{K8^(zE1cj&?p3+TKBee3;RDMUB3{ckbk5ARp&7z|p^ND-^pI=1a8p*IVw?)x&nJk;g?<{sSJkb}lYK<2|)f(`X@zhHgR0V2I zxmz9?+A_tJ@KajaCxvp63=D_L899V2sZ(ue9KD61PtHdgc>jWdA^FD>|7sXfWuAe% zO5g}C3gE}^VuT&fm8??JOgy)blJ^arDQfVN+Au0P;tpAp>-daP!kLCqbE-`-{R6u4 zC7p|-j}h;Zl_azgK8~MGRLP5C|LBf2EK?O*-^j5{aF*xIxzMT-+ybteGxY>mOTn#M z)@7eqofr>>b>J-xthr+57*&8jn=S9EnqL|ELkdkI8xGv~*Lb7YQ60mNtV+0Q;(3SM zp`z8ipA1^f4OF%6TY)74rK}NJjCic6khXlqvaHlSnXmn5(l_)c2KL-7Qo!GKbYB40V`fKYXed<4D*;Ks1hx4&ERe3ZaX32)R{ z+9E1m&wW?9-HhY|W%ZIgx@4fL$rS<0vPTr$`~bx8K?Fxe2>g}z1rS#?9>q$bJg>YW zugh1<2@Q5YFIM-G+2LE5zXond{DBlK;=3_jHeTl}LH7VpthIZ1$N;g2#v|;eyWDZqCB~w($Oow8)1Y1VMssD%5oy zTn_Obq5Mvn`q3bKF@PZ{2ae~KHa)E#gQpE^SxeQX&l(MF05rEw#QC^XE$uzQ2l{zE1bbMVCzY8wR1DJMp|Nwt_A&jS*Uz%ytKOz;^0t0V z+)zvif45+J3I<`jmMPi3MEIc+C3{v3y${}1kk+2YaMY_U*r-qgA7%)2!2wbmFxNFq zEWz9)fNz(3Ydw|r5WZOo3C^hkRP|L$U0jMdch%b(_;ui^j$CHxFhn-uzx#Ri@YLqt G%zpu4Rqjmy diff --git a/client/resources/hardnested_tables/bitflip_0_3b3_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_3b3_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08c31153365ebdaf62319aaec612c7c2448f20a8 GIT binary patch literal 26933 zcmeH~-)|gO701t=Upu=qbI%@s`XOqQtX_Pwc&;}?J6IYbVs7bX&JOnkN zE7AuGNExIGDuK}Qg7U@|gj6+=@C%|yAnhN3kYCWI5|aG@5-*fZLo`*>_VOJ&DV?Dp zK!A8SE7>z==l(e7d(P+FS!a4>{0r@$Pk)iS#6l5Q#fsa>x;k}VMGmZfi6 zxSQafRYi!zFIqLdnSC|Hzjr>KxgIpt)BV)+w+uqA()3hXr(-Fk8E+W)HP_$jQMsCl z)GT)>Bnz9l+$0-U2cgbma6-qqs{$r(394MtJ-0%Rj%|E#GV`&Pl5>x)E3AJPC*DVx zeDftHcQu>qu5r(^;9bOt1tq=Ha4Uf9@yOPPX>7~M+}fvGAvWA!GfgVNmzaB0vWC?} z_P9es)+oWJviCA^i^`B#`L(n=s<_8<+*aefSlLkP~@P`|=GhjBlTnM<6w4R}Aot5ljYT?fx?_!Bzku#|fM z8L<%3uwJwDWoYev0s$@Jda#-*Xc=VjgpXD@sVI0FjFg+?Z;-zu^3iCM!tGFRBlkU; ztU+53A&tVbWoUw^6ots&Fh8d-^$5dA9VQJSyHyVAf21I7 zHH;~2Qn*SHsw7qoDt?`? zWvR5eC+r2jH4zdt364Nctz%SEMXbLNBVH4M)o;{GI)&th(*7KXddV86e>);iu-9S_jTOYYlbGTa&qDvh8pu4Q{9+v zLE$SrV65=4?l$;iq;;pkt;KyDW8w3>{hX(`%9zFVVCLSek1lMK}`j1{+@ zo=0h;s&_TIfneV_m~Q#Bua8bm{+QdOfc&8}p@aSY;56phRze8W_vkX&1J|1+>v%R4 z#j|$-Ee1YMpcj4W5GQ-rxmSX^bYBh2VHYQ&U!yL`?OIVQD?-oDh<7$Dl@*ht?%hha zUWdc>ooeJbh=OZ&*v1x4ghU;^-2x&PEHop>%~&~Ivd}1Y8nc(s4kd25)1J5WXpmUp zhKg3Pfp;>zX1NI5&MNN>-OdGx8H zT1jpv@!!6ni`^-NJ8Qhnw8sp%zF6j#hi1Jn!<~x($2#J{$bC9~2tpn@W(=KsVi%ou zc|TVxX8^$+CmlFh-(3$*?&cKcO>TY#kS>qwCS-gO8951>Y-1L8Eo*+pWaMe1oZlUAOpv4OLhHy zfHS?_;djv@mYK{4VBNd)U%{H`O?Yt;J#%rmg8EJV%(T8&)0^P4f``!meS9+A@-_M+ zy>a{th;D3)sAM8oc1(+Tn%F5eV3XbhCnpAhPo|ilaji z5k%g5O_WpQZ{OAg5jjQVMN3|^WukO?y;j{L{5AOX7OMFS? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_3b9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_3b9_states.bin.bz2 deleted file mode 100644 index fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4981 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 diff --git a/client/resources/hardnested_tables/bitflip_0_3b9_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_3b9_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b315cfd6097ff70103efe6f78b2789a1d8e17d90 GIT binary patch literal 29127 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 diff --git a/client/resources/hardnested_tables/bitflip_0_3bb_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_3bb_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c7380444ac75b1e664e239b7bc16c474037613bd GIT binary patch literal 18288 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 PB=Gkpjy`|=@F4sbDYe8t literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_3e1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_3e1_states.bin.bz2 deleted file mode 100644 index 15195d21385b0eede73fd2ebfdf61354647a4812..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12468 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 GUjI)zux=Cp diff --git a/client/resources/hardnested_tables/bitflip_0_3e1_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_3e1_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a5259b6246dee7b88830b44cd7b0da33f3ee17f4 GIT binary patch literal 41275 zcmeHQO>A7(dHwF2``)~nxpVIuj)ofkh%=NednEJcNg{=DOw%uNinxhV6Kxj;TA;IF z1GQBvp_U5=rHSiC3!x|)Ewa!eD8@ihc##DcS-86gbdyyfpc^fxplS$kKr)elva&SO zb00}jk|mi+Q6K?63F7;^@BVz>`OZ04q(<`S_v*`+{q zee$Z|d!z-KROA~gR>YwseM6X(M!Y&1>mA2kZ@jURh*#17DZQ05B>$q(PlPO<&l#J0 z!)$v+ow~lxnnW~RD?#G*{$^j&?=Nij+lwKch!^Wrh$t76f0G&uR^(5#7h5DSjU^02 zIr-02TUevnLH{!%vqZzCi2Uo6zd_*|$#KfJs9-5i!e62=CQSlw1)4Ag3bCRyx+xHz zvB|+^hy1Qk9Ty#?6QQke(@W@t?s+EmWTS1pNWJG~JW}Y8L;w=uQ*L4fy)|=6cLg53 ziN%Y?3dv7!vW%4-Ll^Tu+W6uZn-?~Ju^CdSax0|9azsRbNM4J)&TdK!)k*$5e{^Hh zBT_^i3ey15tPT{(kOCwuq1+{s=P0CNxP*XXE~4b6)VS57KwiypjxwpIv4UK%hKPA16Bn$9 zM?>Bm>9k-dS3vN_=$gAJFSTxOv}Srh#=E3%>xd>!VYv~>CCYUKMn5DYA4sDZGY@ir zVVXl!jv!a%l$0RVB>KJ(b;_kQzp=4-h~_pnHqHmWb&+s$wxok|0!2*x%{zC{US-70Byk=SpIPgQ^fcZXW~q^N2y&q(RwFeTg{RfO2)r8>0jZej;-3(M$b>#LMPl#k`FdX79Hb%>599 zWd(Qk^5EhiqUJ@U56iBsWOY}S*VRrW3aQHP6kicBxMnKtCUQtJF%qNLvM*x{roH^9 zWB^UTP4!4NsoJhni26(-OtF9%R4Agumv;u0f*P0Ya1r^J33{#JRY6VMOotW9Ln7Jr z@DepHrdVD=0H;{QaavvTKmdqTxwi5xVA}&4kQI9V2@_lBVsDLSwAcQn~B9;O}Cr>@e1twH|H;i>NN0pr>4| z82cv4*9KzwiwpR@ypH4g^7@7Kh>nO(Q2;}o-MXpngR3WjeJtlC6_LVdkup8<-rc;l zxlBqSpbE&r6jZl_+QnH3I2rSkQe8jK!skI2P zF?O<|;-ayIT4O~bok)*zc`y1d>5e}Ya*j0UF8UXfCe9ZDV9X{!q*2GMOqVYCg^nWwUjpTwO;*QJ2O}%qWj^$GugR?My>bP$`g`Oei~1 zUry=JI)+aue`J{^@B#{^5qndzws{@Ugx-;nD9Df|-Kcg3sXVOKUT$2bctN-3OfS}G za}-izXb$yo@+`7&+`RJ|LW35co-j03YQ!|PFcU-IaI=7#!r`QDP2o_=dcr&4*s!nd zQ4N`**6-q=sfBy5>t-IqLzOco8*Z#q_-*h~5aq)(?`j6K_W@1h3R)y)Oz$=1P8!uY zp*z6NRLR(5G>gd}142rRPC`({L&{FMn^VJhab~B8Tf?YejQ+N60%WbKxlyi_+@xC{ zHbt0!Qe{CzyVq~TPyt0UDI=iST0o!ONM9G-x z3SqWggcn0B@6ab$&_kPGX!K;Eb4GU~L+uH~xILM-6-8}hD+SYQS3H-G(QjvU*ad@Q zR1?2pOs5KTFM?vme{AeG{tN@1X{=lLGdffO*aw5brt2G^ISvdBE`ospiaI>q@H}!o zj&p!z^sjLIOWmv>mt(=XDCo?Dod|A&_ zG1lx3vv&m$GmHU;k%*Bo^!pb2{~JskldQjEwoXF2*Cf-Vm7D>xEeDkzFmhcCy^0oIRbX zbH}N(+QRxsmwKmF4@{Y*1Nd|+kFr63g;?Kt`SwgmV;CA2wM>G-O54)Qt=87N;P~9p z+cOUAp-=eFTJ>-g4@6~-(Cx^9DlHYq9^L3Wa*_dHN zONjE;ezNbNuia$-+K1Ww?)Lh)-&ptPHPMM+EngX6O9iM@{p+WlIxVl$+!K~#$XO0p zSwpXsvUFoH&T(KB0%s2$huQk3TQP!j{w>`>^Yf+BXU^$@KvJp5<)h<3*+dNgK=`&X{T*x zFs3=oOP9Kj!8j}6eHg<-Tm@r6i;3vjdw+ptY%uXT4*3+nnmqj~1n?5Z&Y?tQ2kpF)iZ)p3DruU5po^;3DvWgA@QHapB(k0k6sr_5T+T26F-(|jPa7JIE{ z6Bx4=vlg?~fW6l4_d$7w$U8*dAwF9#_n$oN@7&mHvDey1$dhO6wb*O1*J7`=`;Fld z_FC+<*lRthl25y4uf^X(d>SsEeUH5sdoA`_?6ufy?f!%t|KtPzfve#m-#a@fO7JDuBTKrR{2N2AMP1tL(*Lnzs1D&wfVz0$si@g?mE%sXMwGJei zyN%duvDbPLybK2Hwb*O1*J7{5UW>gJd#xAIPWD>twO#}-?6vqaAAU1GMTh@I5C4mv zXEPb^5P65lJ4D_g@(z)Ah`d95woZQa3GWbjhxk=gJns&BE%sXMwb*O1*J7{5Uh8>E z`Q$V9TI{u+#KiNj*=w=aVz0$si@g?mE%sW^*UHDAve#m-^*AEF?uxw@doA`_?6ufy zvDad+^>u3b=yUd3?6n@n!`Gj)*J7{5UW>gJdoA`_?6tmLFZWxp*J7`=kA{PsvDad+ z#a@fO7JDuBTI{tBqL_Pa*lV%Z+QY)Zj_kGAYq8g2uf<-Ay%u||gK6eYEB0FKwO#}- z{7E(ZNj3aQHK>?h8VWZIT`g$}4c%KP(^cip@c&FvIBjS&Ha3_vc4Qvc$BZ5Qz$D_B zNod||{ZJW_#-#lzZ66fZa>jn7j4jQW-WA_;1~qN3C@YP=N zSL@7L%v#h2*6M9T$!;v}8tUwyZr{=LzOjRvv3IALwV1Vjt63{pqP<`L{pWxCpZ^PA CoB>Gy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_3e3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_3e3_states.bin.bz2 deleted file mode 100644 index 18a6d49871207a91671b9bbecd09e0a98f45fb6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 zcmZ`*TWl2989tY}cy~s#fwgx>XuWG%umP{uClwDHpb&6$0gAMf11sZ zGaAjD(VTzI|9#*8{j>j9r(Suv>-ENCum1*V2o+yG`}M~9jSp^A7Onrh(PeKBA>92E za*+@hf^8}Ef5$7=8c|dosDMJ}_kIC{6RxJ1Effl5FnD|E&g+xfGsrL6j|C(cl znRxE+gqC}G05NAu-@C>|-g0vl(VvIQ$ zvXNX5InP~#67WOo!3#0oRc=DCf63$>4gStbLWkpswahrdUl30lSUx5}G6#9rdUo#H z$dV(axK}*+r6U&O1-D)%NMKv&1$qvPX6`QL2QgP8ANK~Ox9t{bF6LvpfLj#te2n}s z>%~#l!d@JoDW6<2=qg!^=SFBLzKFSl1$=^~N+cQV;pIJT=-;J;R5{KEmxVa5t)=B(YdQ*QlQ?LIyWsP-#$d1%Xv+8Et-w z7A-NYb)HH=g3M4fh8NIeZh$vqk+;Y-4N9Tc*3rA#)ojh0{QjJ{2Yggd7QN8wIhca%K-1>@!Vxf_#hR9 zI>`r7kkB@!SVFrq!4H(ux>#@M2+lOL!wQ9+^LRc4<~OvM6s;6<*QOnOE>Am3 z0U_qG?As``w8I8wTKs8o$#!GYv7u>dw#1{ zHS|`^cWYH{23Zxb508-N=sD*3RA7FQM0^OrBx{K8^(zE1cj&?p3+TKBee3;RDMUB3{ckbk5ARp&7z|p^ND-^pI=1a8p*IVw?)x&nJk;g?<{sSJkb}lYK<2|)f(`X@zhHgR0V2I zxmz9?+A_tJ@KajaCxvp63=D_L899V2sZ(ue9KD61PtHdgc>jWdA^FD>|7sXfWuAe% zO5g}C3gE}^VuT&fm8??JOgy)blJ^arDQfVN+Au0P;tpAp>-daP!kLCqbE-`-{R6u4 zC7p|-j}h;Zl_azgK8~MGRLP5C|LBf2EK?O*-^j5{aF*xIxzMT-+ybteGxY>mOTn#M z)@7eqofr>>b>J-xthr+57*&8jn=S9EnqL|ELkdkI8xGv~*Lb7YQ60mNtV+0Q;(3SM zp`z8ipA1^f4OF%6TY)74rK}NJjCic6khXlqvaHlSnXmn5(l_)c2KL-7Qo!GKbYB40V`fKYXed<4D*;Ks1hx4&ERe3ZaX32)R{ z+9E1m&wW?9-HhY|W%ZIgx@4fL$rS<0vPTr$`~bx8K?Fxe2>g}z1rS#?9>q$bJg>YW zugh1<2@Q5YFIM-G+2LE5zXond{DBlK;=3_jHeTl}LH7VpthIZ1$N;g2#v|;eyWDZqCB~w($Oow8)1Y1VMssD%5oy zTn_Obq5Mvn`q3bKF@PZ{2ae~KHa)E#gQpE^SxeQX&l(MF05rEw#QC^XE$uzQ2l{zE1bbMVCzY8wR1DJMp|Nwt_A&jS*Uz%ytKOz;^0t0V z+)zvif45+J3I<`jmMPi3MEIc+C3{v3y${}1kk+2YaMY_U*r-qgA7%)2!2wbmFxNFq zEWz9)fNz(3Ydw|r5WZOo3C^hkRP|L$U0jMdch%b(_;ui^j$CHxFhn-uzx#Ri@YLqt G%zpu4Rqjmy diff --git a/client/resources/hardnested_tables/bitflip_0_3e3_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_3e3_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08c31153365ebdaf62319aaec612c7c2448f20a8 GIT binary patch literal 26933 zcmeH~-)|gO701t=Upu=qbI%@s`XOqQtX_Pwc&;}?J6IYbVs7bX&JOnkN zE7AuGNExIGDuK}Qg7U@|gj6+=@C%|yAnhN3kYCWI5|aG@5-*fZLo`*>_VOJ&DV?Dp zK!A8SE7>z==l(e7d(P+FS!a4>{0r@$Pk)iS#6l5Q#fsa>x;k}VMGmZfi6 zxSQafRYi!zFIqLdnSC|Hzjr>KxgIpt)BV)+w+uqA()3hXr(-Fk8E+W)HP_$jQMsCl z)GT)>Bnz9l+$0-U2cgbma6-qqs{$r(394MtJ-0%Rj%|E#GV`&Pl5>x)E3AJPC*DVx zeDftHcQu>qu5r(^;9bOt1tq=Ha4Uf9@yOPPX>7~M+}fvGAvWA!GfgVNmzaB0vWC?} z_P9es)+oWJviCA^i^`B#`L(n=s<_8<+*aefSlLkP~@P`|=GhjBlTnM<6w4R}Aot5ljYT?fx?_!Bzku#|fM z8L<%3uwJwDWoYev0s$@Jda#-*Xc=VjgpXD@sVI0FjFg+?Z;-zu^3iCM!tGFRBlkU; ztU+53A&tVbWoUw^6ots&Fh8d-^$5dA9VQJSyHyVAf21I7 zHH;~2Qn*SHsw7qoDt?`? zWvR5eC+r2jH4zdt364Nctz%SEMXbLNBVH4M)o;{GI)&th(*7KXddV86e>);iu-9S_jTOYYlbGTa&qDvh8pu4Q{9+v zLE$SrV65=4?l$;iq;;pkt;KyDW8w3>{hX(`%9zFVVCLSek1lMK}`j1{+@ zo=0h;s&_TIfneV_m~Q#Bua8bm{+QdOfc&8}p@aSY;56phRze8W_vkX&1J|1+>v%R4 z#j|$-Ee1YMpcj4W5GQ-rxmSX^bYBh2VHYQ&U!yL`?OIVQD?-oDh<7$Dl@*ht?%hha zUWdc>ooeJbh=OZ&*v1x4ghU;^-2x&PEHop>%~&~Ivd}1Y8nc(s4kd25)1J5WXpmUp zhKg3Pfp;>zX1NI5&MNN>-OdGx8H zT1jpv@!!6ni`^-NJ8Qhnw8sp%zF6j#hi1Jn!<~x($2#J{$bC9~2tpn@W(=KsVi%ou zc|TVxX8^$+CmlFh-(3$*?&cKcO>TY#kS>qwCS-gO8951>Y-1L8Eo*+pWaMe1oZlUAOpv4OLhHy zfHS?_;djv@mYK{4VBNd)U%{H`O?Yt;J#%rmg8EJV%(T8&)0^P4f``!meS9+A@-_M+ zy>a{th;D3)sAM8oc1(+Tn%F5eV3XbhCnpAhPo|ilaji z5k%g5O_WpQZ{OAg5jjQVMN3|^WukO?y;j{L{5AOX7OMFS? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_3e9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_3e9_states.bin.bz2 deleted file mode 100644 index fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4981 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 diff --git a/client/resources/hardnested_tables/bitflip_0_3e9_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_3e9_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b315cfd6097ff70103efe6f78b2789a1d8e17d90 GIT binary patch literal 29127 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 diff --git a/client/resources/hardnested_tables/bitflip_0_3eb_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_0_3eb_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c7380444ac75b1e664e239b7bc16c474037613bd GIT binary patch literal 18288 zcmeI4PiP!<6vy9hW@odTo&9|$T@tc?lAUa7jizZ9nqtsMgGID0Eh&aZsnIQ{6jY2N zc+l1Xizfr=$zH@%yjk=jh(T$3RS&uKB;=sSLV_(*wDsqkO`2cZK`0XHBeP!0+W0H1Z(Y>LY1ad#cZ*Gs~a@zuD{o14 zeo_EA{lyPy)Wqae7y#;Q`1#1G#|w)1)a!hruQ-$im8{gfZ%BWsIMNbMdc%6vML;L8 z?rA1+2u-KROFp6u=R_~C&9t%;%;KWIkoA)kvqzI?^vOK`@gKD-J_;pW?%fNrH3D@0bc2b8*_T47t~orP;fyFGlZ~G0{P!z${DH0k;BytIC3|KkN5;* zdJ>o|&0wX%unhJ0V7~M^rnt~ib)p`t#HTSw(QGJu?(xRKDsJuKDs*sGoyNRVk6S~# zH9e%Mlf8PN!UfC`G4sA8g$W%!%o#tyYX`StWsi^J<|FfXYajEf81pV@oB>sMOR$91 z;Q-XV1gbUp^<_QCh3R8%VLKLjy(`h<+WrzNoP%lW z24UzS8u&r462bv94r=kXKN4~p%dL=WF#`gF+eq7(0np(Pbm%c&D(a!vuvqLuRKAi_ z^lQDMb!~(*%VW*wP0X{*6?XOH4o-oEWdxE!ExPc zV7YO)8gtvo>`dB*hp;?ekCz8$K|7PA-G0vY{Ox`b)jnpaapwv9xT@`DaT+%}Odrl> zS<;cJ{d=!iY{xvhJ#^Xt*8d;D&|e2cDWa77Xf2`?=_&U&ghVN#6j6$i&nesZ!B%>T z^c3kS(o?qc%d+$o=_%4vq^C$vXbUc@D84C1fCZMTJZzZ^T=vo~v!ODnl6( zgoH#ACrC(|QAtRsQ>_e%B)}<|K=JgRieR1Eqqf>sTYLR~y8Bscf8Ag9v-bKudn+Ky z!{&1kbdET6?fQt8d(5%FPNYPnEZGt_UG7|xgSwx>L zZ}`IKU8yU`d~_-LhSiGm>z6imA7w~iQz%t2H z-Q$;|?d1LqS^1A=8HZ;)L@X#M=ZM$&Hj_@@v9T~qKmt)7vL$AsqZkfZx>->Ot}Ohu zQrSL;fTd9RK+9 zMw6$|EttXXT{4gp3)T2L1jVnipQcyV_X3)VG1xa*G0D^w>(;$^$Nqcb<^|JMNTm^pwGqG1|U9A^VGB@_}gnmq=f1{lHcQgBDKZ!hej?-VXZf7!@g z$<)QoWoo2ZtVQ!>A2j=(-ygV7tyFf+FjW%VNG99i>2@1*h5CK{*&l>1Hm^nf{B%$E z?|W9nJhMN?HA;+OPVLlao1xf5d@Tu4LUj-T!LkQu|IHY&YdN zu8QY+uyoKlpJsOSZO9UHNjl)YpxXR3eZ@uEzV2#-V9Jhlv39vLlW`|5t zK#>MUDX3VvBoi&F1o#saFNcHY7>Bd%xlRLqWPzGLsu@{rl411*9{-)ItFKsss!}{fli=O+0CQdul$6;PqDDe-yBE0xlqu5vvJebW9s7==W$O) zGJag#{l}&sr}Kh)Rmb->efVEj-WpW;*|pxl2DS~)p=kUz1x3h%QAXWP>ud(yYYiPa zDQl^7AOT$yRf)2z8zPLMKKZxrV3G;0AC@SPYNMcZ|Scr zWCSB^`Jf2lAe?aP5nLH}a9c3a#S|vt!h%{4MG_ZRNdUQ2POP1!VS~N_hnQL^rQ)4# zv$MlRq;OJzW-g34P(>MbvwN``TuKl>hWDGKy#)4MS-toKF$9#}g(|ZL*|{}{5QPf^ z%@QWBbhJ(qiFe`s&a-%xMhwbe>4u`Qsu&J}8*n9qy}3|54vwZS=`U)pErQI`FQW_= zCLK-y%qdLVxgL!j@S&YFDa_GJ%YpEiT^s|~BqKCT5HT1`C11n>1z?mV!BIgcHW8XI zmAeo~*nkE{;RmFGX10ewkk$7&ygXDa?w)9bdne?H73&BB8Heo=-OF}?qZJM1`CTNY zKii6y5$ofDE~U6DC9w$I%4K!C*!5{%Gb*0n$je?PT$}{==lUVyXJ(}zV$rDC61z!4lgjxY#WBi<->|p z%Rs{EWT(fa0^N#AYq%amb7lUm`Xt#-*!{)YA1_ZI4juiXb(8UQ_Ym*Hm+ntUS1Z@~ zm=}Wo`eN5EM>YY_!h0^4sgG$&hmECNAj;dX?)mJGu^m^tV51a z&bdpVp=JFFLZx|ycp?L)YdQ4Tvpx$taf!B8 zm&ttHfqnh1_Z;JP0yEn`+X9y#(AU?a#FD-Noe*s|?%;}G!RSa2@q!>i897N0YCpAPQi2u5dy0!M$1P5TgY-0GDW(bL=Dz=TRUQkVEoR_j(bFWtcjSBIN|bi?v&TcH3G{ggqqof^$4wxkQR z%MvcF@;Tfp3zV$FUCN3rR$a4ZVaNr{MxC+tK|Ne~D&(j}dw4W;$0XvCS|BNZP_{j` z+CL`Lg4xe{feE0QpaBhtUKCBCEX!AMDm*kRXMEJPz5}=#ZVFs6Wc}+}7VF^d@^e-U zeJSx>T2?4k*Q*xIOe|%U zYLE_jmAErVVXH7Oa1c2>5`%V3*icw2$l~xY?0}e8z(%2ir2?fPvl|Qn6?|)ziVLoB zgB(O@7{_5e)ES^H;xj1p!cS0W-L=Dg|8U)Ah3@gTA)F2XT{FK;M<$orDXjy*-Q2Fe z@sd8KFK`WB5(e2Jdo!}^T?KWbJM`M9DXmK}6LZvxm>!K6KSAv}FIZB8N0__T20W%lW|L$+*7Y@}JML`Xt4{ z^DdcaBJZCqJ7DW}h@M=nr=KBYJJc5ZpVtH3#jpjvzU7E_W5-*LmEGzn?uOdYQ%!pkPA-HWw2EBI}&`f9mF|_nT%UB zy@jYzL8)x#FgOY%uCW5yA}T5$ zYk;(^8Cc!AGR>BWH;U6!P)O42BJL_LDM$ksfF|~--Pr*S0E&h1WJ#hRz!4ju_cj^a8Ey%A*Oe>K-zsQxste;Dti`r(xg?wdA zPMe70?DAD);g)AA5b$kYy}prU%hz(@#&VNak*?>DkER8w5`Z3Cr{%MRYUxB$cG%R8 z3!I6?jZw^YK)$Z7VR+aLNcH8r*V_%+5eRO01db^d*5jN)(CGr4yYX3(K5J8tzV+iR zqD!drP_(9YTEz8KZcjF0d%`l(ezPzKiL*uOmv|< zE?(3e|HUs!5V?TRdMNeHbJS><^4*=t6Okt(wk&+NVBUKzXo>v$KSm_!Se0y!@m?fL zC0dXxkSnzQ36xViG)O|A=II?9dMnzAL}s z@;*9R>TeF68Jfv!A7mOh0I#gwsoAg0r6ML0(yT`^!au6MvCk@}9jDmBB@XzR#x+|c3D54Bb=Zg})&zla4_SqiI%wl5fe z^5ru=3uoXvMuE@-vFOj(TvrvRbfQw|48mKlp4~P%zX{JCWqJnCjQS_o!eRk?6L;M!zi1o!CI%kY#0chz}m! z*QkCF{%+2zjlDv#TL&*6k-zAFmTQ+NhAzAnRxMXuQA~ZKLVLU1tgV5AJKiT^jQc67 zZV$Tm&Tl!1e|)?6tL=mbFY+#){5&Q+`||0?_aFYk%gtFc>Y!FlKQ!<#qBozvxc}te z%(V-TP2D^z_}#VMCPd+G9J{IdPxLRN{2#-<8!EMlUzx}&1I~_KMogZ$Lx1+^W#BAT zoNKUC=s7I0&~fvk@Hpp>eZkZ17cOkPeqHs=>(^gx-1X_6FQ>+T+qCKPO&6~H{#Nu| zzj?OfzQC08M!DB$F#8*tw#r_xBvf&h^HBkSw_$3%e2EcioM}4W4UFv~ z11v`1E_5!@u%DmGy<;ckHqueixlL#U)M~Tvgdp5}7E*Qg=7^kix zSo?E{nz7um{ZpfXq(imiDMs%o%y&0-JO_aVWWrJ>G2D9RE;pCM?<2HvOyW*WXxEZE zyAbVtOdEyAEG4CBQcsnZ%4-Bk)b1fKj=E5i1B_?xhMd?s<3e*Jtay>5&%}oWOT$Pf54yP1N-IyY!) z+yO5foJ%G*2$q)W)&xj^a{C`Kv#v2b?z`j zHgpO~xwKkr`gCELthWj)tH-M9!+W1*4VLW{7;L;;79zMsOv0(Ox@9F_f{s|GKG{<-JfYq4Jh<>@x(*7gYvYI=Hg0Dq1<^^d1lt}}(YxNXa5g>>}jn0~)fMP%G&bqzU2 za@dz9#lT(eJ?kN7EXi?(*1mcip(jnJtop$c$w{+k)&_!^=zzy9(cGn$|Fh6JMid_y zV+c_AkjcqoeS!;;a{%Z5jO-_&YwN1>1mIz7nDQ|Jn&w&*8y*ujJ9D#KusoX#yl$f? z5>JVY%eu$tQRclu_S-M^HvjUop9PJ6!L$FDY{Eqf_Pnk6msef(4-gQl+EC+;`grmDPho0y9L%LpZ+cbyr@KwgB`08+isG6?h#WaE zmYm5V4e+IHVm^Z5LnjS@MiIKvl+xrAkjI;cZWvgmaB)pK2S9rjh|Ap1ki#8%9g#&( zv4c}SO)Bxf;WWw-AmVn*-Ey3>)akk4gTz zhb`I9szHm6sOIy^=>Rjfqdw0bLbh^xgPJgK2Y)zKm8?PU*Z28h%GFEw-B z=opap=q_IOpPa?FfAsvk_u@_k^Y_UVtG~~88aRA9R(NsK&5hsa|FD%FUjrhf^q4Vpe13rg^FH#<`{4UVx}fp>pl? zXs`*|2KXc($A6` z9tlny|n z5Lmy9DILR!z-PUThh{8h%RR744bZXpsrMhLbR@bj2PYs291=mUT%95$r;U?_sBMDtGemwPo_3uE{zL6Zc?VQ+vP487x%RRS1LJzB}z@tSll`%pDyw zOp^R&b(0%$=UUwPQNQM}a*{R$d>k%~bazhJ!`Bi__y0e@ElCKZN z!HI3KpC%WKj^%x_qrPRwCG=IpPhB*y7CZEGJx9&t_W9fuSRWlX-EEMIP+ zplim{UqZ_C`JIZ?*j9VS31?jN074I*dd&!AY7Klot&P>NeuOjvIH#lp3;LwmigX5a zP#&`Ov*LuZESHIetKpgD-^foVaN?4JJ4MZRqc0~VH_^BB#Feu0_xMS^T6e)Jd!bP) zSSZiXe*hsi?oP{MR4?7C+}OwAhJgT7)EBQAVSdJe_2=Ob^c)mZ1Kx7!MS=otb@?ce zQzEHyrT73S9gXxj-NN<GY2;ZlpqzO%sy$l6-?s#(Gsk5yP%8n8P zJ(<89%pWNgj!?$;o789l{rWmh_8QoBrGNU@pr$5mVy!lw;DY4mjQ(ifj1!fJCVM zPgVD5Mo293Vz0k^)qH5WtLol+?s?yH&b{SKTHL&J_3rQemB_jUeFvm}Lu^UUK!0qD zWl86*wWDR!K$GNru>zU$_?9lYcF!$wyyuos+WSMvjfn$s^3u`2VTqVX&Tb54+MZjY z^dBQu93PmpYi(YfP$muZj~2N?Box~hFOu_itZG{N~2d6XM{Gg zB@m0gPqUUvKD3IF*h|HU#E2cos~k(5+pIi&_KD||y#66cOoG~koEBY%Rzs{`w#6<3l#;U>& z97aa3)I0H-1VK3?&GC-`X`Hv!&Q}V7!c=JBLd;|3IOc(tans^hT7od(;W6~qQIwpi zdM;nbB*iy3$C<1NzwvVr9-HMowR* z7fWV@G#2xqW9B4AU2Eh_ed-V+x6@U;gNytCMREMEz(3B@sR-noxtdX5Q1k*z8K9bZ z&?o=L|3zQaEfOgH7FzW{XG7)=|iAKQY_WU4XWSjYNJF>am#BDE*q2`2E zzV$2O#aobeOV2lezf*weZ=mjq%=k0=dcORqnW^>Rd{n4S>8zaa*Fz3MdFM&YK9J^ifnHXx2VvXuB^l4m0Zd zF2A{3$9B@?R_O3}N}}ZVkrcX@O=Yw*YoI?`I?CTC2}@cqo5c6E^hYvdpda>&q^+GF z=gf)+&;(8qY*}wuzO?kqRZeB8ZHqTT{2t}HULFRKxsd=pGLNh(FUkb%Yx)3U>E5Wn zbtdsWe0g7jif|S{%RDcK;^4eSqs$MBCr9RKdp8FVyi<>{k--F61-A1N7h6w0v;XdznW;!Ji&2ny; z4$WL#hPPmguDH`kD~$Ift=uU_?pSLo4V^#{0ENfn4p5A`z4oMw=!~V==#5PKQX_ZL zs)hf15~Z~78q-s75!8<=GjyrOErZeu8m|0O%I&Wi88d}xodq|FIaf(H7Aa978cRRu z{Xa5tYpmFDRu2ludJ~RC7W^lf2^~)1N#u#o2pF0R(;-@_8xLq7U;+8qW@Ks)UB@d_ zWxQeJzg=UZ$xJt7W;322#?NDoT%ptnncp16PamD{AEeel(?xg`3*0v0e{ zYpVH?jXeeM4P8{vCMF zLu+*_SbR_r?+0-2K~v!w@h%+140rZCr$pz&6qPQDke%V z`BJEYdD_f97Q#h;V2*iG8(WaHZq2IoxvJ{H7U=pVq zX)GDJ+R>CYttKs?I#ppR_KtntiV0{Cl$1fF3tDnA5BficI zKLe$teugT7cp$kF|01O)7%6plRVB;$aKJ)1oxbe&A%vF>PE#7(hTZfFctYjHv^_n* za)mMrqJY+(l|%WW6>YUhZCx@FgB@1vLZhShp@pd}NX^j&&zP{aMj}Q}2#G#h690ZG z479%m^)@ac{b+39)gP_a0wF$D1@W_uq0?7V8l4Bz^J1^t+XN*);87`kf zdz4W1r-@iGxrbf|dYD+igpo6bQd3)T3TBBa@Rk2K;Gg+AsOjMbf+T(rh6-NFEmTOYWvsa%6 z$^anuK13^^&cTzX#6Ji8mrZ!-d1ha5JB*_~;Oz`U13Un5G2FcZAO);$iMZd>8}wkP z3f=x{%iNXA(c=2V&pK#iHjhFT(3U?B0I&qNGTRjAi@J+_^PT3S4mpqG-z|h2Jlt9A ztNgn&rtMmLTkPzx&5})4%@2PcV{WFG3dnb^L}+&NJ#pdr?W*0_nz*l4JJ<*%zMoku z`+BN<7UN;kwjstjw=M@!P{fO;`BfxQELd&}b3;+94;SVT!Xh(B{W$rQ3f;{CkA_MB z95lH)jvv92X_F+nTXQBZQ-xJ6vsBr0Ug}Pp)4VgY2&U=?$*!?_OK_r@hd54Mw z63LhfT?{GFdp7~glH>SWpNAgLAC+aL2f75Ov;w)6=^BTKmD~~EF=e2?E=R4V4^OI3 zCc+zIFrnx9p@kHoJp~4~FGHl(rw zi>~@Z{vI^43qW2sQ9j}RADU{hT?Mz#?hYc0i~u7Z3QDfSlx zWf!#k2fhy@-JrZNNGAY()5v#O(SRygs14C8A`$9^?CId|AEU#%S;TO??K6o8iFdck zb^7@)L;RhfV;XFhhxZ`K9dO7#b@^3;m-vycMZV2|uYhyB=VrxdP1LggB;P`7v7$~t>IYp2q$`y}4o+P?7CoH6T3M3QAk2(|TPH0q`>z zyRKsN3>Pq44Q`1AR-c&;6O|HozCD%^fr-4=1K4PU1O;7y*^>ZqEyj2xB>;XNg!|2=+UU^~hEXTg z!3&E_JALqD1jKU>1r>a`vEQkQ3kWYVL@)mr=JWguI#hfL7W(6gjyV1_SVIfpxz(w% zCWsDu`G=wZ<@u_(Tbt5&06ZMB{;R&(prm?}A#v?xVh}RZH;unHHhC5vk=1K16D$AJ zLNsRy^++Q(kF{$S*RSUELKTkTqEF-?WE$$0J1jcfZ_#)=e-B{fK}OpLjkI4&FCZfU zS)MXbdOC~x$o2Xd)maWHcv2kK>$oOuGpPhI*(d zR6l-6#b&q`Ru1QLq$D3yrW5aDg&P#9@Mjb=vW=`;ER-bQ)*eUpIkWoXWKDO}my9f! zM@fxg{|Hc{^wr_MDgNKeta-eMWMK%W)|X0AZe9%vIBUtrp}~VZ)17!S2bJkQ#ibwB zI1E%PCTnioYYlm)A#_^e&>?CRVU{`N2;wl1YN=J7A=qC2DPw&w3LzjfNp0cZoXz(m&|q9Z`z{PrxnuS&tH!%%um7 ze3Fh@&Vr*spvEdbZ{V-{;E}`&T@qh2i1b^KJao)$kKon9n5p|XQWcKOf%_0WuS8#q z6K%MTWi=yA_yQAPhjfdXd=$lIzYLt}!O_(tF_iq? zMaaS@(8Mn)dubT#p{HOrv^T%j=y*>j^zsm+GG66bfH6IQV?uQ*=OzLaV?xUDi*}Fg zJ>sCva;7qVvQxE*U3wMUgl^7T&1`ZFzyTsX)SEifNhD2&m<@$3^i+w~5L9vHr`JYcJKn%I}N-hBU-X~GN(18$I#0amLN@D}stHdlBWduGJ zVH+6%2UuqWeU=(5jpsNpWIN30@^|dRHPVfT{&N`=*&d?)F#Paa@;PjxH=gC;xAM|$ z!nk0rj#+|OfTK?FnflDjHlbC;mXYxfF!%vwyRixLu(X zhadf^cxa&Sm)cvwL}OKz%tmo20)bpZWy{V7acfLCLS+m^VoY=$_=>cb zbV0&Ze|tjNgpUs+9PSC#iyV$MI8a=!OaON@(Fw7}66>B1b%VZ@_%lh*iR640*#3M` z4U1snFEv^xrUU28u*!&#!t$vSC3eilH1!{Enfogo$mN8&rv_}SN- z%GLH`ONpN~CgJy7FA=IF9+@*~$b0<24#^{kkvPRpZdrVDgRAv|uM=9AC?$WHxCq1& zILo^he-NhYp2MgpuS!E>&o-> zbsUG)`c0h1#(j)wE1zhboFR~*jV7F}t0K&I!wRN_da%9#6Cc6|zN%h@E^tcupa(wj zM+4{>NH$+Nu*t}_^XXwTH(qDFiL|1Z`>q1)M{8JB_K*KTrxv#cIQ`M+nZX61v>EX# z$6h;3y_g8sX8rO6Y7IVUn?f7R@tv*$so}QJON@jxU$0Se`CG$)GkNej{xVP=Z$hTL zg`V(JuLqsON-6bv6o<%Cnfa%ow`EL0UH>k$S?lxa=76+7x^Q#KMt(?4slmk#G26iy z91~1~<#gokL%3gMb{j#%471f8i$X>Pw=naXdy1n!_H+}S0+O2JW+OjtXMEuGf%j-6 zE^;&ym%63mLdKdh#zx-y_6S_HO-1e9`<+t(6D}p3_6sA2uR+}~_zb37S37V!8sv&+ zch@2wc_ar0WMEOap)4IRbYn6yd28Mc`b_BZ|^_M#c$_MNYn*0A;?MbM{P_6341I!}EeD$4n-h(1#*v zgbaW#Owg#_Kwb61s>h3t?bc zpC(osGJfwph^Kj2kTB>V+l;+eAEFjg0|GIsaZ!dR4y&yIaWv281T) zEbLX2j?PR&ZG{Lq(CGwBO_MThOnYe5t=c$|KFn_-@)i)Th@{t-TTNJknNuBip~m1$ zxJcK7eq}KW{`E%w5C%;maNR~OnoI;PUm*hLJ!|6`9F4(k-jqvetP(N~C4lj=^3`^d z=g_giQ8QU-(0;ifIh2b7k=@;VpBO|-QtokFlG(DH>(61N;%O=*?_tC)Qb8Ti&_3J< z*_aSMqKt%L^X;W5YS3#GT!B~e@21Ijlm~%d#!o`p zZctqPM7zWY5WKz*?;w6rvmZG!Q_xWxJJT@?hfHYm`gt)!WrkZy; z1X^+?!=PbibQ<~aW60fy;fl{1`G8s+2!A|XD^ITAA>exgrq6d2_aTM>4v#}rn;4zi zfixxvXwMDu(m$_A6CS-s6CN+<7-$P5xMt+`^A)~3GMC^U8ek1-=V8=NU9Uc_diA!2 zNoFIiXEruooYFU>;HE2dhu&VR5GD|GvhplMkV&QBd|$r7YN} zEmdo&j*63bC;71;IZB@&_V1y>nYxgipJsViL-;7}PU?zAe?YUm4Sn3Um#Hk%_ldH+ zhcre96Ol5oDGRE4GI(gF>Ip4}=|uuFs8==9+s zyGYi%&7%fO>q5=u1aV2@293VP4b=5w4rvixvIL=?Omge%rE`nn%1w}niKq{Iv`FrE zz{^U#Ftj%ASzHn6ECCpd_ye8%IYbjQb_Ir6u>TM$KRY>ySc5%1vn0#lBfbuX@sNpU zZze#ZR#8BHTgk8T4R`k0*v@0(@B+G7(3~3d5#v)7o<;YB@rdCTt3HEQeawulLWl5K z4Fo=z??gYeyb%%8nn#T9i?uSjNMM)!Pa63t|92(eIsN*L;amiL?DuPw2X5-&qSGeU zqIrL&OXe7YhbcEEalkobrSNME zk6lsNs%}4S`{E#Fn>37PsD)Sv51kD?33k^#H0Y8<@U}1tzi@*CA0n z6dM(6zpJ|K6*&6sp}cD}l$Vsky{DnP3Rtq-B#cMq0jAbf-(SE{xyd*J57q;B;ED$w z_xSO;D7rAIk~_&*-OcC2^_!s$CZ`^&yXh)O@@S2@VXl*j)jfpBCULs%G(d;p+H(_? z1w^~v%jle`eiIip06$NX?KrvE92~aqbU3HG=FU}jTr(stS2=E6PD&b=qe70zOOi7> zMYD{sXFxA_Z+~R8j)8^mD6Xx(4>Ap{l&hRV)D`pLKSJ1s2d2{~@!jgha^31OtW;%r zK)X8#bQH_68s3+vF_~IqG|XKziN<#+_cMtPG!luCe=uQ-Y6l9a-rre3!IQ(}Yl+%A ze3&U{~f^x3A$F z{qM}%8F3?B1NRsvl%$ELw5JutczOl8B-*ScFNvO8r1g7_mhyb~0hH$iAIY^3H{QmuWmXN|p3-hS*N`y+L&+ zi}u98;2%hJta`~Fa7`ctSKb0ViFWPg$Ni~x1-M64S6xpJzfvvWQ_m$v@VB!TFpw6a z@261{#QYPM+#Xc9B&p~0-c|+Xx8391jk*4HRRul)Ph}N>=%lP7a8>GeWEFuRBC7~g z=QFDa#E4}Tfi6~kUse&ARRn5?FRKVdC)|L;K)~VcJKe6#Dgs%HWfg&}23XFq$X%0F z1ZEY1Sw&!05tvm3{^lwIe|sa3hff%JJY0`FHc)0r^jAyM9P%>O(9q+N-;&TH`%vWS z-h38*Bzbz^H@p=&3qP{CE!&VxzNDTXx4*0>QdEUn1L{`d_=m=(R`%GvDXZAyPtD5I zT8TP4QzG^PRTqp3!o{Y_Hs44}Bsk`2(jh4wAvJ5q@1x!X)AeQDY3i}nxFd*YC?xQM zw@maM$87URyzL}6U*Bj!>bzb&8SNyElB4-Q(wq%9vYh72D7;xmc49J3?oPt|4q(`82H8Q9!Erw(= zCQmg@Zh@`VB(FJrq)1l#E|;v1?jcGlD%a5MsU#;*W1pmihN>}Jj|%A1Iv)k$KbCwl zRZ+2nEeoWnv=sOeK+&R}A=8t`zC!BzvfB0*_AUn%23b80_C$&6?mtTv_$Vq8g6j2r zOZMa(n-zaPAaxnpqj=hYt!oE!h+$!JN|$82%bz6)@^3)~DEzlz=}O>PH@MDNm5)yI zWFduX;e6MZMa8lvhf9<^M5Kad|1kws`HFxkjwx^_(X5&8m*k^3pBFP@lN)I9gf+`h zJW0N7B!8#o$$nM84rT3;^%6?0seoF8C6wQy&35p3fU@K_Y8z|XFl2ufUk8J*Q-Li_ zBTb*HyDQ02IiCPE;4;BIn|^F0`7&6fqB~*BXOmHa@U>ihTC_Etn_L^7vX4mF%d%nn z`y%F5FRDEL#+zf#tf|-iKvAu$9J=?$TMjR-InhF1vy7|Ay1`~eIAvIk<&gb1T8qHv zmVDK7_ccsFFd5{Zw9e96RHN``0$E+GI$GV~T@m#CCGyeA)VUM!p6uzA_JHi0`D@@|qxmo?oNHYqNfndsRwwgU4Mz zd)wBTB?VpY;h|MX#)i@FdIQbwji@3O zo-ZUx$YC33sJf(HD%myj^D!WdkizsH9TcdOO3J^h4K$k@juu_Q z@jhd{XM1Q)rSKBfd2)IB|JxoK)ens&cXO^$i$%**fEl>!dua~&eU4vt5-m~Ru2BzU z)M_oOpQlY_8?rn!Ssyi_S#=kOr6t4c;vUrv=2ZX&AP|~!NQoso0g<6s(H0eP{*zGI zNwG!;3PO*YNR@g;6aLmOYI^;bbn{YLVTmHH%(To7yAbT326wg`tCRCz5-OOBy5TE_ zNtpq2=TOq!{IzZYM9!m1l=KtFRnnoFvAKbuiC#@NBBI!)p{Ud@)VE|GUs+e5#d;0d zmuRS;bq9+sr^<4c ziQei*1peX#iZBrNzs%(;7)emdYWgDVF?^H(Bv@P6B zSr-M1?75*i>ba(Q@pFHbBFqyhQM!B4{<5Q9i*64r<9VEj-?SL8obp>;XDc$}cq2t4 zWd>Nlz6W;(KTwQ7G5Qsqfn3k|+Sc`McfIj+{eDA-AAG4C5$ z*v2l`2y9P+a_iWa_xIW>pY~**{owZLq2-tp(Ka|rNtq;!nxO1cCPCT3e9`F|=s(j@ znuN{=gNjp()G|*tW%nXv139U018PSG_<1q=De+uPw2}$+U80Bgg@f52c;qlt;U;0JbyQQm^dJK?73V=FYJ57yRwV8>KwZf2@mY89H|0r|hj z({Xj5Qc^+~eMg0u5{~3}#fB<=(!Cyqnq7aI-@l7Hl4oY&biFUgwA7X;; z<(9`auoJKG78M-X6hz;qa5FhH;GyKu017ydo|tH&?>A~8bB@Cjy(<>7K_o5cJOgOp z<@!;H6jMJ{1(UUkPKv%cC{Z^;j433T9;Id7Cx1#}xQG2kR-<>rH7K6JI?wEgM7DQF zvH>=QJ#c)HGv@*QhP?jvACY+V0+%f?Vd7fqK5j%H*|)PPJ0X#+^zV2=B1&EUamvxn z-qGLt$Y6FlVs<)WV(_xl5m6=C>4@3sh}r3g+3ASc>4>aK32U+#%T7nkPDf;A{>|)k zL=DfK#3?n|>4+>X$x0u4zD{;J;zhN96!_6SIoaumdX8syI-;I}ot=(I06aS#F*_YG zI~_4Q9Wgr{QBN7jPDkt{r<9$Jn4ONOXC#s&-L4)&b~<8qIwE<%>~uu3w$BYY-0MAy z*d-Mf+3AQ{XQH1Y>6*QsV$DuRJn;+VveOYM4$4kPte58zJVrt3d3CQF$xcUHFnAs! z=*Uh-?BGy9>XEY35wp_~Pi2`m8~;8#9T9bzosM`gJ00b3n?@MNz4Mu4OQgNA`j@TM-252;TW^e(gJ2taVupE2(rn|)) z>$h3IJi$?57_j;~sqb`o-8xT}(zh3KvR?D``m$WfPDfNfNW(UhH8aWqNZIL#2pxwo pW~U><7@U*Gi+ZJr9olbyM|E~O;=h^G5mzrsmP5j4{@yRm{Xb;!WrP3# literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_008_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_008_states.bin.bz2 deleted file mode 100644 index 89d88b572a733280b375bc66523de7d8ea338bdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6132 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 diff --git a/client/resources/hardnested_tables/bitflip_1_008_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_008_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..9230a93a45fd7470b742964627542f3d1fa743b9 GIT binary patch literal 31271 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_00a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_00a_states.bin.bz2 deleted file mode 100644 index 38af88dffe626c1b4415b38407451f87793ea280..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8688 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_012_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_012_states.bin.bz2 deleted file mode 100644 index 492261923c4d616d11d5ac062798b52ba6eff1ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2678 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_018_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_018_states.bin.bz2 deleted file mode 100644 index c0a5923785f3eabbbbfee990284b0948b5d123ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1623 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 IzxOBq3wtNyR{#J2 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_020_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_020_states.bin.bz2 deleted file mode 100644 index 333dab4c5991cf7676aa290c4561dd90ce101966..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1536 zcmZY8drT7t90%}&_L}Rp!@jOu4Njo6w57(DK!TYMT3Q~Zh&{M+5_CNt3Djii%>Gd0 zOzCSBi-S@SiHj&Lwnx>IVB(AqI6;9wwu-o9S+an-#W}MuB=eDF8~-eG@t^M>zrVh} z&!}Q zQTgmSwgOAN%p@~y?iy(L269zZvm=utDkQ>YVhvN{&xtGR_jLDwn^Lx2&e64Sl%S7n zX72J3f9ASonnBC_oqJ(smlQcxv5MaPttI%1f1+Y3{+dseJ=f3yE-CyAzRj#yUcM3$ z<=DPidA*DqkKmr@X*M0_q&Wmkz!D#gAWhqi>t#$WL=uByj?OlHOb)rc@x?nWKYlS5 z{#vGf(Pleb)IM*OQ+AqcuVzq^OU`Y~$7#?DD0ffNoi2~4|3xQTS=tv5zu_{ug)`hxs1s19` zu2};m$3YImtQwQNyLU-=`Idan)Wxiz=mv9rUaH4#JLFEdf5CZ=^%nBr25*;Ur=A@~Jwmry6v2lQI)Qut2Re zX2L0hug{TW`$OeY7H6Z|m_js61u2753@!CKDJ4@RmR!*FHFsHK2`78%5^h>h_)g{& znj52=si4Q)dq!MStnHDhV<$~=Y&M%Vc*d|;VV~7pc{YCTXH`Mo!lC?MkKQc3eCx*C zN1vnv>Dds#q9Fh>@Y7h!pQ~U11k&B?3!P(ua;x#ZG!$z_l~!erCu}npZcHQo7Oz*V zBZ!YL*}D3l|DfqT|M9R=p>EFOu_F@^TL~6MeF>R@hv(IBxlwkC8Wde05G*3lLO4cA zt{De&OKFResvJsJIHN%-R{fx1zWGkMKA;1a>D;TR-izvWS~*WDMTw;9&Ut%=fXULr zF1zp_NW4{e8(Rk$v6K^LOzpfj&csCa}`zAL`-U-9ez6Tf`5L`&eyBtg_) zCknjm6W?YiwbnXrt!X{eb5qLCPrXJ~^DmCv1|3A^az>uZ7~+AT9|g&S0;VM*tXSlV z?mT7B3iX)xrJ4OSfjOpl9IoGwcaj#8kRk!G=)9N35+vmiS`PY^2w_JkGJM`QRR^{Q zeXU{A!I#jDrrb$0nMV|)<+KR>?rATNqYj$J+&z+h3tHZ5?;6!4jT94|!DPyQi#L6e z-5O=03*%~YWK@%Aj8~UV??1B*ePG{sMz+m@IlQ1XOgY0f3f1=E;EMzEk`<#dkiBj7 EAEV|+qyPW_ diff --git a/client/resources/hardnested_tables/bitflip_1_020_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_020_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7b0d648cb37407765180e0eb54bcf64e19c40ee8 GIT binary patch literal 18953 zcmeHP&1+m$6hHHPc^${e9H9Z@klG=MWU7s}i;9baPY9Z%jka_bqz)RjNgJEC#F%Q~ zB2v+vu3QEbDK1=;ni^Die}F4j($xq>LaB9-v=lA9{?5H`rc=^(lF34>=PllQypMa& z=kK0(?zu1Q9qXQ$S-Lhtv`|f+r+rteSE&|KT*GNVJBcVq{Wa>M&Jy+2s%6?rFljLnEBf7>?6Sfwd>15^b(NOOI4z;u7s)%6!iz^96@gW(s!~Dun0v z;?&v|++1cVpj~^7DT_mmDY8?pCAm7suGbpg-o~c59e3a7Dm{kdQ%pVf3RAc2^763# zld0@Zu$#vt+nBm=y2Ev5?F>^~zkRo3fx4*!EM|noY@WiNI_HZVcRmR^p5`Rn1Qt4( z9zK9$o=wM2Tom>WsvuZs1$0PgCt(VnNXav`UlgYdeiTDVZiE~ zIlRjz*XQjEq-R0QGM+r$WN8bzBw+f*y??Ql8 zz8|8(tsu1%XXMtN0?`LkqQCKN*ylhRu4R6JDz-Yco)Qg0{^I6`G3Eg%p;08lVR0fq8vP_Xk40*UG#R|kl%8sd|V?L2+5CND614}IYW2CZid(sY$^l3 zky{Yw>4lk30Td;lW^3s1-KLi{oK9fQShUg+L3aooLm)*vQs9biMKj{I<+Kk(N&=KXdk0tN zz1Ge#4a4d0Ma`%F$rTUe8w{Xe8F4G7HzR;zGnI}-O^EX5Q8$2Su(bZ6LW3m@mNZz} z;OBw{OMq_u+H3!7PlF|E@Ak2*!P2U1lLkwgS&}@MW|nTtNor>4&iPf%EXkLprpE7+ z)VKyq8Z512YEFYC4VE-mlIdR!mew#Ct-+E8OOSw0!>zrNMyKJ#Wg44K!)eWu)+}kw z62dL5S#lMaKtyCK?_IU0HA`A_`EM6pYGz3@OPX2ofh;P-S{7vKlz;nE{%%@Z3%q3^ zfEIYK_j5smB@LD|SZa3xffjgUh}Qydw>(H!!|7@`T@B|${#AQj4VNy8(E@MShJNj} z|Fx%?CCw~pX2}mQnpx6c2Q+?Cp}!8070~s?xcch=SzIlf{yM-fC;vbG`$U7K|7Ngs Pd>{Vpv=q?eqzmQI%1|NzX~Blpi%Nh_DXA~f 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 Q$K%sckFqjDs^9VcA5+vH@c;k- diff --git a/client/resources/hardnested_tables/bitflip_1_028_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_028_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..e0e9538cab661161322b4540cdd06d7e0012c145 GIT binary patch literal 25815 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 KcC5T+%YOlrZ%8u$ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_02a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_02a_states.bin.bz2 deleted file mode 100644 index 18c04fa4739a7f9220c05a5b4791308e8a916bcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6158 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 diff --git a/client/resources/hardnested_tables/bitflip_1_02a_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_02a_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a1347c78835cdaee13e355497f25ca5f5c0109f4 GIT binary patch literal 41308 zcmeI53y>Vud8q%M>6z*6?dhY(N?Pr%q!E(P>ap6@U13;btfoMgg`@~06GMc;st^b) zEfSHrwoE9s3S$T4M3)NzDiQIzY%aOHL;}Q!*k-6oQp8~6D#yMKIKB(EW4Ks63M-(; z()asM&pxvfSOTX~>8X--ru+0c|M}nN|NnE^J!N&{#%=pod{yMy|JC)T99^0?a_VdE z1TuSXSA!HMix)_-RkrTyPm+E8kxVSk7I%x7Sk}(p*B{Fw{m+P#Brl(`x62c6ukiO0 zkw|hp8B6gJz1_(Jb^IMKu9&LS7c1h9lT%)MC#PL4Z>4L;r*S~zT#{_}mdO00OX;Iq zid*#S8R9WcB*tr$P>OW*fRW-<6Fch^4oCLp!Z`1Fa_Zi$zsq^!By6QC_jG!9blmVx z397=dUW3pDx02))Zv4zhISKSiMV$5|iG+T`BybyLQIgPH0>+qYB-riIQ&sXNauyrO zU*|=I_M=NHvf7BZn;V99JnJQI1K2JT7cMl?(4!ZU?RHXmBaO+605q3zq;4ADlB?BE!8u6K@JHyEIt^B>l$dV+v&d7ufMj{&M=gSrYml|narxyd`$wYvh2fCQ^8QKI8 zq+KWM3`}^{K|ARr=?7+p6`C(%hz8)!DJ&I$VoD&=5&pbxqRC8MmWEX~gaf2;eFzfb zsXUjv!^8&6%UZsdxYfoqm_Z#xFDA(@Q+1p9_C%;$Q2c1xA$@)UR80fQZ$KaBLsLHE z!1;zSh71#+od>Nf7~HuL0wqbw#Ip@IpmGty=8{)wsjUM0xV8eT_Va6+K)MP|Qy%!R zk)@#0y9~4@hqYrKUZ`#N(073+0c9b*4xrX{a|cL&Hl>ICeI$kG=pvO+Bd3&uKCviq z3g94ly#2LzV%a@k|L3bXhiK@D+q*HBlVU0paju=Fbt)6E(s=J7v8*I*rqO}vWV}x7 z5xywrZ8GuB?MMc2Edaa4HY2@1NabN01a|YLPnwa+I@2xn2*p)g+ij$@2E3P3c_<_e zkOcBLP$0kE#NOo!>gT~)yTTZ3=6^H-|KC}rN%)3|KewEwe@u(FcnqMNm2|O&@srp@(R>k!>=Bm2iCmGTGIj(O@VEEE;#k{GS_mf zJhjirI40b}1cKL;_OM|+7lIpWEM3P?H$l)hco@A=P#QWf)PzS{-i{o${;iSQkiypF zF~ksZr=oQa&@-c1P_rRb46$OeiI#m^jdWOk*r&*tK2r&Nh7rS;U^C;rUSnA#(?uW1 z`fv$^pS+H*ogf+vpe}bA`C^hh5AwIwnk$EQPllGk57AfWDC+dn!j!>d%91c(PPrG( zeiH6f5mOv3Q3ZA?zuG!2_rQ`!!@^&VV9iNJE}=JxzRCmOqg#7Flyd6pMt%y?>z4ap z$kPH4U0T4`4kLgEw*=~F{uxvC#)ln>S*8M8Nby=bolQn!tI;k}At{_~f9e3kKM>*> z{mo;Al39XYmd2|rUsR;5(DB)W#-P_{;Znvdt_I(FnGfvet>cpY;le2ZT%^qe+6))` zTNIx!`cYf)nO2$?!bk;eaccD<>GY+DE>i8nRVWxa1#6vh%8m5C%U!j`1Gb9fv7*eq zD~#2QwTBh)t9s!|h-{%q{s-tYQ0!|)er>OW(B>Z1+XYnB1USVz1TSNR8dem4rRpC< z`HCVa_$WAS3#$qTw8_C=1b;avg7Rv7_)R9aIDiWYf zUY9a6Y2Vk6Ec%}jFWQ8G&IO)IXA?@D#?nl;xuwX`oRI!vXO?-0(K-a2Il7Bk0=8p3OcV_Zk=Y)OU&ZVEF zJe8mcxPr;HCgC7fdzQatGGLtp%~!&(^p#5XMt z6aGz(x!yBKPsAbQu`8Kxx231@B53M4k&g81#5W zkiiPHlc^9QmNQ|8UR(`JUH26Au^{hwA2$m6n+v2+3@tlGGS%dy5WWtb@d;lQcyh)0*Twsh0PY%M`-c_I5_Az;-Yjg8dmq*GRw%5NL|?P zFJ#n5E)6?MG((!OC~>Zg9Vz%%sFUTN56@Kh8JWW1c_v!@g-VyYJH@Mzx#djeB~{`R zU=%O;sY3XU>2>SO`E(^ExIWiI+kVrFeXB^4ltDsw?lgJ>0K6M?Xi(i~;x5!xp$vT& zgAEkQ6;QNDvzD)gy^iU2=P0u>S`}2p^x3EK?sqEtt9+?_D*;2;NjqRIUT?og4u}q6 z?)<}w{QM-w-Nm?z@vrVu?l^3s3*kRcskItzxRu8N3?~4*x=g$^S%`YV;O2l;VOGxy z_3CrKV{zDlZL4bwwmD{R9;DQKtk;Zm>hzKX5_snT&aLQoKuqbks?G0S0pw+ceD$0B{p)WC5khH zE+a`EWY#JJIH5YPD9?kX1i#(6n3-(lMlwHu;jK=XzK2=8tiUa#<>|}~*i-LK{y^FO zdR4;eB1q#}9)VYI(j|e!m>j z8%i+MQm-SyCCjk&!(>=)OKxLnH6XOjraQM7!JG->Ou|B)6TojdY(;nKgMD3z;q0Ir z==9g%q-_Oj7pny(2HmOK*HOSRgS5))*I(nly~=AroVFBv7G1G}1G4RURx!6p*bArS z>XmDJk^q_jSyY_^`$^u>91_)lKX{_T35AD?V zFtmop%HS~-^S^>rZ^8_ymI8{T%tKWkLdS1Un|5@Xj(j=X;#fRb{S24AKr>t?Yu8wS zMdOTOMAqZe7-R(1rRpj5@~|Uy_#SF#{wEAO+}-0LBpLF&Cx`EzFi5?Y+0)QA^zS51 zcG%<}m`;y>KO|b*RcsMY)kEu);*wKCJbh`^MO?j!o54WqS#bZgCVqaoFRgz3Jip#D zkx|C~F5c8z^yi6c-g)47I~+dOE}i3i(g;eEWF^2JKn(-*#^u3m^lUw~p^F+78Kw zFuv+Xxc(0z;s(G1{2F$l(bG=4ob{@rU&hy4b-2{)Mc8f*<*14KKSg`kMhv&)S*Kl< ztWL4hTqKV7W2WSk2_4X)pqOivLQu`?g(_0a#h@a^y=W4Ub5HYYsws_-4f zbek_n{g?-TAFW_jC3yK2m`LhaUK?5*Yk56RZ?2`E5^JQknw+V69{qQNmGNAKr%l-N0z?iR+&P*>;(eB-3%s z6k05)<=7`-z{EW!%f1GZtsGm9g>#&{=nGE7U*n#e`~jEL{YgHSvLK5fi{BE0uk$sPkR)F+@q{|H$<<+|25R`pC6+&Q z9y?6+3OJznEhC@iR?`nmd^5jW9)%eayyvQ_NwB29k_2)N*gv&x4L2ey7p5zqrq%FK zE%b4Z&hIHda*FpxFhD^q6#hYyJmM`}=Bm&6F|I9RQlEgqR}4~YyVrM9P`L?3KxfW= zFm<xp9d6~%m}Ngpg!RDMqk3_+iNAd|xZg=jd~WA! z3Y!i*e~RWgJ?{IX#Sk z7cz0veF24V2oU%?`RN)LOoaow7<^_;$-Qiu0nv+;#C(vML;phKeotl)84W*T%$2$b zUx*3_z}*?z=#3l`k*QCB-~-BIlWQ!}U;MTkL^FbFi(N!d=b6eHI%AZaMI=vH4hM{y z9*M0UAwtOtA5Vk(Yt^}nr=G?$+p%mad+DkvwbsXR@-#q)W*b@zWAYB~fK4~RrUhsZ zEF;}MIc!DI-=qNI>P=vBL`}-{a#mYyQd}zH?SjSI0r3tvD~$lO(6LUgr`Drt8bariKjLRw_^(c}w%TG{6}2Vp<(_mX4sz3v{)g}!c ze1eYWp~!1SGw&a7EDq6X3p zWquez)A>lqse6>3pI1FVbV(za_5S_nbYf_qb-ft`FTG0MeQJ7e27DK>S|?8AY3@3xL*jVYi0xrXj6nSV*mb z9>xx-F}p@)hl@r?t?>g4sVzbRXW}8Kmdq1{CGx02qV{G|p&jDkU&!}a2oS<>7KhPF zAET)05RK8rD;?_!9pTCgP;g|l&8w~RC!wzPU#`xPjk!JcE-|J2=JQ(#y;bXHGO`AAKhV%yC>~TC&(eLFTF)BSt7dEBl7$C4#PO>h>nD^i7UU*j`;r?>Wgzpl{seq)as28viCa)}CP=TMzN{ zH;wEp40&p+p*Ybb+`o7;*;rQVg1>camyNK%Nn~HEBp)M8)u8|OTS>p-(nZbV-Rc+B zo3bmR6HUa<#I3^-YyDdrGSV`WKyFj_j*RxZCuHHenv-|@Z0y0HTSEo0OGMQ@%kOp5 z7_$0brfE77ts!#Q}EE%?atN<;sL%KW* z7^2OuV0h{^o&%$m`Z2!^4x!OH%d@PnZQ=tZ9_PrVIODwzC%{z2dBw(v^v6fhZ!SYR}qw#Itye&e%g~}LKY8YLSEMX z@!Du`B(;n$*|zcFwXBA`Pp&fYP2*Fgy9WR3X$)$|7V2-a)p!+!Fq-n>w4IOwno?!g>KuUm%WjNf!7X@$w9u%h&C zuVt2d3v)+vpq$Bwqa$c&R;VkjWyT%i!7GOIV5cfo%|VAOsKwiaMzTrhuv=B#rRx3y z+p&_+2Z<8(Fa(JNcVS7#A_%Xpj}5>nU($0uoN-<9->r8O^E<}^PqT0}W*nJP%wJri zm`ySSZ-l+T;jdO$sLDWO6J z6Up7me(It{+=}y4Nx(2P@GYvOebCM4$eTBFCRRsW z7Ms=tHZJ+!VU^xncBW>JILr*DQ)D`olo#GK@<;Hb$JOwhfzCC;fvhpIXygv{buE*e zJ1U_p?!;n5=-^AIGf8^;y!-YSP4%%7^>#K@B&Zo~@1JHB=ErE%qgb$YcqV$h-o%eD z1-1L3{M~6{vEzyH1i!^SleP#8bh;B0^_YgdS@DmI?ZvVq?7KB=084V8a?uA^T}S9t zxm9eaTx_WP$CH2$#DT`OegvkUn*q{Fsz(}1LEL2Gf7Z16$e7=km_I5*6FE}$e#I19 zrf8!U)sD-J{NyVp)|Cemxdtk=Gp#*v2ztww-o=6%t|#W>gN=Z@zu1rJQ|}GtY1LGO zxLftx7RGp*F6m@4%`C@2N1sp`YeJdMb@vt)?UvP}lo2!!u9b&K-tp`1G)n<02=CFg zqF|MVr!716n`lNUhr6Qe=P=SDMjA*LNaebku32HMsJvSV-h0atybtAf1=#!>;2Zqa z{KXel)a~a+i&^`Xu*JyoJM`12nBE?GqPG($yNfrL(YLj@-W3|xyVzFTh2J>^R3?EM zOG$=edxNESa+0yV%Z63sXQp0a`4*@j?$7-ub$3A@DxZ=Q7zRynffh1;w9V`N zZWxi_b|%&e@II_Hmi6JCb8LO|ciM>BDBFR(?>!L4tP!IP7%<9$Tm5gUNxlj~-3V+p zs9GACh~29BfjjZiQ0TUb(Pp&T8GxCYTaBEl!LeImD~!l04FI~y5}I@O7m#W&)ynsp z`}QLCXH>BtQNc33oXNu_m5DKn{a~e-J697#1Sr0upfr%k!$0I<^*RJ~32JBpl&Rvv zh8Gub5%#Gd!vjUbwqDh}JXKrxP|v6yxP}f-tTqr0-={qgI)2x<<8QMz@L{YDur-vy zf`X?@ghBW0eJc_4?!VjpI;PM34w-O&q(rNj!G!CUK2K>W1Ph#z<1~gV=wZ#TW_k&&053R+~(wDwm(7ahd;8 z+mK0e-JbKRy5+DU#G0QoIreaj-s`cI{jcQn=TR}j=2~H=N9;Ums^?7%BkJ*D7q`}GQ?$;}39Ek{-d{{>Q^?xtj)kFe z024n#`Xi4jnonxGVB#y<2!(4C&5S*&^%8^ojLA=E!jLQE88i)8b=UKS#>E5PCv)Vy zsf1zpZdqY-cQzaBu#bvqlaRT5d|2J+N1KeynP(;x>ezmWN{kE5;oo^?Z-KF!=FkAvI( zrv+7+q5G0u4u$CzP+2n7!Yn2*h3{)U`3gHy%tvTP}isddd2Kn|>>cYy0J1rcKh4mSQd7KC>gkpCs_#7X3@6ZZd@uWCE!S*U57K z#5cM8MVe0xmqS+H82D4$z)ZPy-Kj;O4tiI^Ui{pchzKS#mQvL@n+-ZvRA!%s5%l^ zJ?WhJ`@ikwV9@Ob71zr8!2XJXN}^g3WcB7vCf*JBBQoZ-3P=O zKWimqm$K>wRwQ?NH%qZsf~s!y>vmMm^>B#cCuF=*)8D^BvZy%@tnQWiX4D184QXY} zx-hP1po172trU7FmmZdI;z~G-yHN6Q#7G?+p)#DVFgnAY?1Ij4(OdJ;L#qDMg2-d( z;_6Q@8&(gano#wIQbs=L;UaqNCH+oS(P0$Ac8t%j4|ws);KzySphReImsSp^dbMnh zCi8;tBbBQzrp}<<#P47S3hXc$Q;i-%?>T>();#*pcqS_99XAi1VTUPX&mqQ*)G1A?u>aP?{bZ#?vt?e?bm9Y&lA5~Rj z)jx*SV)!>&S^igp94LbYkawlKcEMNyBQhcJncIf2GGZ4HPD~$a)*eBHhTfx$mn1(j z)pOIr$9gOqCiY4$E@Bw80~Lx^GK%WxDDU0R0R^p)$C(LbuLTZWXz5uhPIzTnR2SzD zK(SiMBV4wDMvwA9oAL!pyymIa+$(F#2P*Arn~;C*`EKiL@0{Uk)oA3N9rn6@tR{Po zsj&SqR<~tfE6@xCil5y{^5+%-(aJDhZJS0x8FxvoYR4yyB_q?K2r@vj%PZCTLTT$s zaDD7;K(_J`UHS1J(cT^dl<}qE&Aa|gL}bEQ7G8fI!Nl2Y%$&A z3)FM#RYswU^!!0BA(iSB?~;|e$3v=+Ldz_5EUk*nBOfn40l(-C_SJ&Z?W z%uXB}e%f1h;-I*;ypA#|)W;D@bY4h{>v%g(cH$r?sl8RHH#>1~EAILmVK1e6*@=Tg zwRhQxgV~9L2k|$u69-w*_h_;Dzu#6tS!#CT;IUpBlASnc-&XS_%D7S!+C4G!#9(BhlyrNr4wiL;jyXD=m26|l`cdns`tdnvKLBOrSz z@fYmT5t`t9Pp@aqUP?Ura0TiqvX>Hv5&J6}*X!Fc;;HlS#_lljdwb!)ih)zSlN;HW zN~$n>DX~4xB6}%u_EO>yL83xDdnxf;R{q&biL;jyV=PYmjV9TNgS>}_qc5He`Y_g` zUucq@IGDZFq`mfDI>};;cBh(ihz#=SxTLtHyuUe%G4kfR?8L$B#6d#pR7EdIlI+C6 z?8HHRRU(C11E)!iJdGwhaS*G)2_o5vgPgZk8d}ATI`l0&agcZMWhV}%N7ZE~4rV6~ ZvR&eXIdO2?`D6guyT#}APd<42{|EWNQ8@qr literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_02e_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_02e_states.bin.bz2 deleted file mode 100644 index 2ecb621b35216213e87ace8d2da09f65d36e9910..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2012 zcmZ9L|5HNe5O~>ADFgyZ-XwXrE!je%ri1~xqI^m6dK{3v_t5rkH;B6l zsK~d322!GgK(eDyi!Fj_ft>bW2b!;tQ z(GdY}Kf)|Qe)~^OFyg?Uwzk}{B-)ul5-sArrq~FY<2`5Dep-b2M{wtvh}fMZN9RIp zWyJpz17rSAJ&tJ8b{}bIhhwLs*2I)anGrGzbKkq5G(tx$m2zEgC=W1B{WV ze<3H5b9)jq(3BU9`!wfN-FrZSmj5(e{Eg`EYT^-ixz#5GTC=Wd#w66dZ1HdC0!w2% zmC~2R5@uwjhV_kcmcH)G_?r?JYfLGd@8b%JOY0|eS-#4f^yL4D?5j!R6=N3{H*Sb-fUDH{HXAm0D`VE& zV@nNJ0LFK?*r`v}30Lyxcqgl&W5SdgXfTTo5bMC`m6_vtj#+6*7R6*3Q)#=vD+|!( z;ht4!cToo8x-O~Jdh%IRx7%OOC;C^@*CiAn{*IiP6cv+YSQHr3SH^yr3Km|+HSYD~ z{`!hvZ5YolK7|GkJ?NhX*Tx#ER?%go_62?G@RQ@EB5dZNCg&b>ftfP6zi5`zHn&NB zK2Yk#grje>j+4cnrHz7S&?Gt76>8SZew@=|YxSDiPCS;ITz6`O$ zr+tNS)1%V-lb?jJ*$>%abIzzY=fm>jfrT&%ul0(L{Y1FMreI_GN)EMld27qIn~Eroxyi9IWxI43s?x ze@~_QUS$6~Gq0RQfpH>Io``~dErWW<{7jnZ_J^vAz7Sq+Srw51@z3|42$RWMf93RL zNp2lCzy8IyK9C%-$_RZ}$AwiNZ%|Vpx)1;n7h`$Ye@8=&f;f z@Vv%rlM8j6NY-NpV0w_C(J#lRE6hBsfx`|=lm^=qW@$Ovw9Td0<}GYaE1Tv#fkQ#7 z*av@qTOj_p@YcaqRyg$zV@w57hVs#){lE}o>DuaC%_VEK6FB;D?evk*E(f-AQuRyoxeth$q=ns>qyZzED zg>YK1s41^Mti4(vp89EU1btdDY<^JBJ=$N#YD{C?%5Cyjk`_)4b+%gguuaYuvaK@n zV*zv$&(bT_-p=_=juqIgRAA|mV)EH*_c1qv1g)Yx|DOyEK;3p=24=U^!k^7t!2%NvsZ?vU&g-4 zn_{0x5T#yVs}btwxS0IrPA>68C|+7=h#H;fRl+FrHQ>WLHj1Yytd&Vycrbs#-AT~u zK>zBw)k^0ZM=bSK+dS_O~rN+JPO z{7!_!26B1IQjg1~JdbWe*-|_m)|GM+5Sh1dSKtD9`?$9?p}QLAC16&b8CSaADs^R@ z2^ddyK&_I?AXOndU~=I}~ zM^klJ0;*016H(7wF*^w0daVKBj^i>NO2ZK(MK7l@OA-Ml4BNN}49LoK5CB8-YBW+w zumhedbuSX12+7ng+)`bQ#(dzhEznQnkTfkY#7v7`3hH{{QU6QVn?(&v~7%{XO zM-Z3URiEO}XmvHCyJnayfHU|D{A_T3lmO>dU8oKL?5-(DW4Fqcy@?2no7k%Ba+bqs z0uTezgVN9xkAQyH01BEd{h`^sgXIFECm3SVL4$9JKdFSIN`l5mS@>L}fL3@``HvBS z!N&JY;eH)m9qiKB?SJd7xbXDCeo^)pSx1g+Q Xq}$xb=WRVdmR6#T-uCY=FYo&wFg1+% diff --git a/client/resources/hardnested_tables/bitflip_1_02e_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_02e_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..16254a7e45a0b2cd889d9733998873cec9fd47af GIT binary patch literal 22053 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_032_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_032_states.bin.bz2 deleted file mode 100644 index 083f1f0a58e4f2902e760bbeb89947f979a759e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3614 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 MJ1za)*Z(g5e})KgDF6Tf diff --git a/client/resources/hardnested_tables/bitflip_1_032_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_032_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b3f9ccbfa70b4a081fd7f718e711d7974e484bce GIT binary patch literal 35067 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_036_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_036_states.bin.bz2 deleted file mode 100644 index 7fa414bd8b7405f400b7b4a1ef837582843f6607..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1975 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_038_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_038_states.bin.bz2 deleted file mode 100644 index 15f739f1b73f21f7825dee226ce83821a7c83b31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1274 zcmYk4?@tqV0EgQ`D{U{7aLr z_?T!px`8^ny6+xm=s&ys_q;tFirpzIEi)JmW#bcLW3^=lLuh5T0`lJQf8eFm$Z@zC zKVXa?-)#BGW4*+kK)~^nsq27DqPv;A=fIX9)#J=aiDmT%CsVDcr*sC`{O$X0ji9BA zl#b6X-Tr>5;cDma+`tpl0IWZzmDuPGx^rWUnq99SjHS$^Un@7UnqFh&_c-H`N}|Rk z1nD+2ugZZEWCMy;=xi4bBuQiCnZq}I`?<@ebPi98LlgfB#XxqfFj#Gi@DApUQ<=?l zOj+!xh3G;^LSesC9l`1s9fRggh4ipV6QhmJL$jI2i8hlcwN)t_b9k0A75fH4eFIN- z6;In14)3tN7J_LQuqIrB%u+dt$ptg@dGp-Yjt9wp&&)#G+;*dI@tM-o^7fOpo8R3m z=axa?<%d7K+qUMjEUInyEno8$Yrr%@%YT`&KG{o;@^wIR+_5wu>&RAIBpc0~Cfa2S z!3(3$tFEe@h#9*2Tncc;GG#eUWg#7odI^GN@_^2?dgGy-28J>otB|t0Kop_(>9J`* z0vN?e0!BCCc@&TVpzyRb&fRS`+^>}G$_-h+*cjn@5q2^s-FI>~s?rZ_nf=duewiw% z(7}R-${yuS$IITW)cU5Tq>D8SNC# z>MTrl+tCU5CAhgN)?*H~7xq{MiKU#gYg%GOK`k_wJJmuB);LdtbJdUEI4+%Ps{E(= zy81^CKXYsJp!0k@H1*qD(L2X7Ol}%Y}^p0jtip7Pm%#&hrWLOq<&RnhJdvgRdRL(??M| z!sJ)^nA-)|-BckxO44VV!e8kxt8?cZvHWZk^UCwA`tjtlc_y=ar+Sy>ah}24s6%1d zgiC2OyKB{yEhq+1>+a=3Rro#US)xoGImp5~M$*VGJdYrsUeHo?8Y{_r8CV~V9|}hR zeZNZ0ASB|?>4{2xt7 zgxwmB;vAzeqReR-m;^#g(xjzq9%sOyrH5UVtrHs5F{Ms*h7%T~b0uz70R*IzjC>Mo zC4rnIq9qm#!i1%k=CMQW29oH)>J#=dRR^p>p_NQ-++8Wkf^LKtFgi)otPVE-Nps^c zp6qo27SNQ%?#2*Wlv!~_rT@;2`i3Hj0a0|Rg>f`Alr@I^QhTx4!|6nTZ|*#@l9>ya zTfs1Z5f|Z&mTEHFhzlA{C;ch~kiDS{J&dfM eHuhFPfl&cFXz>PRfaCqI&eT!7)p%{>Z0&yx&jaWH diff --git a/client/resources/hardnested_tables/bitflip_1_038_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_038_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7bb6d96485e24b1699a8061d2a6223bf272906d1 GIT binary patch literal 21459 zcmeHPX>4586+Um~&3G~yzhe?RnK-s*zSOi4hN6;^BKMkwNZl;_q7x_F> z$kHmN*N!D;AZk7+zmjRGtu$2$xR~i8efk}!d&Bnj3(H9@+X)fic9e57=ArKL zfMVQ5adg;ir@r)TR0Y9|`O^BJiTY73UoU#zsI!uaR_1#?px8V&mT}5goEekMm(c_ z>~A4@VtbhC@f;`-Pk}v`p|7V^X1}yd`*T@N_XVaAW4ywYT!%t{E-G6%Kez#nHltAr zkc?r%82lvxZGfS$9W+G50Eh^HZM`&nH*=+kVerDG0#I~G~5AnDH;xChH~C2J2P~61_tXI zDL$Y8a#^fsLzUZ@=50zIR9Vc2qSj}I$XgC^{&ToEzhE;Zg&LAopn!3`X!%@8xS&MI ze=F=z8o+#zlK2y-0OKuWdhp&}U;!lYCSYYBVKU+Zm4?yLYlNymF=9S+g;iI;ebpIo zzpN}6I09Z4HN`+v0D$;D$N@FuU1jE!RK;q9j&n^>5M2;N3EDb^kIPN8R_XdJYC{o# z8fpXrp_I6yVC`Bfz3TuN)rc9T`XYxQs2-@XoX2!+H<~`9HrDil=h4s90$o>gph^d` zlBQ*Lp@Dc&Cc(5&FfWL0jO!6=8k(0eg>3%MFvw|>ouC=?_d@3ZHjrCU;OZWs&iA$k z`TN-1tDrkqYc5HyhAw(DnEK}GL^$m=r49qJ(S<0|_CG-PYrzdDo~lHhO7lH!T6Mup zM!_$gI^9zBrt0A;i@^fzmV3}oYes)P3#0?Zu_r(W<^Y3U>$(Eez0PE6y{laYCG9A_ z`8;G%w#=f%D$(jGd_9iLeh)(hIsH*!4R6JdC(-v~BRjFg|nI361}-_V_B4>Uh~MnrOc@&Skq;biWYjGALBhq=4CoAa;Swhlg1e z4JwYI>z2^69DtBMV)_aeT!WN0Nt}Sa?v2AR6k`pz$ebF+f@%iBu6coLXIM^cx9*Y0vZegYX2@e3;}Fo0COF*Hi1Hf38&=PYZ$A^^y~;Q zjwJW`Z00lt=EvYxC&-3ntoRL>+dAGG^_jA;f>l7st#6qC28>t1z>3k1!%&)OrNGNY zF5?LRf>NKcNrI4CfT-y7k3z&Fk_$Z~oY&ti8jSTx1=z}sWu<`GPpO(|Y-cZcg|w{G zQhVJAor9jjVbIlh)x3&nt-iP!jzn1kMuBbW*veX{L6LRgfbaGz)!-cqHN2MRfCXFg zj#3Ac*j@1g-3d19U}K-{VR~p!XwzUgq3dg23r#3%qeG)i$1Ipoj60t9n8{}GS|z3qJfKvm^+)Nnrs-W{6pkV{k zYk)Jb;^IyP91OjBXcu=XGwcPM;o{B`Gs63~B<_5h=~MWEPsTHj@q8S?OprySlKL0I zlgTrYO!p&nBXH@IOykG}xS{?`A@4RZoE z9z-s|E|~7w$L69gHd_#5oPekGP;vZq(@LGw0XA(qm(l(|F_!;Fs~aY?>Ke|w(Z5&N zI1V%{6#N-`&HE73jR**OY!9^-ya?=iAF(J1*GeL{vw6IPc&7c}`WnOr`@!|6uyoZG z1=e0~Fg=4+O&)Tf1*KG!&0Ar~>$00JyIF+nAY#uKPZD{$?54|Z>IV^*-5hP>#br0k zYjc;~wD{2cD|~Y?ha7rrm)&&PO@L#&M%^yE*(*|T*-a6b-IUT7beG+-B)$@ zRejv=BI4rC$@;49vYV%Ax6#-ie_VFcWjDj6v~K5d*-d=;wHH1#yS!ZZtC|Lw|CR+-NaVVi5wOh zd-=Y>?cKx|40mS8of+!W=K?HNn= uACcUDL~{QT2?ugd%YQ_2*-e+-blJ@j3$PlGlbGG?Uv0-DT={KZ9{3-kGjGKJ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_03a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_03a_states.bin.bz2 deleted file mode 100644 index 61ef022680304d5eff1863b388b5631e1da6bb29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2736 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 F>c2w&vupqW diff --git a/client/resources/hardnested_tables/bitflip_1_03a_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_03a_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..0f3512d2132780e04976bfa5fba9468ba4b71cdb GIT binary patch literal 29421 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_03e_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_03e_states.bin.bz2 deleted file mode 100644 index 7dd251575056ef45d9a285da96701d14f2424500..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1515 zcma)wTTD|206@zSm~dxtrKL3lM4+|w26}HbfrLj;2SRT^tkB-20s3@?4=HSksD&X| zEbTyS3p7EAIv>KHSsz-BIl}c4_UkL4L})2ye_|>lAxVeniImELzht zzM#dGdx!zr+2+Mr5h6~alvcT+tn`{Rxdgg4SDN*Nxe@%QETj6*0sYQ zfGp#%Ot+js2vqK0so)Nsn+R0g>EFiB^ga62J+_GrFj(rstpZH8&VH?Ln8>XTWCQZV z=Gf#_Bjfjt;niUJt$KOMGkJldVtINrz<*5KZk@sR2d~Y(g>pjFIdxZpn(27eqUhyQ z-Q4Mi!xJr^K$!KX{6VPg;znena#b_UG}~vO&M6C!*Cw*B5#@i`(|`7?4rI}iKW6uo zi0>B{Z6r9bk2MY9QP0k%Oveq0~M_#gnMJd1u0b>f;n318fTmzXBr4cp>C5yyxvOX-{&nyJx3md`igRdT}9ot z!gu&G*5wLAmC30IQ^Xradi6!M!?sTM`^ul>s`--3+XsVq@!I&gU#7UtT0eo1=%U%6 zT>3`$+eVh>94R)ae8*ilkFGsE;X%1$s+9y;M}7KEc$gDGP29wrmpgph=8q3-(|yo; z-ez^60YA4jx|wjjPgn6Fi8fp2d=IhgzV%nZ%E0nj&C8*1es9ea)Sfe*TgZ-i>}31Y zD%_hAqq1ep%>MF03Y#d9A3`=y|9TSYXmVhF0_;yivk0Mj{hMA?rczsHK{Mu0#Y7!> zzTQW1dQjB9O9DZ~lv)V02oxN(QsXWzt(9m}<{)>Q1BJUHy&h4gJ$cfT9X+HA(DrTm z7vKT>@#$KGXPt#sz@rSfPLGt(v{?}fE+`Y%6Lbz#qM;U-b7>cN1z;L)@X`{} zkwo_EtAhzk#CNdpFu2kz{ec($5~K`LZBwQ>L{%dR~j;p-^wK(*L}EESm2*L zVYstpG?e~OScuH#7ZMMsSn8P+Ln-anaE>4$F zi-cpy5dp-G6q5FPKnc%F)OD39bsCsyVOnP?3Rry`B#T{TY91z35WsSnf|RzEbAa1r zLN{>4o=A3sN5(k7QHKkV=%s9s$03o$?k*7l)a+ECLZR45b_k?oFM}c$+d+Upf_QGd zCa=keVO|nqmWn_rPg>Vji(#pQUNs~Zdl}Rs^TmuBpJ_zs@TT&5%vD~n2XVnt*uwN^ zU9guTQ5#{{S%vAeBaShX2SVB5BBBCPfo6Ds0DJdhpj)rVs8dV2j$<0K(ZyoH911G# zLbRAP9Fp{SjAFC8$Jx@~sR7O60lJ>MySUKfq!JjP-_)KYqhND8{}z_)9#Rc%77zBp!kW^alj#%e;C_W&x>;7Vemopzj` bSeH5j2%rnRDpJB$+EiQ3^}T~f&+qvg==-~f diff --git a/client/resources/hardnested_tables/bitflip_1_03e_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_03e_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7d66dd7eb9bb109464bffbe3e4f91fb6034bb271 GIT binary patch literal 16874 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 CPwQ;} literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_040_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_040_states.bin.bz2 deleted file mode 100644 index 87d8693df1453a2c5d4ad7917b0252b1228fc130..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmV;Q0bu?@T4*^jL0KkKSrY>VjQ{`uTtU$Q5C8xGkN_1x06+)`zybU@P@w<-2mk;k zr9=UsDJdzFBhkJj5>Nb)Njk|DRCP%wVM!)ZNveQVsU*@sNzy?i=P4xAl4?mcNhYL| zAQ>g1StYbfB(W@#(pX7s2^F$SB(g-Ox^<-DnKVkB0KpQ#d8(4)N-ki1q_mG*lO{}> znocUN$udsKJgO_oOo?_0IFJuX1e4l9B*_Gm`5=;FK_tLQ&calH;wqIAxss_Rpou|= zP?da1l9Dha#F52-;GMdSn562J%$Y$aOhyZ{900e*lssKPn01fVxP#_ur zAQ}J@QmAOjpeZR+Pf&iN+7PO_B%KK)$t2Q%jFMQ8DS3z_w32d3G?HYJX(YfcNs?(M zq|#)WOrWKtu_RoLEVS8Bygcr81o<;wte>sdNqKl46xfFcj!efMlvwBZ^fd$V5XFN>%MlqN4(srbSp&3SyrH+>uTc JBn46Y{s4xXro{jN diff --git a/client/resources/hardnested_tables/bitflip_1_040_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_040_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..2d542516abf581ab8171fcecf5bd40d17d1bd607 GIT binary patch literal 15231 zcmeHOu}T9$5S@felpqX(g{a?O>5>@jzu9(QS%<64jVwf!8~pIMiW9MwwLhMfOK@*PwBvw+2}n%t?Z zWNUp{3L8!Mp${2ki+C#UB3wP3CDfXk&`h|$48q+x0ot&(&qQqiT2G;waNh+`7;EFs z3DA1V-;<3dY6H-E3eAN3uH*q)xX0OP<&Wb6Knu{S4&Y21C^TSV>j7GT7N89m&jV-| zk1iq*h3GM&$3-&TokKrDFZ)|hxf({5-=4Pk+r6nAoMHyqklGf7derX8@ zXaQP)Hb^DBor?g_0<-`vKs(AseW%_j3ha>RbTeDi?1d3e+o#kOKMv|ckn%yw2W5;X bV-y6U=1RD^=6Y71mQKu6dict9bc zlgS}DnIgD!ZIucMXj4v0eZTi!c38I6s257!@XKd$R>-S;ya-tuG zSLbBhwiCP&0*s@I;hZEXBYQQ7HU|s?q(u&=0MTlW+ygMMZnFy%^EpaBqZ3SaOW;IL z5Sr)=tV!%->z$G~K}fbWkS?`ido?1dqaMSUiepm|OiDu_7>b7>Vo1=?6ai&kf+Qc6 zNT!D&NRY5azQSY>xp5-pP|CP6bs_*d!(EW~pq! zC8!uxda|3C-yn?OP`KO%ytq$WNHX)}E2TUqew$(TZ?D?`D=-paq4m5%BI za6)9xQs)JT6rI@dQ$rrlNyam7RM$T~57B5b=~Mz4&EyFd{lu1GVrvr)5TNy5C>jn; zzEV7S0wXNB;qJN*WUoK@rUob3=tSxHAqxOGA}1tIZ4Q}7w9?!;d3Zpbme(Q>2gdOW zq}oM>JP|6vT4IeoPNGc=9{aM>TEG_ItYO3v$1^mNB1q~i?bJ1kb1lAR$D!ESDCxD< zWyepjVuHG4eTDHk2}PQNiC-m*Q{(Zmt>{p;;ZEmV{ys*cl=ip7uc3VuKfQQ%$ZHP!`9of<1UtWeb`)~XkUr64^{)YPf@9*}!`>guU zrW20{$bvoCkQZqNBNU~R1loF@2~kuyoPCEcY4h-LnAvvOjg~i+zeFXfi)sq={4Dt< zU#Abo=$1LumGqY54vZCW0?ImBZ4FIGPxIZ6eY*lGiI#^!SY2!Z5F|bB$Zxuvi(85< z?oE*=a~3CGN#UdPSi~M7Q9$`a&RqDj$Mr?3_T`m*BjZ7PcR+>{O|h?7V--N#lXZW; z`s2{XH#JaDpE^CVrBkQgEZW9`B@aOAFQ*9TOYYcyD;Swza;DFdqE=ZW-n5C-l%uip z)U{a!NsrQ6x&#d$Pt?iU;%3REXgEo-9M`(h$&5kg&=I2O*p}23y8awp+CvKY*ck!O z+eX(TBb9NF=$A58oAh{iV28lv2tF*$zt)zM-FSlDf~6+NMcXW@IM~O&{5mO41%ap3 z@_+>#;siNdf6HHAMF%Tk4or)X03+1bj z)EKUx8KY>0{0Y+!`Lx8hGB%qxq2%DH*wy3x_4fV}KSt52$kX3h(Mpx1N5J)CHl5hV zsoJCjKZ()r=|purr{Fwzei>RAeN(3sn?cY#Mrc>Ev`mntB=KW-rgR7g6tEQ>w$p+g zPM#LxS=PwimUbkA)9ONJVP@!iXk$imLDz^It7U$jwY@Y$>$jJvMtE+w1B7?spcXTT zrt?YtVbbYcQSpULiVA97q;$8u#{D4H6#)55W4U_DgEbo->Nr?Q5`81soFY2zF@u#TSa& ztoht248~ta(B1l?*!$RDS~NJ8ndP-pLrH=x4eflyP#AH5bb#J6etG}be5;V#v(Ix@ z2peYnkg+%L{B1*8dVJB|=BLvGI)4^xoT^Me58LgWTd|^#fZMg}YvJ~+=ySJMU!7Z% zwuiGW_`qr1ueGqHn7|S`N<)|CPUI{SZ_>^8VnuB>SfsZmzkU=0;d9VWV>mklV z`H`c`*jPL9Y?FwY_*8b9eV+J&{b+4b!gKtmbaG((NBP&f3~DAso+zr-isX5aL~b;!TAB zU@G?>I@9~_D(amJ!?OZdOr|#Zjj{GGEMDNDQki(JVOv!^oP;N+s08bt(j++*20HDh z)HW@Q=bQbOSX#n5;Z$M!Wt~-_01P8&it>ZYs}M!%YMf5$UY#enn_1}MA{MrD!;CgB{n^&;!k@!sUZ%6)F@H_j8(nx!?b^NPU3)Qb! z?Gt?@uP5@a9*qN}uC@<2GhN{OFz>HrkD6A)JYf}C56@NX?y>Lb&Z->W$NTptV%fhM zdNfTNuB}JrqQbSBTvl_m3``lB6xfgn?ra;0=*fpE5;-x;y0kU%2}6?r6H2BoPr%ke z)48Cmklv!!Rg$Bzy@D7L8~M*a;j#@uDe|SY>Q1kQrN2R6^)e{0gZ672p8^x>8IWUG zQj7lBsJ335*X)qc=trgNABW`MV8H96<9tb-79kvrfp^&T7&I9K!VogLh*`i=ZVRKK ziyP-}2(ZRe1cAv%mS$nlsW2hd#}%SEBbNhwB-uKI)I9OxO62UqdJai^Ie0?jILXk} zPt2Z*j{%wVik#zXWe-~FK(oCfu)O4M=0Hw|eVy-}YeD@aN}~@2AW~iflCVt5j40R! zD_q!-N-ut85~H{u9Wwh`^Xk3r04myyN#o&4b-!+ys=tr@D=aCU!LOncoBrS{f0;iF zXstDP%%RmSJh$!V*WW*Hdij0cm!>V!pN0-2eDwQ;N4?@GpuUQRlRyD^FCUK+tV5YS z(Pk5grzHtNJND*-kn8m~=g9ll-EMU>KS!@+r3Usgk)b94D(&rfaaVT9V7nD^D)>NR zt%hfBAeUJ9H3cfvcDgDjhfK!_RI(F);vAY4TSK1TKV#u1xxt42hQ`2NSB0LEe%h*U zv0Uh6-HUwOzHm5x{f1RfW*@u%!5@jb@ttusIuOjMq3eI2dUp5jp~$~;qMn$@IZpPy z(mBzC2FlQ$*r#t8Tjl>;$$wp0dDn4ResNQ$m?dVtdyx2#e${l5`c&|iyCRNAY(QaL zor4Xr`qX*E$BHUA?m+C;eS}2Fv)YO{#wmCThe0A4M48AAuS`t9nrq8bMLRr9CKrTO z?qr!qgitA7hm1~hD!D3>(k&rVk#IzZ8O`K3JPoQQ0quPx$8nifi?atRr|qPw2zXf` z*T6)}K!J)b-Vq1_G;U2w5?rgd;b5|3LuAx8OuK^@>+kUc+PX`ZbjLe~ly!l|UUjdg zY0;>+6;VGX=%Y(Xtr1jGFPnu#?@X`MGsCc>qh4G@zLU*zg)^}?Ta!ascGOTB>-|Nf z|NWYAFsd~@zCIPP1)}$|%8AurVeY6=CSLHUH2@#(lmv1@$3d8c_KX{bP{9c*9Y$9< ztD5+>XrBJpZ&5p!f3&Gp*qG}Ev%Is1s(0^+NgK^XjvVTJxWYH)Qz)7c+gFy%?ZsA? z_l|kv+!g#ZzXZn}C%{=7Fn7#+am@5ju}JzAB4*9o_zuB$5jC}nGkv-|p% z?Z6e)gW>KATYN9lHy8@r|2p*Tr;tAdTMtHE?sGIeUH_xOg-%UP<-I(#HuD8_#$*5T z(0WhUstM=5Mxw1vdHuI_PNuem&*tPu#K|F4L{45vbCDquYKTOK zD){jc1QbI#fyWrlo|sAr``o3dl;CTT6Q#{VT|+MXr5BXN^kuRHcO*MJt8249f)3%Q z5d|N`CFN0Wu;FV{#v$j9ub2G3r`LD_;K=trdFf2=}9pK!dRYLX^bzplmYM= zbquqM-Vjf+Fxg71wUg&H4~^aw2DQ?qqthOcr>KGTlXd3)bfDQ3$0$&{vbj@eB(@K3 zpkiQHIhqd8kBjB$q{>z(!>5yu2<+)ppl8S*T`5Vk<8=Zywhtj;xpJTu!PN5Qa4eI- zIg5}>&PEki1h7Px5;X`u9h%_w#A$ghEIGcg5Y5Dfvc?RM`aU!Y30J#&F(SFPCrw4( zr1piRIDjBciyTNttXZa6dL#1;K*oY*nNbBAx3T90E;t$*{TMeOTYaV|1gaeKNvfD8 zA!UT)^n_IrU~ErtmOjha(on+l<)Cw*#ySbM-B?OrZP79*mu@ggjWvz6Tp6s=Bn*M; zhv5X0gn}cRU_!vEmg#TU>dwX4grpiuJ(*Z;W^e0dVsTx*E*v>U8wgg#c@}^IrG+B_ z(H!~z3Aau3eDRT0xYSiv>opxAqvb5{w&T5Gq2hBXczc?~zTZWh+BnL02kl@OB zr0jMwF0j2eP00(xe5lnV1~wH3D5b5G-~-xYh{SL*9u~Rk&HVg##V4t6=0lEN&0F;% zm`B8OprGC80HT9h6OA;?alr)Mq!1GL+!*7uU2j;#X5!N6p*R9vSKFnG){lZDjiI2< zl;*Z67!K;95i0>i@iowx4Ff6n^Of~x1TXKjSye2Sj`Fl9X72jnRfe}AfvWfqueVd) zWf)HxmVHS@DHnshN$X}1#O59{)<55NjhguI3_{(YXW)QND@V^Qd;jfE^&jf*&%jeA zz8-V|y5mYu$%Uo8AxQE^*>kaXQQBT683k=vCXne)j!e!L#W`?;c`wxNgJ*@Mf-mm8{U4qW&h!#2m(@c;`+4Z3=WUOv-%AO)Fa9~bfmN2d|*nJDZL)L?iO4>h~ukN zAw8q^?g}g@)9H6}J=^>$x~w6r-hNHLwZ)0!d3h}BG7fKulRp@8hLi$ zra%$R^6}vF;(Dph28vhk-UvS6v?qRCWK|S z>Zd*I9q;#E*W7ICLiZJDIQT-E*_!aA=KrE+KBwp`{ffG_J8-kMcjt0Q58A-k8OzmA zg(X-s3M{T1ba;lG<>#I7!0XIYd;wac&h~Knt+kifrgqHMJ$klJOMR-vj*%=kg~ZSM zrwGRB#LfhTL%~^oV#)?rR3->{@@Zaw;U|4$s zUxCt42E`i^&tfOrZ9Dwf#qI7gz`+qW7 zJ9=%c743aR!t_K=Et9b_Wrmv2g)iXw_oZ==U2kVG*Q7e9>*olRGcB; zE3j*{CPo#>JC?57h5M;L%XItm-Q#j$5nweiiiX zA`Mt8{xkSFk~x&WZ%d@$6rw3|awbD+HfvUP)05Q?pZI4!*Z!KZUo@WeaAoOYqyOQP znZ>KCr`w0+TXLVNn@-U6A<2$lMUX%bP;l|ZPElKn)70ujZ?k_w)@2((&>C&7&>_na$nWi!=<+(LDJ~t6Uj=%L{ZI|dEb=c z+Xt#6hHed2l-N{7IPIVTG z@AQ)=zkT;fQ)=bQ)Io25(~t2z8MTs$BwBPUz>weDr%Gi6N9 zE@TsyYpN5xbTRzO=U+mG+?Vv|opta@odM0db{!gKnJCvyo}6sk4`koN-tiF{;s(1W z;*A{5xh&`CFDp1ZbdntTRl(ICz+n=X=k@`}(V_yJq9{=5NpmZh2Hcs@ri4$U^{l}U zACEKjb5-Rt3WEUTw6Eb;vxJ{?1DX!PObcPV*ID)C-y^?$zjw>2|H>^De7_Jn{^Q$c z7tcceQbZY^A6|bk$|&cTl>ru+1iJN{@Z2ZC!ZJD354%mPxO(<#!R?Z*kno0`eVBIspLqjr|_5+^L$JfF@_l7w{ z>f9m$jgXIzbIRv0`6IiPo-mgvjO9Rc*+V>8B}^nDzN7t9qScAga5Zu5rK8R}<0QFA zSqRZuvEIrwwvuR0u`Nt7{7R+sCel{%ivU&OxOKaDq_*dMx+0}F3LN?AEsnR+)G8TBM-+1lanuEeScWY+%7dpuATv0%* z-s=~)4=?vyHAV%yZ&`|z{LuZIkN@K9b$jk@Zn=QHTK6LK;JvJSM-wt z*DK8TyTD(p3TZ!8d-)qi*5TVx&YtxRv{%NS|HX)}q#Vj>+gWPGK3v^?#vb!#`(ONb z)>mIGF)YTX)9z}otl#kSN2#nC;X;_7Mv;4wxC_k)Ck51%c`vcYYYn1bnx4atcf!_ zcQQG3SPvep!W(0>2igTHYFSkk4PS@@$w6oNg0bu=e1BiaqU?nEVQRZ82lo55UiS-E z?OOG7p4YZ#F`7yn?dc2ulCFp66x3kN>=%Z>G4SqM`r}s*Dk?6-Sf=h{r+-fD@cFw* zw+zVB&%V4M{1oD^_}FsZkkPL!+xYrCR#?z^{r{bnfqO>95d`KfXMi zJ~y|1i)BEf^zI-Fx3R%KBvYPogt9v1mtQ`+^4);X_38c>jo*y@uy)Bn*Kf8bV{Z=c z`R{{QZ?5D2`0YZ{kA@#+QV0I{T=?DJ2Yy~(_(ZaSyZZ8bGRAloM3o26Zk8rp_dpuR29%c?J}tCux17fooBdo<+S3lmv+xVHV-f5x}J&kLhbzxiDJLNmW~#)`vo?+Oz#{k%aC7E zkc_ojvCaVH?x0F>o&2JPc8hRR7cw0Ci7;O|6|zTVT(P$wNu^&+!gsb&NGlcRReY1= zxKYVHi}QN#uBo@~A&|1n`d>2caJA{E;auJhv;I9MVos7tc9C4)yV?`V;KJfTpe{uz z?*m1Z>O{5GtmM-ytzEO183J=vG#eH^i+bNVnel@?4>|hoHCTU}ZTDdJ%1^jq8l&lp z3cLX>e)z@eHMe*9JB;oTa(R*8vXb}3F8F`9?|bxg&}GUR27h4k`p)57JYqRt80MZk zw?FAU%Kk-p3tq9zw6hAG1b&jy`bp#5NQqW7V9Z@D{`{CB@w! zU3KT190Aaq&ea^)OGp!R4X)wy>=0x1JyU79vUQ;D9N1Sf4CinK>EPpxDR_Qi2GHNG poOX&bhDRZKhN$fcv))g)HikAT$n1hEufLHZhECQVTJhra{{w4q>9+s? diff --git a/client/resources/hardnested_tables/bitflip_1_042_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_042_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..ad1bd544cf04cbe72db5592ba6f3235d1d1d5e2a GIT binary patch literal 41483 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 diff --git a/client/resources/hardnested_tables/bitflip_1_046_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_046_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..d6bf3244556bd63dd6322fa6fd011c1ad92832ca GIT binary patch literal 24386 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 GZv8u;xz%d` literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_04a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_04a_states.bin.bz2 deleted file mode 100644 index b31851187c14f4aa24da5418dd70af61e1c18302..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13641 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 diff --git a/client/resources/hardnested_tables/bitflip_1_04a_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_04a_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..557f84698d53d7ef081b6b5fb3a6f7fc4bacefef GIT binary patch literal 50357 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 Qj_(qUsrm6waw?nu2kM^3G5`Po diff --git a/client/resources/hardnested_tables/bitflip_1_052_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_052_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b5c4b3812dd4bea90bac978dfbace2c385b19048 GIT binary patch literal 28172 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 bOW~=6w3+DlC7w#S3TL8l5w55H*irpoIWI=s literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_058_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_058_states.bin.bz2 deleted file mode 100644 index ca2fe1a7a020fe5c20f77e1a395d16e40e0ce975..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1573 zcmZ9L?N1x`0e~G0Huha0#=hgmc&TmP3@38eMVm*U5O+Wfo@p>P*UB5dAFD<`Ou9`L zN;0zA#z*kstVsaXt!TxoW2gmow-4SlTKl*oRa+@W>LglK+tKxdmH7k7SZLnp_`K&| zc%H}d+UQTo3$NBYUj0d%y-;@Vv+?}>=1nfPgvr!}GM_pS56EOwg|cF)^q;c-W9LT2 zsTuvUChCtW&W&c_cTQtB&YdR6Sa`#KqvD*r{^f4t&*e6Fba&wgFIJEh zqZJ{Rf^kE79dU#$2|XNI&6e`G+is}xf1`v5h8UQs_adt@5=$C=1HGSr!K2BfuT z8iVPWtZRQ#J20=tt&N9gVA-&thKkCcLS;iLY>khr$)2xl-ezStY=dAA9i}35D71H> zt#C$0tYii@4PE2u>VNsi%*wB-5Ig_0cmLwSWo#QlQB$~FO}mN55&TL+K`u$9+${>t z9_ZNRND^$9cbNwdW%)H*Cl&8o%7NS+Nc->V#jMw%&@Q!i1#;!zVEsl!60fhB%N2M# z`$)dm-rKIc-Cl4g`zy(b;BqDMrB|U)?RtAUb0tdu7**YOT%$QWThNAl%WPSDAl=nS zf{%zbKits%w?qD*rYs*j>M*irW5bumhUH&x2?xKtbNEvF_hsUgkUL*WU#(eqtX!<( z4tlcJyPiOMDL0Oqro<7n{PkUL8~Y_Sr(H6;H2kgUfZ0kdKByL$F&u41YUGF~Lu3G; zCo;%`g5#zBSi+EVLW@qkC`5KQm*0%m3P~H3b2kU6sQ%lOOP}t>n_5c^kCm}&nd6ra z&l=tjzGXQorR`IZX}K;;*<8qdka9JNQ%P!_Y5y#EP5GCjx4!URY54ph@<{nf{#mL2 zdNRB9`S{($cQyHkm#e=yI`jPApI^Gb(8Rd??uA|O)EBqJ2Wmaf0=H9_F8SiUbKKw1 zTAEr)k<2tEvJ)zhBwZ#T0-MbW zJR}tX1QBh<=3r`ehYXcTEV14dq6R$62$Ko8wE+f@v_A~e`*eoeA*W&Hl`Ewd=DiYa z&=C|?C5EPfusQXyKK-6B~e9gsqM?0L=brh0I-e@}a)x0yoJ#iYqkSw8-)W0FX$@abq} z1Ekwlt)zNObn60^q^Mr;1(8J6Hp^PbRZCA2R-=jyh@{h(CP*8O8#O+H)XK}|{9L?| z7ltfK~KtDz$YhG8d+YP)`{1PIB9(?LpzE>CpIwZcIp)8%&0uU ziSn28pxn)G2Qcdc|Xxiu@@9f4a_ Y+nO=Z^6CEf;@7wAy4utCw0_zD0K{~8y#N3J diff --git a/client/resources/hardnested_tables/bitflip_1_058_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_058_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..88aee3f164be3bc12efa079a1cc6ed35565e312b GIT binary patch literal 24608 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_05a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_05a_states.bin.bz2 deleted file mode 100644 index 2771dced1a435e55080a106988b46d78dd04d33f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4469 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 diff --git a/client/resources/hardnested_tables/bitflip_1_05a_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_05a_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..18eedc09b9634f01be7172c894e73bc61467ea68 GIT binary patch literal 36991 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 hB??rN+@`9bGoE#t0he*w5~SL*-( literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_060_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_060_states.bin.bz2 deleted file mode 100644 index edc274c4bbbbb3830da0840d9bbadeb5297d5d5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1534 zcmY+DZ%iA98O9IeGv~9L@W*!?7Fi7bQ|^3S4n!t4r2&jFU<|Pj8y|>JpCJ=v`@p1C zi@GtLjqQK~9R@o!Q4=`@Gjq7qL_$i{CbKV)7^F$S5~|sU-2au;JPmL&i|_=pOSPsZRG5`Tb+!P87Gp1gp;&My}qy)-TUswCO)2U~!;cL!V5d6XyZL|aLxFi%7rs;5oEm0wd9r4GI|GkP}5~H#TPGI*fOcNnNM6^ zD635RgywL&!$#??x_Efis4FJv@oa~+i}v`2alUbw*TGtfVqF@dN`@2NHv6+Ak0D~Ww3yISO@EhQlg9pC2fI-=nOQQlZsTP%mYl_tSAX!=kMs84T~>W{ zqZNQS0O(8uK!f;c{!4BYc%O>_G&c>`4!)us9J0-;hW?~BOqJ!E=9G$|tg<${-C@2Q zlW=)$gl6N^{26?$9-4`tS8rQPNLmk5RtAM^K3CFF*Mydea!fb!3)Y=-XM&lFvV!bt z9n-@79|3>At8ia6K019j)Gt05_3X8N2g)82`cJj^mZHNxaZ;0ku7r*6J}IX3#X4xS zl~G0YAdA6KlgRE$Y8@;lEFL~dVJa0;+i_Q%epJLOZtzPM4H&c4nFZuEI6iS|bMq&v zk935dSeb1N%o=`4uh|x?SK0iDIq~Kx%}%@Vh7-O= zt=K;(uN~S+>_pesx}?j7r~2^8;jQee-PR}Px-#Fs<(y+BM@3i*SY8^!n*R7g`RnrY zMQ=;MJvB563QwC*If+>qc0l&MneX3HU4St$C4)KFC3vRK=X*jM)B6(IEiuPgthrxw zL7Y0IS?f*V-;fmohO_=dvRw?tETWV*wJQ1+8<5>wb>y5OXMu-x&b&T`jbfjVO6ni& z+kZQTmL_h2eR%&qAHF3r_bSGJBMz@>D*PuN`yBNV&79Vr=@Mh(9Xh+dYItk+XFZru z!)NFrXa@lLbR>w`kyRqHDXs`*ME#$AyoZjSvD8y3K6_D7F(@k(ZadUv4}Mbt*I`ZhAVn F{{lcKP-*}G diff --git a/client/resources/hardnested_tables/bitflip_1_060_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_060_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c440016cf23f99c71624edb9ef92ba445d68954c GIT binary patch literal 18954 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 diff --git a/client/resources/hardnested_tables/bitflip_1_062_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_062_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..de48057f69f1ea736a134507ed258c20b83c46d1 GIT binary patch literal 50633 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 Ov8z`G|0VA`Q~od9;nB1J literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_066_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_066_states.bin.bz2 deleted file mode 100644 index e599d531831036cfff71c167f4e616f70a2fb1c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3290 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 E0pAkN8~^|S diff --git a/client/resources/hardnested_tables/bitflip_1_066_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_066_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..dfd8b4e9e77619edbc87415377f37a02340b6095 GIT binary patch literal 31576 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_068_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_068_states.bin.bz2 deleted file mode 100644 index d52f1573d6d267762a2b234a99f07f885130ae00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3548 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 G|M>qwo+Oe0 diff --git a/client/resources/hardnested_tables/bitflip_1_068_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_068_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..8ed807ea3cbd066d121bd52f86e42e412e3593cd GIT binary patch literal 25815 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 La1A~Ei*^46AE$FG literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_06a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_06a_states.bin.bz2 deleted file mode 100644 index 05cdc35567db4620c2bc20ecb115b9f5bbc1a92d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7596 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 bKu8CEM=&zo)_q9Q2a8An|Fko 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_06e_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_06e_states.bin.bz2 deleted file mode 100644 index f1087952d9fb6fd1c4a10a676f346e18b3cdd1b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1976 zcmZvZTTohw0fu!=NK_V46wm1}nnbzD8Q~muI?%y2QKM0*t``(K)NnhP%ye2HFHB;h zD*-PsC?W{E>E^1t8m9t%(N0$7b_9--ZIao}w%cyOOJa613E4VvlWMlx%VYnSZ|0l% zp8lF&oD;&QWQ-2kp^s-cjXJi~A6O)wcjQ{TP z|M(v$9@T%Ogb~HD^OkqtJ3m9AFy0|}{;#ALo_qJ-NqbXc#;K}?xr^tke*WIq?N_R| za&mt7@*U1m)9acEkBHTN-Ja8&EX};!07P}G(H1#s^9bgN%{!m1zP&Yn=W-2Nd^_7o zt%vK2luV!fjB+He0Ib*=S}N$i)otb~86>!i6}*aN?!2YSPuv5fep{#B3UEe7g{phi z__LQ6WfcjG+c0w>Xxgv-dLr$Y^^El{;cr$RUE8mox;MFE;Lg#_GFHFKxT1VBBSy!y zkW4%S1^g~AJQ+_6eQD#fCw65cUOqvq4Qcw1jsB6&$UQuEUiigli}fAUhu$WJrwHMow{?$_UR&C5_{G3 zI(wq(iSOEM>EXJCf@{E77FD5BY$#F#DQhl;{)Y2x84vc?QoizG%%Sy-F$13NcZBv< zoL}{I92xt=)|0>O^{dXd_tisgaqV}MXOdJgSgzs)CmTjXzEE^1sL@~PeJo$Dg_JuQ z)vNbSxsSLvuXlc-n%!$(RzZxW#60Uw+4E(bN`E%pheOESKOzyYRLi!~kp#|m2#}i} zzAoIVSdJbk7qUgg*%N!W!Vz>-MAyCK7TkV#=VF!vtc#!CW33L2T%u*~e_voa_`dx* z89e?htB}?dZ=q{O_uNFp)6~%G+4zP-Q6!4s^UD_sp8i6Kt0sf z`kqqfZtr@{>s+F0+UCLk!8oQL+$+rrhc^~(yi8dmh9!0Ie(&O2-1==5jfUJK67zDu zSr~jJ(=s2F*7TXay_`4O*P5JLnGI8lZ2kKBiiOxZ+ue?R5U%hX8C0`Xa~q!vmWoNa zW)9IDEiT}uDgu+D5(Ys`1f~;y3k3B4tkf=!<(v_n7fQlpyV(hSPBue=xGxb zF4&dc#4nDiYjSwDxl6Dz|KS`;Yo~&%+O+=0$7{jgn=!n!wcuONhcR2 zE;la*O~J5aa$C)clgQyLBH-c003T0j$+w9?aAKaOf?c}i0^VxS;cj47$N|G@WRotF z%k)!hL{?Twl;!9< zPPg5{cA$_}W(eX$L7T}FhCm*wf$lQIK2+&hpZBYzanz&y;gCTjV{g+6i8-*koBM40XHExAn#cCQJ|imGKbTh#+OJa zy;fOL2w#0-(@}(}`}*XxQJ~Amn09?_m;mK|A`<0@^zQ2YU&aelH75&xJuUbb0FhJ) diff --git a/client/resources/hardnested_tables/bitflip_1_06e_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_06e_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..6adc3eead5fa3153b2f08147331e417dbabd1eae GIT binary patch literal 23053 zcmeI43vgW3d4SK|)ylHGy8q$_xRzwEA!&>yS+XH1wz0K5rkMI6*`20I1z}ygCB_IZ zeS{E=;!Bv!Bqc&lJ826Td)rRK)5uIaG(a3J!!*H_(-Ens83sG3OeSp-ghiUpG_lR; z_n*6~)njeMBN@`UXJ#Mw-v6BQpa1>;=j>Kpym{fy+|xh*xG`IQa?KfIJ+t~uJMYPq zX+N=sFUwm`tm!m$5}38EXWHA$0x_Pows!f6HG$!o@w(i5lY4Iw6WiFjf3=C(*Tqx= zX#2$^`52QKdY;D_fCsvxXU;fiR?4G zTdg&+Te7;y*aM1k%r^UGc1WK$Lg-V)X>_=|c>;;%+Vx^C)HxMj+FeS?tajs`PQ?_- z(su`;Z~r9eM6VPK2!{l@Qi5yRCF8-HDL5Y$lPUK5&2aI>tIsPTX&11lG>qTB8oECY zrj5u!9Sh=JOw~G-h17C=svxm0r9r&O&lrE$06B+Yiqh~fmzROM^28>U2-WoNeJte6 zo)Tx4A`!I@Fl;x%W;{R=59%Tjjg+-3eUn6DiqpvDDoDOf`dMh%yBY?=^;xz-1%R%h z5R4WVHjjZV%tRI&nRHNs6ptC4k+V6;|2xWtBcznLYxr z*52zh@g&cL3A$KaiweA&!;Af~KY%1R>-Fz7B{K$qO8{J(>{QigtG>?Z{bPRM$*^g{ z1~w{a3~{Ks9t?WK+{&Q84d&Ih!Dj|j{W4?383QKVb`N3?EY!V|yJvMU&u&wuz~m}5 zkH&kpq{3-;%RXOZ`4-g&(}hXc49d*nGfT{V9g_f&R#~gV73Oy#u(^rSRuAYVd!RHb zt7JvBYJk+9)38UsrM9!?h@{#8Zh)+5UMiYUQmqg2!f^T_&>yQk3i@5OxeW}gKNo286&DVOa|6R=beW$O-Ze%Hrxnr-(eZ8xDL z-fA&hl*S-|bbF97X*Y>^Zcr)E#?@nD3VNreU(B~gowThK^9;A=e%W2Io*0s>E@vs) zZEd}nIX4x@S=5*;?37?N&M2V_EmSw*IK})S)Tq7+iaeBrm7P^Q_ZpSTW+lROhYTke z;YFrX-xPSQKyMc_tR^MS-NqqDV^1=_bG?td9QJ#hK@UuiWYn-PQ~zhG09`hKRGgOK z1+RpBLJe!t++{3$@$I^Br@1O5C};fF#N;8xCskb*PLm zQ`K(2jmKYV412=u1T)szO{^wk>=SB$tp{P&N+#Z?<~Jz?uY*-?RzZNWX;!DG%>SXz z(hL}wR6P`WwZ9Paolrs$+6%^w;ldk%bpu%YhL|7(3E!W>r{3tukWaKQ2Vlv z|B2lkoS+=`14?e3GIF4D(kR*3x-i&LS65)^g)b0=e6gDgUNQSHkQr|;b6(Hr_*n^B zREk26Ynq_B3Q_MpKE@&NVBS7flXniz)G_AQnC`POA}r`|t%x~h|5t)fgMNIo3Qz-_ zxM{K*RPoTzC#DwvYv@GE^ow~abalv019J0Bzpgdq9QQ&5uD)IhwRNF-7se@otzD)% zReuCGNY8(KP>tvY{B%2m-pJE$I|?>Jq8$>{-66qT1nKKwhF|RSO)X@g??NY`Mw3#N{_^6m}r!Ap9Kzkcy49k#J_trcC@VsB2N7zg=jC1|- zO@f52QmsVJ7jv8d5yE4-huz$1Kc7Gxe+*x`-Pqt-bObTf z#wd3$Vy^QsR|onCtmEU1&XcyUL9GGqy#DSvn0IK-;EhD&2k_>lFyzp{I3&?Z4ZUNE zS1Bge?=TZnp`k;y)8ScvrLlBNr~+*&iNr6#!B9csueiuMMB+CvHXG3lbaqVP5}I)# z%0&$zWZR&CSgZxmF2z^0tqS2!+I_zH5*;uf4O>HcJplwz@uy1@KVT`E|_( zCb#7f3J##)u3hZs39TNP8g4xz=F!RF)}!Tc%Qq{q_%Pc0E>h;C#Ot6Ukip0f?{c=* zTcSuz4ZNOa;xO=nJFjW#Uvp5*AiN{2mx3=(zzM&3 z?%=B%w<8o3G@FH>8F8^8h{33{z|$i%L{wpGS<85xNE3!)*Q?cDP0Diz z$~BGo-P-9&R#!;XEAM06s8u}J8APfqx)mX(r6lbvZ^EwLc0x^Hxju@!9 z`%1r^|vj?qz!)`SI4DP-gmsxB0}P>^;ak(MwLfyBMy5sype3DIz^U9VgVd~*rI zyzGzR-N-^TVxpxaSI_W%pIQX?$p|N1^0h=c01xAvoq2J!r_)k+p*xxSpszXCYxLeC zX62wGq?jfgU?*WgHPpD)Wmf+oX8n-bM-rCccvn%6cZm6S@Q z%Wzk_(5dMOR`2gpGHUU&fX6)rpPFZ>VrRts7awo>0j4s+s{?$7LS_E5jY|AYSR9h# zAl@X0H8tOci|^Di0j&D+FG8C)fskF#-1|(IpCe1!@R;A3g3w@c&IBy0ovh76yo1UZ zZE5HO#@V5BD7j;M+Xg^thRU&NSt3Yxly2+Cb@p$@eR3Qzq+;P`iQjT9db?TDvwCGj zNfqilqJeHB8m<;|m6+{NOleN6@<~33ReDrh0#XyL0#rl&$1OQWpt!fP5MJKP^oQCL zt0?!B94rP&z1Q>ORTM(2<%h)lI`TALJ)ul@NYb0zrSO>>ajCbJ#hZ+**U56ejt(`v zG$wKF5;a&^Cy07|7xImDt!3;Dr%AW?9{O$;qw!qz5lBRThdJEtoTNm^54*wQZNbOh{0bfB~ljloUlHu7-^lDKHUUeAf~2I8UeaS z;26hqhe=NuPfwfv^f;qSz3kZ;AUO_P;Y)=qNYVXUh_S2!__SMtO5W$nQ8k3lVfST(_O@aHIqed$&?#=S-@t4(`sqcIS>znfD35+^edSk8{!T+q7_5sWx ziChd@9^hm`eL}ro-H6@1T^H$WFp5>GQr|1)vs#J7==4qAe)^bJ0y?!4lBQ>cqIL4c zlDM{MO))TFrl6%NmPvz-Mi(y@Wf;3NeY@v9t!HOF=Q2tWldEV;?kR{^)mK8+VnmbQ zE^Z2d-76AYMWkDgRl6F=IDcW=m7R}GO$5lM-f>;~__NfsnK!CwM>Xvsr{_^kTkY-} zWpB=vwNXu5H*KSub~zM_YT7vMsHS~9s%dL!Pa`oJ4`6!#WYS8_gw9M zKcDB=Mma$mb@}O1-)N4+?SEe4AO5DMo1gO8gf_SI_&E;pyuiN6QF0&(R4>tEm7Y5} zM$W2r@ndeTw3s_d;bub^k1|{eRrw>J$2TjtkfM_2P1uT_R$X!9te|qlIA76m_)L@b zs+Eb`6Cl+q<~|0=+h#SW`=2cCN*`#Vy#1~>Gkuej&Rcg&j>-WgWcA%|uM$HU{vZgB zx>c{F1drvoZ(=EGKaW;m(QV!e`ZVgx3$9!COC1F6~W~IW+wlS#^!kTxmhgq2; zQ$>kt=MVeE{7B1`Ra&2UO(Eddb$ZbWk8~HP({)2C&J2n<9nwU5R63MUd0r&pXY{Qk z1pzFA9J925`zA2%Y(nhg01Lb6YuSV}JgL2M1`08CbrY|t&E=+Ui|%NZyrulT^X=@4 z`npA@g;y0Sf6TbPC#lvW3~gFI96&nBW?3^tw}xj*$+G#aj-<*@VUOTA*zQ@ zvJXz&6xD-d#Z6HJS}V(|*bthyw^`nME0tu%j~JB?JMZI!Czy{=0&b;98Xa~vQ1Vo1 z4}tG@Bl3{w{dd^ed~3o^Q*_EXI^`Ula*j?pW2rR4O7qe>9(xPAGneJ7w&;{|bjq1+ z(dd+ObjsOajUSuUp`6FJkw#LQ_j&T=T{~lR*6nI&s2FzaHwK*%9$VC zMW>ucIb1bBQEmE}$aDYbEIQ>(b+42#6jdrZ1w8 z5T3P({<$Oi=MI;qpJH2&U*$#r+)+}Hil5OxcT^|KR@sKKI$^ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_072_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_072_states.bin.bz2 deleted file mode 100644 index 138c17c0f691eb84a5ab05462b1596a3c31e76de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4289 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 diff --git a/client/resources/hardnested_tables/bitflip_1_072_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_072_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..8b29914469bd4a509cfb4a606d5f9b5656637913 GIT binary patch literal 36987 zcmeI53v`s_nSj54=AX%AGV_0dB;-cOAVfk#AQnQxQe?ca#Vb*ksukNPqCkyc(Ry3t zW0gv)w6&*NwOX_5Y1LM`c8gu0U7emiu2gNotyr{P(9>3IMblDSDw2Pn_xopZfpD?f zJ>9eaoRiGVfBC-m{=VP)zW+DwQKwa1xNPI1FDZ5FOK-oXdi_UU_8qly-`;(DmEuz( zl2K*733YT&PmMZy=9a9Qv~TaRDwZ0qB1YBrW|cOoSv$&^G;@nlj#iHE|EZ#v?`vy~ zDpA4h+@ze=NJ4o=aY=>Fs#JyqyCy0_J`|10cX#@L@x6x_-}U`{T)j=Jv_GP{x2HIjQE_g_ zsp!~!d)GJs5_LbXysS()Ih9qM=f74Sqm?F-rD_78rvR>5tJLZgaGFRur4nwH(pg9D z72KlN#t{uhK4y;@cIzXYg?crGdsXO-rgf2md(-yfz`O+~y#CAU`UtXHBw8V4i_>>$lPpQ)N;r0(R>S?Vsa%T7#&POe zPkGQN4T{Y=8@-o-AbOO$>ij=4!EVnawJ8RSRJB&cH*u&Q=&HG$YZ`rj8l>OFCkBo! zhGc#zr%wSzpI2I|w93j^ULZeZo>sMtRsMDg@|UU-F9C%n zHV7BAYL}~CVb)r$s>kH%lJfmpC|csZT4{;oe;-UBA4sV>jxbfZ-wtsBECWhaGDs{^ zrQDP{xrbL)!S8rRjqT|%BJ8u(gq|MZvnrbC`!K+$R=$X+^Pkz%DMv(SlJ6_Hidukw zkyQk!6^Tvi=~0mtT<3cb?=-C{o9q3A8sRPD=2($-2d<*2|nGi)qzN zE`dP9n!TMMUUjZ#BD{fb9I7OQL^I%21Ud@0L@XKP*k&eL4tcpI=KD*TdoNs`rne@` zICHJnjjlK)0&oP0RLvqX+Zn%MI)id^>O2`7d3WbB!sC1qg`2Kh6!*t=p%;6h;*}z} zS~X8%R!|rYbrb#`z!Qpo6@i!`Nc+Cgs+ED`+?#;<0y#>)k~^kDN3e6CPL+>tryjGq z>IMXL$m zF1Qv%)c3bT*jBFtu#k8Ax=IH3{muXtf0f%^jtH0wo0#01JM?$G+o(R&({por_{}O~l{CeWM}k^*TFg7IRdH z9AwnFS~azD82VoFHJ$r<1%v^UrCr`urFW~x?FV@7hcaLZ$p0L%mMaKG5=cu zIsBNA_Ib;CELC|75Pzjj=`NjdN>V$@wW=7$xc34Acd90@Q|WFH$!)j{69Z&-HhZ}^ zO5rJt+U9l4gLaJs^wf_;?$GF?x9Hp`@F?YAW?P<<6NH_O{#fkDzXRx)xWd9TRBH9? z^}4%gjF8ZSOr^}=u11cIldI9OjNDhwku)RT$rUvavIXCy)sBT&Eab1sZx?ry;Uv}w zhXA(q40V0#OJ{0zQkl2&I9;V;Nfm+r9V+l~?V{zP6-Z14TH!EktXWv5MxfmsEvmId zLO;$pkMoZ~l?JUknW2OkTxPgrX&_rJr=Js_R)c9Q)(KUiJ78#wY7;$a;VYbpYcq;D z#6+Z4iv$Urqna5NVZXQw+O1`n7*K%6BKa|(+Imd z!NX|v1b1au52YPHWt2K34FHM}jjSl$6!;}K`tn6I1s!`yMu4Q^EimAS)NrIp$n*u_ zP`ujPDabNR0^H-s6`(NVKk`?5hE@h4JzK1yk#YBb#q_e{%TlEZ3PttSp=i zsUtu{8DTT}G8+&#HSi84Hb1P@eE&AVoMBHFnhY?ffH|M3qw^q{jNqlY5YB7{x`c?2 zAP8O}KsfiDr@O_{@0bQ+6>>?zOfJ%n+8P6VKSevy>#}5;FUB|rlA*N%nb6_rZuD7y( zZWxX2yb@=z^^<l7ue!Tj{q_+XdB?f9KL`yDlB8-44M0jLt;U|^rIJrVlZ~SP=MQV zuM4M7hUHp5i0o~8P8jL?2xi28X%H$iJaw#fRZpWdrGC4&RYIy;wc09Uj%3Wb!%%R9 zR;NxUy37Z?-Tuw)8Xr2QaU5cFy8R!*iqm1mQOUGI($u_IqMAu?C{v?cd-j=-TaX)@p`r`7lUUn4xN5FLo_d<+fMT#x0;_1}Wz1A2pyb%*~(AmM_GvB;ZrUTP8mkD&%7 z5!&0_*=M>N&h&C;!j%&2d^(j84{q->rBSi8rKq4Kj!062@KDj z>6wosVjJP$H?&E~eX1f25UpIy4WFDzBq<9Rku#?O{q?7E<_c`tudI1@cN9VIBE875 z79Q8my2=@c!d`&^h&9gKvMiR&NOYPdZdHjJaqu``=V4)K!P4V$;|na0A#B0Qzu?xu zu*q9Q4Vl~>jeF!yC04PqE7d+un`0&u07x9N_4yJnhh=DN6CY-3r=hA)e98)mBg`+3 z(L2Z6aAnFq99+!poM6{RdbC6!mOz2WSEZmF-z`y5A=r;JVDO=uLjZ&8O5g=L91L1? zF=(F#NDmM}90NkPi0k;H`w2pq4@*#n%Yn}yVZwBbQ!^(iWzr{k<~6=ldmG?7$JW+D z+cloT)wx7Rgp#V1!DC{>{{eBaD-{GU$q=rv!W5swr(H6aUk5~Ug&@9|vcwq{&;pBZ zO6B&tJDvo{bK^P1GS^)efe&%u&#LJ<_bzz<1h8i@fCOX3UKO!T6a+`Yexh1mJ%qcliB;#a(NFq0vX=9Hv5E?GAT1t2|l7sbFU?&f#r-)NyGvgN#J4LU6 z1%HwSp>oiAmKP?{R?pf6(^Mq(DYK9OVHU{vqY#GQ+Snw*l}X>fNu*<^HYc+lRFC6m z2x{iGfk77l_-IJ|EkKJkxw3wDvZGRTVN6IX_^q zINBWE#l#WhU^SB?n#mH9nkabKm5fn)gMp$ey|a_7m4M!oaI}!nZD&jtF~)0#5b!cs z#6XBX3NcXM;ssOCvcRsWhT~8Ao${4hEr!bmz7BldhCZOPrD_-;>=$Y^*_d}G{}nnUhBW+&+C4FoDb2dHc_R z*Rq69D1k!gdj*_o=%=-y{uz{LE~EaKOHhf+IV4tqe^qR(&2WV0YY$x++@Rn~5ef*2lG= z!b=4&`1F-}aowykrgkBv{I&10ZUZeY^`FIA`g`nBiVTa2!tdFB#!7hB|4jhu_8?g3 z(aXwhC`ib#!P`(C2vb?!oYr8$M%HO{^7TX=4U7VVmRxNIns0eKzmf}1K(?L}c^L_Y z;?p_=0=sUE!4R9BX+*(Fv4KzP+~tV02geqHX(zPuxtF+5b=QNH!i zstSoN--m#~)b!EX96vS?b~r9N6Y)R7y~Im*Es$8xsADie{aGPEbqe-Cb^kMiR&oSo zkj&L>*tM@BTwh;>ss{#TjJ5dD%Vc?;z|7~IR^FFdQ*eqk(<*Vkm;@r9i?!;KSWnjA zvC33V-XK*RH7lRROzW5lkG8bVy4FY&naWhwiL37Z&>wCSh-HK$nw8rYap}mmEO1SE zJ(#RRxF54r62HG-fc>?!Zj?KD-4Li(XFwW%l~%t-1)r<;)U%MJf-rsz7#hn%2&Z}U*%_OL(Oqup>znYthC3eCiFTxwb3cRz!I}V5xhnk3rHe(C7l%=|h zyv`>P(|MkH5)e_%>uz*=Kr{9;)$9*h%5(LkHDkO5QaHi z_wCadOH^H`R4ualUxJNa=XDdwltY;jKwJe%89(lk0LiEmv?+sqFg`}Q^Kd)*9IyA9wgk{JSz zMjR*3;Jz;J{8GL0*%{}b=$MrWXn9(XrxHs6nuwHh9oum9R$rPR?A0_4+7@d*ch@Q z5+~byqPYH3P`^XO#yU4r4+xAA^ij=&0%L710?hXk6Q?@I3Wvpz<5FZ{l;v-N^~Uft zE8Mm(QXffV)}}pn;pY$qxoKe5W5}SA<-1TqR*C5-_87Tr z{};m1L0E6ZfX}5)klU~jKXyevu`!7S&<_rt*f0u6No?$l%#%O?=k7sdabCi?e(+ag zZy+YY6Dn%FS~016gx$P`%xJI*Il467BCA8IAT@{%1)rUw;lo5c`*IuOk^5Ci<$CC7 ziz{h#j7ZFN2+Q5THO@vFLnl1U zC%|ehf2HEeFGZ7WvICzH#G6N$7KrUQ9FWe%1Y@rCa!;Rr&I7qc7W zD?POcTH!tO>a{`${)|N$p-rA--SqvCmOI=wrh1KYh+Y2j&*k|I!AM{7{|#t6R7~Ni z8C*iRHDf?n@tjuLKdP_(6ql+KzHPtS2Mj8T5hyQAW(WaNq8U^^S({3no?2bsn~iul zshld3>SltlKAOl~47k)mh)T1nmWxUMd!=!f*(?pHo|LL;TXBkx_DCieH6C%EMiw#c zb;8QSl~i)#8T(5rvYtg+6Wn>wvdZ9)BZ;pnLmVm)wxgi}Is-25C!ueD0V|+=A@U%2 z5Z~I#WxPq`aXW<|YAagZdaqEQ1m>L!wYdZ1_bpW7P?eJPFluGYEj5sS;=a8t2&gj| z=`zuv@PdS~@Y+F80@?av26YsCA3YiUSu(Ju?*k8#uC}5)fh|y)k5X0v#b0H92IFJweWgI?BXz!N9(AhA#^s)AMdhO zF9x}&CyT}FOIZ#u;_&YnMAT-;JLWMAL!BsVunA11xvz`^$G$lP)cqJ>+uuD;t2tbW z;dOgXO_oMr|3jyg5Z139#h^E7b84&Jc`D5M%q__H>3OTh9ACuK74p49FR|2je<1@K z@WZP;=>HQOznd)W0|8Q!*L{lVopqRe{`x&i!NAE?$>LYJv&2pe?cNG^RuO~2taeF3V9s0o7bHdelK9jiUKpSM76R?l z>hHU>*##&aShOWCYBdcQtC;z0xeW)9>8m|h%R~#tnu0U_7A6Y%cOqXh# zZ+{eLOo>SiZhVpT0+taBkaH8PRgQF77G>%=Z~T z3nT5TE)coaE;$y*{6e+~%~1EeAVFf&G%Zr5NJ;PoQFxVlQqPMcSW>plK(KrsmM@P6 z!sA!duA*}b97*n9009!_0{qBh+AJ6^1;Yi*gMBjxW@KYA$iT3+-GnLk%gjn~i&m4( zLOqsYe|wqPTR;pNky;ol%f!jJ5@;#qfnbd|Y%kUq)0cY1%D!kEjU>q`8b`kDE>kIy zmGXMTqpy=kBqm#-ZKA}HB&>?0NjE}vw0X4GNRXuTvJvC+*%{qYIUPnkAQvW1K_;MB zke2b(ab#-cD^Sg_*%?$)Qnlr~0gnVkkg5IXXb1~;FT=zP=r_R-S^hHsp4+5(m-Og_ z*9XXx@59(67O)Tk-4F<4XMn7PK+lfJcb0%TO-NLj7DnBc^OIID=q{mS4lhkUCS`2P z8rls-gN)1)GBOvU4TCc>3%THs8JTXJrbE8O>n@_WA@uB2!(^7P%^7Yyt?IgK3uD zlY}ZGuB6$DRqGl+Oku2UUdsD(V*Xf9NJ{v~^Dnt?HrvdLdiILma;~*wLO!=miG=oaUJq@;yuI>c*&sUGQMszGW z8(VkT9Ikl`QEBkh$y67XBZrWJnx$HHP9Ti9q$BE08Nt|tdsCVqNR$!dX$i(LXNb%- zO%Qi2L-IM+Dk~Iq&ACGFH@R*#{)hAJ9|a2TC2Ct~VdWxeRf*>!bWVy~Du)G$T_7~w zD><7Qz7Vx}^eEJJjCA zfzjZ{0SRw_^Dr$pDEbp9uC&}d0m{;H^8`svByPSWO5ao0&30xTy6Z-@5ROHmPOV(A zClB0^DJq0zsHU4orhBT~<}aLY4{E)c{jB4)xNx7LW2}RIjvbK2#P&jN>M!lWc?Pl^ z(1G(HGzz*7t|qH(~b;v0&JJL+}%J z-%Jj>Z}P!H*nLCn70o!ZTC%>2s+|K5Gf)2=R324Owg3i5n4|ATS^5k}Lhc`Y@K4`?Agrr{eukg;Ywv5i6|m;$Dttan?)5 zm9!h3TWWoSJkJqbrE`zRc(#!|>_xY7rhzNIVe`V|N#pa#7B9BnhU#HTd+Gsc+>^?| zex1>zCZC$aa4ax?y6p%%qm$;tt~!O1{;6Zh^vWY1JW%6*I%)iPBL9Tu)Q7#?Jybeo zQ07%rSE0r8Nhm%7%y$J@+d<6qNm}QYkn>+Y-qz05`Lf(Kq#lDdYEUk*P1Jo|OyuLq zh)YH`Xr2BZC_tU7Xqw~E(C8~<`fc+};?Lj>ezu9)BboUZHBr-nBM<8i)$nx4ChF{0 zNVW;)_z47cNRG7OMm988sOsJMNqTgsd)zU}KC5jWv%E6YO$tWD#xY+koABT zYZANvk?*Yj4H6rpsxee|^#@klqt<$u9_v(z?UcgP{!MpTBXENXe!tg_RLTdvQf^C! z+uk8oY1hwxUx(~|sDE~~lUF9*_4qVTYA8XUbe0@z&FuT7oxlyL$$ePiGE~pI@ z37K+W7Zf}cVF88&)LC!c?ZfaOcy8`{ASAWSMCA9>8=tQj)w}gV1{V;$OAhX2D_49G*DY zo|CxQc1h6{ru|ARegziaZnjevbJzTJHV4XnRm|T9xH(XAE06Edbc@};)V7kqsBm*2 zq8px}eZQLnvExRe7vTb(yWo(~Ng5@dD^Vh+v(^b7P0?{*|~(Es8G1=54~2m&?>SER$}q8V%zNN@Z0`KFP3L66eA;hoJrrw zfK7j_33{T4!)@V~KgyW{A$XuH-0~;f^5-BeOrNrTes#FzPq^g|1{jAGZuwJq1jH^Q z@_woCMptII&jGQ8l!wDDf5I()>~B_tTmBsBPbE+@&o{G#TmH~N5pMZI z3`RppxaCi{j+xYzoi;(`71;3OgVK!fq!D$!6nCr@aXkI=qkY z2nKc(NPtZTP|6_!8IR=JnUukkJRuJ&%IN5fqe;*!sOKP65v*E&_xt&Mf4^^j|LyO9 ze1t7RP73GlkWRTjx7~?S>4ToUJ@faGter%V;+EJXh_tVU#3qIE!`f-2FD|S-$h)uRz|t4@C8W;&=_u*&%E5ynstbon ztHEh8=~w=ml&dY!2TfmNURx{pLlb^^C3;JJDkVdkI?2T6onSdi&(=7Z;9LsVZ8_Ygj^(^8r^Rq@gg%h196uK&2{AZr8@~NxbWJ^dpn+!H!d}Y3chy%g++6+6 zEcf(~8Ro!`3W4dvSc0!@XXU$n?J>tE62HR3yV1nC_EjRBq&!*l-y%_XXGj`cx}CTi zpQXj~RK^uts#*RLTY06bq0>B;}mU52G{ zt3tH8;807*uL{Tj2*4(@_JMVi!lB$){-rv0n~L5UnU2e%(M4$*G$g;*1a362cGjC3 z5>Bqaj_9!{tII}iRe8|_K<9SgIX;J)H7v6D1%Ol002$RFe~WqM#C8dJrBNby!8sJl zxHk7m`4Jv$P2=fUPZ4JEqtt*Is}QnN;T1F0?)6wl&OYnCiKLb7%v9{1cyrktXr0Tx zzyH_t*4gUwA1^ms^RoZE;(0e(MW*eTK2mSkmbU!wZg#$EelmKApkj=vK3dWs499cb z7h|L}-%Qr^VK}yrjSZJ8Vw`}QkvUcI{M6^Ai8lMxv6tmoGS+biQDB1*c+wV(4gQqI zjJ#E0tYD_Zq#TtO1WA881o1Ukhlroa(5PczZ~{%@@yXPik4lgK{Ec}uMk0EMeJCiM zmp7EMPw&}BzwuYTjY#nBm1J5rMl<$qb3R7&Ze!H+*YFL(`4uXLU5=4gpffwiEl))8tyx0l!d~#MP861Bb@9}R4y4it zU2y4Y=_f1~*LT4E!Kjq$7V)i9XPc#+*gYs zd=EP>AqbrF<#;kiv7%CMmn1$7H^f*m8e5De>0qx6z-UaqL)tOMEi6~3`6)=Mn_8%K zjZy0SeF0%@VYk0|x$N$y!?&F~9x=ZEv5RP-jIU>NhBn`Gu552X)4oRGX4mrM)2d?+ zm7d3qk_hrrqj1rXd!2f2;^~%hi|@A@Eq0@Q8{2LB6pudKJ@nwk<9AJU0q^^s2d#ZC zaxYD^NZ_4Aw{kRN)$iY{-u`Xj=R)H$rM~%6>bq=o&VAcy&YozAPdN7aQvWVMG(Y0+ zjPJl(xzrAa-^YT^_3s#4T}KM|XYu4ct826Qk|Kgt8nJ-ARhJN3FMi3TW++(HwAak~ zM!`CZ^{lqO{@&B)FKqZvx!IZBYcm`E`j*fhro*OIHZ{~WV7~3rsa(Ofa@+r^cFh2< z2Xgz{!dcWt$i0wO|MhVV=_9xBHM`tyOyNox1L$wyC1(r{DHyVUMS#l@DP7aCQh|l2 zJ?-GJB_TW$(Cb&4OrwRd18Q+ZbYLV(S>_lnfDI;K2+yR`xh{aGa~AN?bT!~QeIYQH zVMUYWR^w?~yI*#Z&716rlt}~#pcW{dS;0%w~A3fh>^1n+94h7hL_ z*J!&LGe2~xxqVR?Zu|$s>|9c1!iNJld#C!{ljLBThYp!cS7DQfr^sRAa<7aY`JP>g zQsfl9n4uQ!GXSD6M~1tKA{M0&^?#ozspM2l7oDNahK9u_*NKAfAy^I#kh?LQ3F-MB z-qgMO0ADXvD>pE0lwE(wBQx1Vj+t6(>{1kjcG-$sz5v@|_SnlIEWB{C2_KKfv+|%B{M5_)xBWQDP^FOnPo0v4%g~CReHIzFkV<^xo2^x;pO7% zSA~l+!T~3wFJ4`!C@qqN`_4wO!uevpQRlV=YbgX_M09`-Lm;n*;)DnkEE|xH5Be!4 zEr_9PMDB^gYB%o*^H50|s$kA844LcjT}UnXAS=J-MH2 z8O{V4IgH|7lrAmMG@SCy>oF}w1{;~k*@`y?Wy!3WFiO=qG>Z=3PG`(g^Z6w_8T4fb zqqZ_0u8>C@9yv$>XZ`Z??(0U|Bs9Qt^3owwxtA4^ m4M^mE@olSjEHQ{yW)+W!Zt{iN0a diff --git a/client/resources/hardnested_tables/bitflip_1_076_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_076_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08f0dfa3a83e4fd9546f2c426596745d4cdf6faa GIT binary patch literal 21096 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_078_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_078_states.bin.bz2 deleted file mode 100644 index 2c6f9cd4dee91d031c692d7eb4a2cc7151aeb11c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1284 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 ORy!);daQMD*?$3ltZfef literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_07a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_07a_states.bin.bz2 deleted file mode 100644 index ea2f8386bd115eac8c22c27af9eeeeda6c9bc7f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2730 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 f#nZ7$x9KgIVS+wZFz diff --git a/client/resources/hardnested_tables/bitflip_1_07a_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_07a_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..ddd8741b028f63304b81ef5d28f0bbdcb58cbd24 GIT binary patch literal 28127 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 z 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 afra3}0*(m<2NpD5O$R4%5iX|2_J09aPGAK9 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_080_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_080_states.bin.bz2 deleted file mode 100644 index 54b71e2cef53a5594ccb5dbe9a8589c3607d7cb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 413 zcmZ>Y%CIzaj8qGbl$~w=kFjoTiOWS61_uEK0R~YA2L=WX2gW}ooGi=^K*W?4%Ix@x zRaMl)R&B1TQ|L!EFOO5oElr-2Rvz+Mu}0;PkLN+H5WfdPg$fgsS~+cAc`VfnRpeUB zs2;?r=Akk(L~GSamdURQJ)1lmlDsPYURo^knKb3qWTr`3zA6_aJy)7c<}_8AzhJV; zQdzcOq()eQml|S2tH7Gpt Cew&K` diff --git a/client/resources/hardnested_tables/bitflip_1_080_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_080_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..016ecfe67461561c6ebaf7087b6c1f051ef62fd9 GIT binary patch literal 15230 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 U=Hb5<|1FGO?!G*+2;uwx03G0Gt^fc4 diff --git a/client/resources/hardnested_tables/bitflip_1_082_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_082_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..3ebd8d8d5d76b2c33775da43a63da29462ab8925 GIT binary patch literal 48522 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 bH|-^y0>Sy73d{d_o}e^V{9Up8`quvg7Rt0s literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_086_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_086_states.bin.bz2 deleted file mode 100644 index 30d232f69b44a50cda0e6ef35ffd2620b54e94c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2874 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 D7&Z6h diff --git a/client/resources/hardnested_tables/bitflip_1_086_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_086_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..56a80b7e39d455387a506988f8016e372c344dce GIT binary patch literal 28568 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 diff --git a/client/resources/hardnested_tables/bitflip_1_088_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_088_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..1dde249a5df18eaa9631a9914a536b26fb52b25f GIT binary patch literal 26100 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_08a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_08a_states.bin.bz2 deleted file mode 100644 index b708bd851f5a361fb3c55758049634652d5ef935..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4415 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 Kt?J#w?f+kzimiMA diff --git a/client/resources/hardnested_tables/bitflip_1_08a_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_08a_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..2a3ee14937a5e508de15e0fc69ad559cb37f0f4c GIT binary patch literal 38962 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 H^XL69b7QA% literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_08e_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_08e_states.bin.bz2 deleted file mode 100644 index 79c5eec835299b6f639828cc891fcf7dc186bb0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1569 zcmV++2HyEXT4*^jL0KkKS&_YsJpeUz|Np_+ftx8i0iV#BfDs89z#F;ML7gy_P#+~2 z5D)=V%9!8_e*gdg00000000002Lnws&}e9AWM~FJ8X5yl82|thG&D3aGy@Q-#6ptZFR)*AT&6iHWy-$smqV3O#dgUxC>QByMylA*zy?lmFp*o=GvOZOQgR0?ORGzBtRu^jY&I5&$1~Vy^c?n)* zP7)Zs^YR$7;QU5Qsfw_>iwVGCF^auY0gsUXCkv1+rYnJi7^1}LP6PPNaA2-XRxnP5 zfyp^5fI6R@_S~J0rv@;_63WIdPg7-&vn(~XJHtyA8cgFjIs_4mj&&UgN9j5 zS!H7@GGoMw_YXqoat@{(7#&!{9g2r*7-#V~Cl0F&87v+H(>ZXtACTyooeoRnUJLXK zq0v6l$?+lH?sDPLaCe4Wu)eXu+RV;Q)$uRXJC}cB?Jf_Ua^du@_a!t6k1=?4v9TIuMW0b({7`=nIxh{#&z|6*C!vlh(bphHa%1m9s zh9)q$NOCIbJj`&hhn-GS$WDg{%gUeD{mbKe=incS;yc&Ao(qM^k?@S1k2yTy;}~A3 z!;}~qPOk-KSj^}SgASzXT#s~h916wA>cbWs3gB`ua6^TaS!X8-I+F#^O1E<0SFA$*5|JQb5K5S>rf=s#Nf>A~2$hp?Vy!togL9mA2z`A);{Ld&YV*NCx)-+u=M?H=1b0pNZW z!8(soGCB@N;AIX<$e!Bn9I16Kf!IA`wb6P*mDP1Cfb2uezH!v#$=W;--oNqrne~_Q z4@mDLxbH4cNct1zPa*ERhjH9^#pOqs@H(fcWbi-0o|^F|kn+Bv@SaDVkDJHK=4W|4 zhCzp%a2zYrR!&OgdW!1cxmh@LaJr6^a5}Qb4>_F&Me~^aukm=Evh7|EP1>CYLFi8s z=wbI=9JW~Pc+Ll7E`gV0qn2k3$I9gLI=C~d8P(C+<$ag@9qOqsqZK|y0xLw4pNB%E zF4VzPBk5ENCKbVOMM5%as#3ASlr32WD=bpO5SdvhjI5|zl%(BBKOfZ?0$*9b+h|Ij)6~LxgWrG?FnHCwDF{K%mWXdwsjAUfgrew1S z*#=ny7_$_{GZ1BlVJyj3G8vUJu*)i}%EKmPGbpPWGYn#8C0UkcWtcMsOko+3W(HwW T%##cl|M7PuQ-ui$8`#s(+fm=B diff --git a/client/resources/hardnested_tables/bitflip_1_08e_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_08e_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..8cbee39dfb6bbd8506004b029d611dfc5f5ddcb6 GIT binary patch literal 17232 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_092_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_092_states.bin.bz2 deleted file mode 100644 index 917b8cc2f2aa99f9d5c773b442269cb003fda5d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3608 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 diff --git a/client/resources/hardnested_tables/bitflip_1_092_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_092_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..bf6423f2f37fec3ec8c16a4079d7f82beabb0503 GIT binary patch literal 35067 zcmeI53v^V~xq$bXIWw6|X7&z{zz`rAg+K}fqCA4~8m(5A0#e^vw9^(ar9@F_eW0>^ zpj1JvdRw)%rdM0NR=rsjdjYME>#BYDqAvBS)f&CErmfht)uM*F@AsdXgaA>|YVW

)Ce$gVD}W_K3~R+Y1~-=M~Jb>)?xQ4^Uo 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 diff --git a/client/resources/hardnested_tables/bitflip_1_096_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_096_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..ac2ec4cd59fb2b9affe51964e6cc467e50a27696 GIT binary patch literal 19614 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 Sk|f-^%ttxG^9ut6hF~X3yXGI3MSn zIdcmCbmR~49*j|eMeqVO5npRMj^7r(Q>)(|KYcRdk6^^c_@cMJArccKwy(3@TY@_} zBK{AefA5^;o8sl-h=`36kiJ0K@RFDx|6W8yj9mN{if%gE3G&xvjQGw^VNU$WCJDIC zO#J_qZO%yB$9NyjTFHMIIl4S_cA?}tKdtq({MUx>4TTKxKLqr#!D+kwJXo&EKT7&X z0N=gZ6UniM_tYtJOWcUpUv7O;(R~Ef9FvAkq>WB=L_)aVZug};rFP!iDW8_e9ce)~ zRL_}b_peISv@V({U%(AV+6VT4=L1}hO>1fe@Z|~WlR-QO|>90sy{MWQvbKA<3{f`E`an-yv^>vM@aFaMn`9Yjl62DrleWpKiqfoe& z_Ap1G>&t2bS5yICxT9kD)(zMp@8~o%t)Vyet~8unmU(_|=B{S{UGkf6+YE7R!>XO= z_md!z{qpmHI|bqJrCZ32%+u1P;m6w|N1qdjm$e_oaYponzN2R|)*P{mCK=+)8ps|E3T@7x1HpDy(P9c^EE zGa5d(?@~~BVp#3E^}eUKomPhO<_^a1--S-3hF#h<#{wKE|YUG%U zi`pLb#U-<7o*hqX>6s08PJP=(oxYZrNBzq&);(^XW|dc)Qf$6o_2YZq3&>b^A`hgF zk5n!~V<2>{(JTZK=4>R1&B{F6tRb83%riPmogM|)IfO(Fq@M17vK=a0jNb19uvQb{ zGN(Kq?Yol;KmY9Y<-uq(YUWtS&DE$GOB$MXo$)4L3hFoDPA;k!gDLqrA3%K zuy0;-B&0DcmmfRy#j9^+V?54_ zE2`Ywf_>p3@aK=Y*T4sZQ$r06A0CRn8nz&k7nXv+v!RA%YKajwq9!Ym;`!Gv$vq567pvw?m3qGna#m zUsAbbX@bC&yCkn#RiNx3>ESdHsHgfl zb-=}wNF6O5V2a&XmJ;fMNDRbb6$#)u=}d1@Ql*=fgpqCxGu1%=Y!o@|0I^<(oj}K{ zQP5=&yG%O9eqW-JfiW-?>!QI19nF|!tkOGeTIsaZ2jH__rw=^;WdIkEv1Td2-%(%9 zN3EofGl{r!09!rUPZ-Q#J%+k5(2a_4zxl*S9W;)+V=yLMBvogXsVX(wBH4~i&|Lvx z5~G0WEzjt08WAstn+GS>2jemp-TnS!D&9<^>A0arX)Y@1cQ7CdDW0uMtji)eUV=ue zgHdHkC;2hrQ>(tBHxzlcj#Q9l2qfHGKh8tkg0ygF_Ri#it!dQ>6NnPD;~;FH{yC<* zD=CL&P#8YHBV9>9Bf->)g(w;-UaWa&6EChBkTb*hi0teRg7fn*mO*|_gv^2 z*(i1?Azoa<60BnZCAkgFE;WuGXAxvA$V1#o=n|yMfjE9&_QtM%pDFwG z5wkpeutZrow!3ZW^u?^@gcG+a3!NF1g&uuduQd{8j-ZtcXxG@xiAvLjY1mNe(i@~4 z7^ai~c5+;~xz{)b?3xi!JX#8W2g6I9tI3N(ff|&ap!T!|N~HMFFM1J$z?Zg(4;* J@^Z%Xe*q-8`6>Va diff --git a/client/resources/hardnested_tables/bitflip_1_09a_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_09a_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..0377fddff88c0a463bd3f47952acd8061a5c3098 GIT binary patch literal 28859 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0a0_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0a0_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..1feeb89e271c920f518817aed454e10d83cc6eec GIT binary patch literal 17302 zcmeHOO=uNY6h1SV_jpN@cM1tKKBNwf7`u=vmLdr9z=c1UR-2ve;(-y9X#9z_sXxe| zqBhGeN*6+0xRKJX1Zkl#be&}v#g$O{>rY}y7iq1>@7z1SH%(HLXI8;8iceq_DHJ(bh^c3GY70dr;+WoJ3clqexWN&vXNtCRjR+6y z!MVr`?*7D7M#u6GQ%U4!rY@0Ft}DGd#%|bYJpLvpm0qS|!gr~H<7TGS@{p-pckS9( z{$yJ3POv-edXghd35oKO7xqTK*#)B#TLEw!fxXtNs4}{;qbOfrv8;^14uJ^{Y zbB4$hPNN}c_aNsG*Z%`fFCD;*F*v0M{lBBi9CS}TMyErZvKGR zJQ@KodO0qPa8iIsp*pn&MaIzd(DUpH%!zDT+(MH;BU;WljgkVSD?*w?pI&&o!ZfLO zM)`WQ4jAZ%nmd?2)N5nVac$=H6M5+d=XqV^5Yv5qNVoG$Kl(ETzXBh3fq1{+Zl;by z{Vk9BRlQ96KLYC4adoK5X+;BTADY6!VdmfrjprcOe#kWnt9|W5N49a&hHF6zr^n7G z=hXa&G>ttsHgE?2%dcLOzZNlOt9R_b0C5FlrR4;N(#|EpS%-NPj4uhQdvZ|Stx(;_ z^zN_|wMnQBEFY?;V8z&5^gC#a4zI$<<3}^7evx@l(+<3fh($7!d(OU%Y|S;KZ?W-98m^b-iRUL;{F0OIiO*#y37SK1E;jb7-lH?iCK!ho$(pKt zr;q<8y=(blh2#ep4n{CUj9@g+g^gfn9eug~p%}q%9HH?y$OwkiXE2Oly!83O2!_pI zyf7Cwf?)*12!;`i|6L+6f?)&$Q)aeAg2hCe!LS(&S1R&5TVu^zV}bKYERxw02@GR1 z7!DnC-oY?}VFbenhP{LFqOS|t42I2M7{PFr)d+?W413AbVIaS=mptty&t<%iYy`sy zh7k-S7`8-WUy#(CduB@{b1gFGw=I!m2C*3oX9!y&!B>p-nQA>t p7{M@tVFaTd4)acoV9Ybge=iup$n3Eq2*$m=PFlit?ZB7cKLv<0;PU_g literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0a2_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0a2_states.bin.bz2 deleted file mode 100644 index 8aa9c25424b23905035281b997996390c11fdba6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7248 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0a2_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0a2_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..0150dbd78e71d2576f1388e78a98061cd4c28ce2 GIT binary patch literal 41970 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 O)ujoyIa)g=R{jTN+*{26 diff --git a/client/resources/hardnested_tables/bitflip_1_0a6_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0a6_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b120016e21be975fbe9b69faa53bd6ef539fbc5e GIT binary patch literal 23007 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 WzVT>QbnV;3rjqxoy5IbGhW9^y`RADc diff --git a/client/resources/hardnested_tables/bitflip_1_0a8_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0a8_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..592af17d4163684fcbc25bf007aa6f7e47396bc8 GIT binary patch literal 30841 zcmeI5e~?^NmB-KPU(-E#-FK3VNv9J`2SXCDCleq@WM|8#f&@u4kgNubWuq|(F+#`> zNCt%Kni>Tut8}fE(khuMU2E43_{V0c1evwVDu0w{$sf9_DAr&JDCQRu6awb@IrnwX zOi0AAn_Xe+cGXNzzkcuDbIe|iw*6k2E+`Z@O^)li{4#~iX6F1;S zs(f-HGEJ^%3^*C+l~q-~JQPb*m)?N|@@8=(jYMW2N~Dsj%j9YzlMfZ8U&M-YZu^@@ z8Y8YKQ6iajGH0Yw#PqDbqx*N2XRY`o$(A8RxdQo4X{c z>=jd$ESH^onu`mJ&A0*X*!db)kItyprD(P3-9{>|t56kxNn)CA7>S3vB!beCN%Uj( z=3*M>Id7sTQ3ysWj2lXaiw;G#m8p-R!R<1R&K(Fd+C(ZH(ll+aFjU@g$zl@Q^D~()m zoqpG4iZX@X`jvPiOZfi3bZE{UPHAw*w54l2ZQ8=tsj{>b73HlWPF4#X=u>Ge96;Rg zWn}6=RU}dw#t42Ok=|5luN50X<28(*P9^&zlT7QIEk%J(c`jsP$XNx43cN3_BoTzY z$5_+H5c!dEIVW)oIrYp#BygL4 zr)kV{&d!AxS0M{XXl!jGee}ulPd1eAY5Pyaipt_En zdT9xSZ1?RI^~oQ$r2|}QGmI@m`T_vdcw&N}ottLtj7NRf9c1iDak0_U;M`zOwIEWH zQcH66>}22_RU|KGPM2gpa)UprbknNSRO6s@M``cc985$7a}}?j@1XheM9s0n(9z5- z#@@nTk%0cIjlH(c@Il#@Pnp)Oss(e63=cwvm{FNYMw})5&zsh3(Hf9HD!t>dDLeNG#!Dk(`m}={KSo>c25XF@_dabD%|RaeMgFkpCPQ0`ECxQS%57y zSX*FZw$sju?}&H>*!Py8C_gfCKO)Kl<+r_yzu`jl9E5>gMvtN4*GhRu(O*yN7`N3x zp&LRleX8MrWX&#E1dlhUd8u^s48+6`qoeese~iCXesfUYMcO9g^#j>?&cHyU5LYF( zg*d@@3r~ElH2SUV!MV{ebQSWGl04m93UlFQ8{ykaiI|*VDWdzKb+|nGU|fF?7y{$m zMU|%dEYu@ab~Q;E_cye?!pNf-)eOQp@?J>1)ySwrI(dfWjl^AEQh6gsAA#XF`A=T; zf1z>%4xYaI>H2K+``ps*t8y9X+P04Frd9B?t#x=w3^1U^eMz5b)yhzH1%2{B<_hk+ zjQ1NL4Rd@Y$m^NK7@_Gpu$twkxoOOPZl<^AjP34>5=DyDZZRtCP4t@-67F~Yidwa^ z=Z~Z4>&Bjkke2L(*1Bm$=kk7S$r%l6+XhZ3ffGyMd`IJ-0=XE@ zuJ0)akOB@3WyQ4U3udJlf`uz_gi^Z*zi#ZbUL#8f)f3q16}<|Qu%y+?O)_)7Net*( zgJ!MPHg@MnlBclZ6W9oi0y{)Hv+-l(>;8If(7`2DXP37irzFX}YZ9Hr;Dh9ag zx!Q)tW@DFaf<6BPF77j}x6d`L3|MZ$3>b&bMRODm7t+QWBj14anZri*Tm^HvrR8qJ ze(^=?fEPZRbw6gj0tisyEy{!a_&sjO5CISg*`f+qhjgWBtzC;SZzNp6c*q44!-Z`~ zmGPe8oTVe^8yoM9sTi+MrKpZ(n8u!?KhXMlxI4t%aDKCqWsQduj)3mN4iTX^pVxCU=dC!{{hB*ynnB0Q2zJQhbEEu@0r{qK5*$o*+i|#}W zdzF%-o>v%b&ni9@94Kik!Zy9>DI@o}-$F3vu{sa9(6#q@{k+q9hfy>}_|Osi5y++c zQNU6FEET{qj`ADwi>`c0r&gTc)TS>4Ybi|-{hsx3rR~(3D4aUAEqseSP`#5mwcM!k zDSr~bhGyn-`F51qKR`hF2B;iD(x>F*Tt9f24{?kflhJsX(ZlHmM($?}eZZMY)6n%d zVZl=s0{@~AG=W~5y#e%|JsuSJAY0;}Vy9?e0DYKf2T@Orx7E)uO5|a?v8~$cEs%Q+ zB7-kSQw{;92Q#_R@6qj5rQsU+N}5DOXjQ|=3kTze9CXZtj`PfF$#nhXa=2E`H?!Q3 zE1`CT7Lv;nd&7q5da+Dif`^hUWaa4PxX@MUdIqp#tGk|nnx{Rj=z1GL7`eCi(aJqo zAoa?$p)q=bH*Lr0AZq_M*l`x<8jHUxhD$wg>#rJ-%L@Q*+?@~RK9QM(rblUv zid&CUo_Tp7`HS1gwaS_Q=8FKaj)zbQV?5`nje(sAdGSyhha|ADwX6(3(a9#*Q`h!b zYW38zE_DuJ02=&oTM#=dR(Ke-?0yFqkyBO!gF%40lm<2uxYPj1Ml9AETEZ8gPOHh( zZ1zLmjcL@%lO6qb>c)otT-39pH2Tr(!6X_6OqqO4#+B%3{;kxwgm{8rjBA(B;4(nA zocA_(OQW~P_1nSjGGL-{&zCWSX9K&72;dcv%e@Lfe5BEa4|!JO<8CD;Pct}+RZ`bxW4EEEbvjI`5}I4U@paX^%0)Ld-tII<+F@^%VIBY zI2AQi-hQ&g*w2tpsYTI@MgDOWEKO~8@;RJA_M^a@-X~_fevl{2R@7r1m+&?oLb%W~ zJ`b`BzBN5N(sbX>V2H%h9SrPIxjEPI%Y#OK`8s1C#cnC$2TOZ*oN`i|^uLvXl}+o1 z-RJ-@#78vZxX{SGLu0c+!(4$Ew-GJaZ-~I9~Y4m*Cr3K}ZJOm9iCaoQa*=?#P( zE;n=WuvVA~uxcg3yOejln+9v8HJ33N9mTPh&5${cFVYzB-%aa|vxrUlm{H)?c3S?J ziQ?a9m-duNofgS!c(NSV30pOmCUUn^2=>U`ee|vq*;H)oRDut354)BSu}D-O5mrTC z;cpF;0cqif4;`e}3HSydQ1Yjp7|dBR0XsQ}YeY;`b zZrHa=Rg^WE?RB!Omivnf3d^jdBdpO^*tZ+@?VkK}im-2Ye3^0Bx2r34S$rGz?W)lX z`*t}%BkbEf*~0&@ZBI(p^rv$u1mI z#p2R{!2>O zw;T5DhJCx?Oy>4KXbJmv!0y+c$7qbTVl%6@h6}lN2EZp+_BCT)+)eK@i9^SqxC`X>)EXZAz08Ar%CL zRu@PX7Z9ClTE+zw#1aH6o6X8fTkf)D+Iza65AS=NAFof>as1EgI?rD$jU9=Mp+bq& zyT{FM=7*wwX59K*x_r6I*5wj!m-Hhp63>j~F5jwr+24r2HXm`Rby-$xVs#PfW71vH zmtzy_*Sfg4q^GB^^Y%_>Grt|5U#xc9>cUP;5AwppPHo@nve?tzZ=opIFa0+Nn{7KW z>~>@cAk0k;LDNz5&M$}q%v17&Ai)u~%UIvyHW>&fU*LD%Wl30SQle^>8|H9vnRni$ zwLU!^&yN;weS?m^pi+)|e_gCD|C+5@oN)bim`%@lQDj#=G{wF`Py(7-5pJY*g)(HJ zfqUCzY$JOlBam3WHvU7~8;*d{G}QuU+T~Cg&4-4`XaQLBtrAXfvw_ZZ=85`f(l(kx z1t=_(feRa1Y8{=cH>uXQ!(ZO~d?2m|?YKVs&#%8m{=qPdHL2nQmu99OHK-a89$$Z) zKBag}t5h94o}5+oE_?%^SQs!Z{571)Ivz1y^80Sv9Za4ehr9Qgrp&ooZHR+)Q3Mqs zeylcJi@#Z%0*1&a{Vkbz5|@WPM6!wT%)a_TWeN<}sN?2%uMdJ-R1{M(lUY$!lj62?UysvwsN~PKJ;8Vfmi#H&XZ{Jkk zlz=7uju#nmAGD?B#?|Q1xXjW|zaLC`6H-4w(kh%D0uH{L3>KIKT80m<%_wX%)hP-v zrwa2ir?zs)puwHaBuO=4AP$K9JlrCRKt`yY*-X^1OszTv*ELdk$Z%Jcj2sRMr#2#6 zN97!gH4la*iLzOifdnhPcaAW;PA$5QZm6T5l}U> zMypNsV)40qeqjVEDKyFdAMAJh?~b*ZgZCz1_?-ztahNPFPZ;3N=b}_XJf-b0J?mjz z7;fPXAir!Lsb9MyFD03|Q}Q%0H-2p&0M=mfOIsUSNx15yReJ!5gu%fcKPKJRXGd@y z8sFL_c3a|OIZ6@7iZev(0R#?*U^nKBeMp%pQ*~6&u8EicKkd+8e)gxL`DP*gU>ePO z@x|0*8U4*j)XVCD%?l2NrnH06Xop0+dp3kIN9SQFgO>#DAiv?aubhJS`=+ z$@8!p;c|db6SUWa^zETu9 z=qtIWZNY?%Cpv7rI&q4G4C~d8SsV<1n^F_Ybz?GnL@iPKvvr78%LSE)2loJ;qFA*; zvQ#3(t#9+#)<|;}q`09OAc0b8P-z`K?CxZWUAV-j+C00;OES%N%+_S`FFe}n4gT&! zkoaReAx!6Dqb3U)5h)85OmjVo$^H!k7qk;tO>8@rCK|M97DC;jA!H(O40ygj$pA)i z8R^DWU4U1hp9ovqY;U#meM*~Q>#LIA4+IU9_!z8;>~Cg=4yKp7hAh^^qYyFn?|9v$ z6u3m_&qDGBKysFlw$r4m@NTpLRlGD)O@FDF%Gq4Zi%4bLool>eb~>muwj&pb7WW-w z0E&H{a$fqLVbza}@7j=kb4x{A&L~)Gze<%ATJ`zeOF(;PCanj%N}*R$VwB6^>^`aB zV7up0%WAPLGKV|xKbrSDR$d>uv%5bG1w|_As(9CyWt~Kthy1M!P+v7(2#>gdl$Kqg ztXZE@^=dEa9ch`TsvYPlrR58J+N&gJx{jq{L*OCqs_&9J^_wMAC22jX61cW;fD~dc z*@R{!CgxI z(0VrN0S11e?}Ra|5d!PC82K`?hz(K(mf6CzM4So_0i?RmbzYnexzIXI`F0gofoNcv z>)#jEFX9(;a|Sw$imh z&eZP=s$qcIkn9X>K13YsS>lo2N9W@81?%G=It+j_9c1=hyuQ!x#XNo!KSLxqZ(yD*}6gFxBNJ`n+9p|V>z+l*ugl9!2NL)_~4#M^cvrp13zgaM|g0? z`0dL~eCB)i%Dr*7(w_~#({Cx9>r4y!$47QHvt)>WfR@I68Szqe@5QDoEfdYo>fEqH zOZA56+oQSeCpnwUZ`$}}_3q>(V5T>{3UWRdR`*cy`TAdTi%9Pr*tU7^PppyS;ZPy1 z0@sXh9+PmJj!BV~^`u&P@QyWsB5l1nX?m@3Pla1~ejQz=9WUb0@@SUq75iI`3YWSM z@&`ErE~yC@0I2GxlYyGx?4*dq!ItXaw6>jHERZFOet|d9?NwJ5U26uQbrp?Hjz5QH zqhExJW^cJR^B;s~P^d-ZaR8oMFs~{HhaP1WVA@nRgm+X}9&~O5--^vEHgjd=4p<+pC5F zLXTEAP2j@r01P{Y) zk=% z$Z7(OE@8PtGM!0cj|I3MOiR{Ga&aQ0TniK9J)V>B0vmhT&D8g&8@_A_&F%R2lcBy` zYz07})DE8f3%?rWRDZG-;fHSB8o7ICjp{$Mb6JjL$BDxiZa%$`u*)h>3$7hBrY*aj zygBww^5Zm1U?E3txA7Q6F9yV59~Blr$I;`UZ{kI=Xg_i|1|>jRq=PCrCx}^jLuu$yfjxA<3W^vKGizkCK_&gXxVHq%t)GB4bsj zK#+VEzmQW6t&|#i^t^VGGz1)MxNTL!C?+HkPDWDMU@;ACrcHX0-4&vOd7UZ}X5DaV zq8%K3WMLNJI1vpvlqDCjA-L0JjZ3Jj_E_HBo z%vLW~Z?rdmMZkQs*Yf1?Sc1ebx*bEHyQ>m^BYnVYPue09Of&phKyY@-g5ZZmux?Ug zK4vFs@cZQ#)1Vjz3Ke!^8xkoI;to^b+r#SOfMI- zuX}6XZ^|2`%$hpmNR%!}K5H37cY~al6MgbufBbP1X*1luI~gC*_P&-0t+nH@D8;?z z$G))_*p?ivG_Qb2Zdh*IZNYHWT_&~{SwyYhSQGPcblKnUJrrs2d&QDx+zUNo?Y7Q& zuU5Rt$!ZdnsG>Uw`>S5X%vnZL+j{t?lUk!3ls>IoA^g6uNX*gagLxmSRsUiknA7(c zo5U9?-BB$9X*HZZus{}07|oLwBoA6k?pNLajwtSHb_~#{S&=2oxo94lMtia6*vsfw z=IMJS#$B~9A8=1Z^&FQA!TI!lP?wcu8E=F zhcKt`Y|CWYBZv@EGy5m=#Y17*n$hcLPk*_o`LOB0uBU6yB}@_H$dLCJvV{-^q(@BV z-oa^e*MsbjBTSgAU*2}CCa00X&o1DQ0`=8fzx+~@(Bk)f0df$x9K~C1w8~BdvW^|& z^*}{tCPk^>V?0Ru!XnZ&`bVF-QmY0G(KFsE)y%=aKYT3+iT~1e_}f1*$jG|(@6&H)t6e+Ev2>y)x=_QZzhP9Gj@?!JI|@#e~r)T(Z9FS19+x>9nV z24}y*&=|oleR8Xai?20~f7WV?S0z-jc3L_E{I9fFP8TG-Wls=j8{EBwOXJagiv3Ns zF&534g)`m+>A8$oS%1}kT=vVoQ2t<9tA5rVhaZnguU~%5K3HpG4-s~;>Q3#-`q-SQ znhE%@nwCIA9_IuiBf;H46?pg>LZ zxDY3XZ993nIcIg|mjvU=l9f;HZbJ$>`7?dRGXvjKX5V#OzS~uacC5!3%V*#B6mv#bg*guM^xUtxy}5mB zIL|y@;1rH6H(WlOvtnt%bu0t{pDgeO2ZGeUftR0?lOU>$T19!qYlZ*ux9RGZj}pTC z7w+C!zpvOlg^nY_q}V!!k6RTN6KhmggH$OC0rm8HmK&Thw$qMDQZw`FsauX>v#fI@ zblouviJpg9-c?ynK0#3gI^4~Riq~%Pj5m`Gy3#c)iiPs_GO+zUXz9367H`B=WeyffoTpGD1aGugY-4(%n340gF7_MC;zc zRGZLbIRb7|R%HCVvV$^!SBVkvxs}NgSjv)OR;w)m-0L*_8Yj)iTOIdL?x|>(A9GVc z`0zSTVCd0hss))+S6U*ADo3-HE~QBZ6?@1rwfoDZB0Z=&6GYb2U<-UOF=44Iv;twC z$cSM8k6|zcDU0p63=Oq)EN-p*2%RiS32e@o4JKE{K^3k|DW48zCj3EmN2Yp8-CH;? z13jk>>sS@Ch-T0-KyY~#i-|AWdM6GYaA;7v_5g`!AWd0Nf$44Ib_ z^ePZj|DayDZrjz&rn5nfhhTNH622Il>Zt+=SU{JVrqu+slb9HNB>KU+tE*PFUfsYR zUt#E&pH)5=;}BPfg*iyjW0X!9a^q})dgOA%Pn9Lw9GV6Yb=jsp_sQtWl%?+4{$=d8 ztJCB2@!U5rwr-v05}TPmFV@CAa@$7kN)Fs=k0aZAxi~|z zhQ@YrS+KPgI}Zl2^G24qB8%!8A+_^)N80BL{n?{>2q2)a3A=b<{1KCUi3^Gi5TcRj zJRut5!W;ub*mU*)gpGDFpGTp`25m=)q!p>(#LC6Ri%y4EI6dtF~2@Yh2S`wsfuH(GiosC?S9^Q2Ub2i7a)cd3m+pSsxFXk5LV4u$C} zo@W`A;ZZr<5tI$H1j#1Y)DV=_dZ&_>%vB2Taz^k`4mzWi+H2=?PBgg}8EkU4*Zq{} zM_)GmpDEpY|HmJvpX+A+Yf6XqP2KWc!l8}%%Q*o)G~9~!|DThR zDSA{R0v+&A;+8W$sj;Q$Q_JqTW~)iBQHu8och$4|P<$^Cjor z01DFmuUGW(s!XOc;6dugZ7_x0zYO({ja$(+{m)a8jl^G2J$ zI|mv+*vc+IWBJTMYAU#h8N#%3(Yp3t+jc50F^JVXcC5L#d4v>Bo2YDWM;oY~{66%#{mL_$(qs=SA@x5Fik0xIQYuoSYL<9sfHE<;ezKILF*mlx>J0PvPSCu?FhHxr*q@IhV4Z_cY{{T>{B4IrPwR;g`#p0a*_gI5x& zCq@NnX{)1&mp9U3_w*!Avz&Ql8S22fpl<#F(u^?gTwt-}*1z6iayPI_dHZStg>xwL z^xV5E(VKVRS%>2rJzrnvZ5EWBkORL@o;d@u_K|H%9-D9cgkX(5 zM3dJJt*q&JaW(7n^y`mTHZS}9W#8S;vi%QU6;Ivm(b`aV34_(C8#e~eg*a~(#r%t!A3y8un$jC7DC|)}WJT_En8hY*1Mzs01PFI$} z0DHLR00oDqfqJ!VKJt!Ka*BylRt`UC&m1Q#q2cp~`rFV6CnYSfiYLb@1!#eMPe?!k z0!Z&>tgr|iM&dWGp>GtV+_Q)QZjec%MD64?%G3Cy1_T*o6VRKAw&$1orRvS)g(BPZ z%dDWsFL^6fFX}?x)+Gfiwt(udC)IMbJ_sLC95f(v5GF&h05V9JCevJ<*^W}eaRRSQ zVf8Ozm zK4Ti3W@-!-u=J-kZC>~I@nb+&qluE+tJ<8Kn#Avu&_BdZ0~6`IOuNl@FTlNcW z0so5roY&KfSMtNXz^jw5WgW{UVbyph1E9gRxKV&iRxh+AmBd0MGlzC&!$7GE(oqeL zoR)MO7mQB@=UqWrJuaLFa>r^ira=1qBcLu#Qd) zK0w0z@QL=kw4-C=G~?9M87p_ZNe)zZdh50&zH0mFL8*R=b5quUqtuwcOFcc=Sw9|q zE_%JW`oIs7ij%!1(ro*cG)>5TAthwMOM{o);dC3?)7T}ywfrv8^}WZ;)x^%|`ftVa28*(5=db7)ADt z3U6Yq)hly6Pw#A@<~OM}2=lv1a;s#+g86%BV9;eR*G4T;i2$>E1TpGtH~w$-teEN$ z0*Z`elPfZ4vE4+sz&aI{1MzBOPi%*1NE*;^+RVp{axOhvDY{9fb{R-@Ktz!?vwY)^ zM*+T*9Yic{0iap0)&`%qiJWNM@=LM#&1H%Tf?Y~R&?HeZr7BN(!s5{!I~V+1A|t6` z{cJ7YQIX>H+p-n8-m*j|%%W{bzqY7!xkZX))_n*_pGL0cf0L^`Ii$lGg(=9##`DP= z|9D>Vy)2e`EqSyWzT>Z<(l5`WmwkT|c7PZAxION9*3Y7u%;$D4M~6JwuJSeuW0T;F{9d7m%($DVJ9!pT}+XG0-_9hfD4;;7Tn>s_4*lCr>(T#GO+ zu`!TO!IR-itlr|>^DKZrY~BO6atco@A=m*shiyGYkS}{rsy$+WBoe27OAwFDMXNqO zIs81~)7P4z*EhbLF7tYg%&RZJk9B;Gh#pA|{e6U0kaccz!@n$7pIkrGdH_oiog4f3 zCBu2=AIPS#JbuX+Ea|PUap|!yDBfr|4V@RL$9NXNlM!rk3cQY)0;L%2g$QhKH@q8* z(9&QEDT?WZ8^wha37ZJ7?KIu?brVU_K>3ndN70GKDp9_)nt6)iq;*mGQl^!dhs3i$ z6aVKWVlw;$r-cQ?%dPx7#QfggNvI7(ZY|FfC8E}zn1mNW#WWqp02v$)p#l%g*Td|Z z1wL$LT8U8F4La z-P=hS2TQ8KW~-KNT8*UT$oKCX0(I!7Y|aAbnWa3;$)Svjz{d_@*oKf{)Bc2|8zM}| zk~bYWhP;}bE2}}X=dUEc-b1C~8q?NSqxXd)%L^F1W8J)URh&YK+&Y4%P767p;Ud^W z_0v1wdq3RWlhULM2Qb3MNy?7mo~1oLkMcweuNN__;Kw>74TGltkZ0<-0PitsOA*05 z52`F>H2k!7_{!^jKRthbXw~X0bag5QeP%=>IQ{-&(b8G3BbhBPs$RQv1FD>auwF75wSc|1L8$3Xce&x5GZ z?Sb+X1xPGQMcWbGDL&X#YHYmxNwxZS3(Y*#2v*&yTWnm}*Ft!RcXU%&a=R`(`cVjR zWF!^Y&WcnDbef!%{d50ZE&d^8@7cM$j0o$6fWVfJhAI5Uz)F>HPlbF$G<%nE%;ylDDKnXM+*xu zg>dJ`;)0b5Q+Ue2T*oT%hNnM5E`_5k*UshUye~a${krLT^~yHS z7IhO8LF5 zpHTQQ!?ojkPqk+Up~(%H3{pIe%2AAfvp+376Z ze;$TnM2FP+X}zgOlR*qRl{`uHrksvBBhcQB`dL&JR9bu8l78$H%L1q-K|Bbmohmh+ z|9Sr_I8d3tVfDqsZ}Z8amE!D6yM_ji%PzzEZV{!Kmw#ON0OC%I}3!9}i1YF>kNUG+NIAeh8g7wIkwl8S_7! zst=o;e?}gLT-Cq(qen0*yL5qZQdb%s{r>c4#H*2WKWmLcCXr4Qr zQd7gLjkKR@?yvc?(>zIf0^Sh#kzf5Jcy}eACKY5F{8UNoxOC1E&rk)H94{mVs*(;Z zf^B)WR^4e&JXW(PR`Dgw;}f?rL#m)OYJWq-k2wH6fsH3n!Kjd+RwUYfyHds|@bY)N z_8~b9Ygg>lxYmK>I6vCjF?@Z`){elX>de#p^~0WFOPzR9q1>kFK5_9LWu)>3k$)V! zij+mH3P}#L2hMqjI#-a>vtzFXhZ3@?AY17~Z}H#d4n#(3OnH|7UViEl3`f;Y1h7*m z!3zLWh9v|;kD-h1VHeb<37+5H1 z&HZ>$bYMxcCW$U*BlX@k(XT5aU59^@+b4R|oFk60J`qxl8ne>7>{PYZ24o`*!xU}1 zVX&YzQ01y7uyQP9&fcxE;E3lLklBE3!%JtCqDJE4!7g28UIMLZCX<68ZHhhnK(S`M zZ)T@hi)`)M-`eTnXb4`p@(lM?;K^pEQkFCQbh_i-%ug}1wucDBhDb4H%a;ug_`93d K4*Z>V`F{ZjJA%6a diff --git a/client/resources/hardnested_tables/bitflip_1_0aa_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0aa_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..21b477241bc893d63de9b52f3e079eee560ab3b0 GIT binary patch literal 48574 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0ae_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0ae_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..ab5ece8cbd5d9ea0ef3d1345403e641463f1d427 GIT binary patch literal 27316 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0b6_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0b6_states.bin.bz2 deleted file mode 100644 index 34fd067ec122fd5cfed8dd889b55754c1a5cd948..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1541 zcmV+g2KxCzT4*^jL0KkKS;ZEfwg3PGfBn^2gO~xHiyFe4fPes)09XJS;D7)LD1ZnU z1Uv4D;0u2M0DS-e000000000Sz?hm0CQO+!FqkHqWMW_lU^#&?G#E^oGGt*eO*F{F zz!1Q50%B+|nKER^!eE+dk%@pIfaV0m&|xxU$&rM?G}9v!07C$jsh}D(85uOt10Wgz z8Z-a^q@;y3)XHptjWT4Oqtj8EPf?~#3{OIBN2&M^;gljy_*AdzrBec*f{>V%?io~J zFhkV1%)^EjUsC-FTu}I)N`7SgXGT5qIDSTFA0s$3-(Yd@9fwKK`3IrW^fQJdxsQzS zcRZbs3&?OjM@|mxXZ?)hKIO+5aP^(brTfmu1I=Q}$(CNFmlGKIN1#*Y3)XS#RpC8P z-1*LqNrPASHpBVX`w;X2+7~tW2 z$E@rh2*b13aeMkUcuzQ>3;?8FXFr&58nPs_nzr`-{8wI`WG4PGo(-TJ>!SY zUgCdc^*H*UobY4j3>duK8G)X+sN&L&PS6^u{l`%KRc2i#!14(jk-*O_)*Ct{3o zGL~dx3D~;^S#&y3@?kK^@h9mLs%20Y?kQxcWh{(~0R5s&t{8Y!c``k0UT40U94p{g zne0bJcN5e9NzB3ra#ly^c1mdrKJF9`kg_ttQjJ$>;C(1aPaa>sL z7qm>ShorpKSiFPM@M9)%*&*0hg)mrR$%4a!!nzdcGL+)Jk&(pnUqbiS=TA}k*U)+s z-dDUwntmmIBZ_du#K?CsJxPh}KZ^Qa$n2hi!u`T|tLb~J_>T$kD~Q7@ioIyRJMVs{ z`#9<9CEX@hw86y0KI7E`)deNWi#@J~T^8F4spXBKd0=o95BVi)%jFrSeYDPmR8QpH$bne)DLILAk%;Xbx@ zF*7b1c3C@<1G6(bGqUM%bYkeshfXZ9#&F8B9Uadh(Kxy|osq?yG2GyBl*Gk2?6|uJ zXAaD=Vc2Cm851XhoKbNy$&&II;$pJADTRrN#LBoZa4Rn9jw6F4;bk63UBt+~_vvHo zGP4gN;<%F*E*x=>uT!r?mLHL3FtdG6VRuH(~F}gOQ%86I!npfaI&YR zRI*MM7-ZpGPAtYISteHjWVkZR6B8w1##}~Kk;Rrr7-KA~Ws#E%usuh(yv$rCcswh> zOjm;8ipEUN#p`;F^ep*GP4sh%OK1w$(e>b4#FLg6yX%?ld`aO zNjn8m*+&&{sl$tkrNZKqi87UnQI(Z(Qw4#+ICF}Q3Y?)k7{h@$%0?1hI3tl$D%6U} zFdSSi6>cj?<1CSJoMeX=7X^k6IF1Tf#8|}^SyaiDD-4zyDvYpB99#j05yi&@xG<%{ r!7#$CFqp!t7>vPYM+O1I6>*hugBVO;mKX(x|BJaIoG3_Qi%(ksu|MG7 diff --git a/client/resources/hardnested_tables/bitflip_1_0b6_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0b6_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..5f3d72c5e5a21e4dbcfa2d1aa76513eabb4eb4fd GIT binary patch literal 16732 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 LgzL!Wc_05bPHV4% literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0b8_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0b8_states.bin.bz2 deleted file mode 100644 index f638e4e1bc1b2cff3d02a10b5594d2fc107d141b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1630 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 R$})Z)fS2NR!es|8_+LHOHwpj% literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0be_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0be_states.bin.bz2 deleted file mode 100644 index 91e544e4c3ff6c63ff616062f8a7d8c18a0622d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1951 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0c0_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0c0_states.bin.bz2 deleted file mode 100644 index 87d8693df1453a2c5d4ad7917b0252b1228fc130..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmV;Q0bu?@T4*^jL0KkKSrY>VjQ{`uTtU$Q5C8xGkN_1x06+)`zybU@P@w<-2mk;k zr9=UsDJdzFBhkJj5>Nb)Njk|DRCP%wVM!)ZNveQVsU*@sNzy?i=P4xAl4?mcNhYL| zAQ>g1StYbfB(W@#(pX7s2^F$SB(g-Ox^<-DnKVkB0KpQ#d8(4)N-ki1q_mG*lO{}> znocUN$udsKJgO_oOo?_0IFJuX1e4l9B*_Gm`5=;FK_tLQ&calH;wqIAxss_Rpou|= zP?da1l9Dha#F52-;GMdSn562J%$Y$aOhyZ{900e*lssKPn01fVxP#_ur zAQ}J@QmAOjpeZR+Pf&iN+7PO_B%KK)$t2Q%jFMQ8DS3z_w32d3G?HYJX(YfcNs?(M zq|#)WOrWKtu_RoLEVS8Bygcr81o<;wte>sdNqKl46xfFcj!efMlvwBZ^fd$V5XFN>%MlqN4(srbSp&3SyrH+>uTc JBn46Y{s4xXro{jN diff --git a/client/resources/hardnested_tables/bitflip_1_0c0_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0c0_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..2d542516abf581ab8171fcecf5bd40d17d1bd607 GIT binary patch literal 15231 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 z%0D*VH8driHJiS|%;TyLW?sHtksTNbM&knihKI#g!0WQ5XZ}d7LQ9J!s9_}j#Y+wY ztoLg>u6E5JCG;IH15E%br`1fD$ zO$EutS^@1Yy#Js7^ryr>FaDvdFkbWcJ2}%5s~Zi+#02FM>6DOh5OUt?SO2JuF645j zZ+*~RE7-eW+V|zYm8VtTjcK}}XD^;>_nxS~{maCERQ~pK&3o_F-SWkMSNmq+yD^ia zvT3I14z{G>?Vpumi`YHw=$9IMKmNr;v-#VW<6`cB(wF+%xg>#XlLwZ<#2Lf*09XiK z6c1M&lMd8(>)dc5ZAdlHIn|G-)i?bx_3)$6*Wc&0;b`et`?T(YDmhL~obg2;Chzfw zvfcmK`9I~a%jLy(55Me1YnQK_eJz5o5mrAT!~ zKJx}A>SFY-OwR!8ku`8V1PlKCzyI8LW%aT9+5UcV;K`Sx;!#P9^|@9fXDLf-+g|&W zxc9S~C#(K#gX6MSQ+e_}v(;jq9)M#h_KejGucf>8uM6F^^V8k<5k@U&v%^J?3&;l3rbytHM&kw#>-5N;OMJM1>nIkojs@{rk=15tC9AK1ud0z@O6*fL+{|Jnu2|fItid#z z%ViELfi;p#Q7pKbP%E(7sCCWCnwJaZ8=G(Tef{42sxN9n|$I_+6e0X zDLmq$@HBSULh-l_S@XcD?j+^0YM1LegcAyMZs$>~ zQc^p&DpA#p-yth!jyELT^X9hQ0pUPn$misiPMHnLq)1T=pj20`dQ~FrVz8xhZrKCg z&JqeAi^p~egFiJcHt37yz1#x2XkKk-@VOfpC`E_&iyAU&4&LoDX&@DFSD!XVT^jSj z57Wsf`Jvt5@xA(Haf^!1aXA2DsDP6{D0jVezad%LV|DP+(HFz!SQ;WsIYEIC>8iLO zXIiPl25Xh6o5^TjLO#ibXt2}O?$1~@JKAriB^vgE<_t_=1QrUK?p=WERf^p1K`M>j z8nV*bd(s|;L9HIPZ!9}s@_7$7Q>MrrOs7cs0WTNQ%R#S&>HS=YQOaWeNWIUM(&PEV z{8J$B*gw>c-q#-Gp1?W}c2S0`C^9y-Iv(l?z`j%Z1{mD5B_I)Gi_SB>K@7lgMG6-1 zID9U95g<8znID(iR*Xue6gT2FO4{k<8#_>&%Q{5^A#lZ%a^VC(#u{XgdCSjkujUol z+KhLHVgcvRVYA9Iw%6L2t0rR+qPKIJhADUrLG+-o4kSa@@|3F!Nx}iP0sxTB_&939 zq(ES|yCx+SNTgS6cao7lNOB{%A+aGVm$tQf;mxf+?I&dT#x~xV5MJb?H-f03Ce4=v zy_udHwhCU7?Im@M+D{h(6<)VfIORc1Ac(~E3SZ6kNVXrr5z8*KmT*;yy0$kYk9H4Y z=V(3_LXl`U9NdJ0Y2*;j6a(hceW*?^2%71#fH#T^HqOS!gFTt?JL2U4+`El0dq(;q zzACzku3#+5gsWwpWWwPlX@k01uCLia=f*#tZQ@hBVz2E+RCjiaGbKTeu`QzkL;X3k zv6Hd^QCW5#Ave&PqnzkekhB|>NKRs9VhJTSc#buS&9~!w^4$eR$g-0F)Btf68bO(@ z&Eb(29dOboXK`!;qOg!D#p3uNY-J)kfm=eoh2*{YxqZ|L+chpqt%00s$VCiF(QwOM zSe%T`4AjbYei*Tiu2>C6(U51J z3WgxUVqo5UV8K22%tE*|H33aw2MY<3!L!RGh9p8ZNRzwoV%XjYjzMWWOn9b&B{6 zB0PkJFw1@IU>feX4Lj`M@$Cs&y62&dBe@*E1KIpm&NRW_n8Su_ t6YI{)YQR2Q52z+9FW9N@%WpNm{N?xsFS#wD$BMyLcbBz*XFuO_U(%$u z-4xMToqK1R_wK#t{Lb(H`JLbIoY%5tT{W*C__zDtZcOjXfBdv@fmt^^%wLl?r*wAa zP3>Ub*ud1S8XV4>RmQX$8=F(>hg;18YXaw7)r!I4*t84|o1oACZSsGct;uX`*}mOm zoEx#GysM?N)8xjjDWi|OS$&_1@+Jz5Et;3wR?}_^CQB!Gw>1?l)@0pE8g-bLWJurhc$sGCZ0MZthBJ8k}piai)ziEbGgIjLnvemTR zqDPq>*5od+dGmxda~UviR@*o`#HXvVriPIovvGyTJ@4Kk5*V=`BDT_x2gbxX4aigH ztTk1>>FM0O&6aq}OO|AO@!$Lq=m#C}qXgYV5HLY%-bmQDMU<&_!@vdP!LE=!j z(yX$!L6T?$iyk9N+gq$1HBBq5oo`lkc9sS3t2u&+v02M2levWl=V+|O*1U)ZLEoz3 zVKJ&^vq-7wi&_Ia5Y+KtJA4-RcSI%!D>}HPC#>dW&Rq)-cvdwcX}D{E^qc@>pVZ&X z76xqAH<~v?-X^uGuqNNamxBn+-5u>^)Fxofy-`q~O2~4z@?ay-;1NUQToDYM8{+Au zf)~K3n*Ak}saKz;A`{q#+S%yJBT*di(G)>YZ2C(=htUWS!o8q_US2h#Tyq32=a#n& z5683GqoSc_9a09P`7Y0>^v_mX)7ggFG}=P29Vm>r%zbN8G9OG}K-i1m#iVeZJ5@-T zkY)|XWCw_xll=Xzv9?i0wejxV!YoI{o&?@SgE1TI{$eS54< zai&jNfcENv0MHy{OLlb^y}=|Wb$uo>pr2c3O}s17;;j=}yp%SxHUs!(+SkGih%W!O zHQ_iSLSm5#8M!o)-2(%WSO~FkWt0C~$?I*vaG~dQ&;gHtmqWCZdhhmn(amP;hpm~z zs|C*KuG_|yF!w=kcPPY7+@RibtXZ^MA}^W2Tx(XM7QT0_ByyK?)i$2@8Nhzi_h{zj zcw|08#}1i{cLGbgt=Z>Z8wu&rUbU;iPV%OrU}Q%@Q+S4nJilcuUeT6VbCSM#TR?6L zHml_VU?!^9dkHVU@6F&mKFX{)7r^pbi+J&XHM8AH?D_W`SL7c91xO)ggeVsvjx5~1 z;zuZb3%v*7JY!#RmN%`1(0|>eWz4_PKO7PsUxr9Ln>CHNBjfI}W{vxfHDAY8Hf)1a zaAd0fS#uG5L}g$Guh+Q$5yB8!bnagd3+ab+e;x13kcA1|ZJ5~zNI}^EIPu|{tl6%C zUMuFC0L6**_=xL$*7V4PGnZSl$z7fJmYzOq)(^=<9+cz0$f3@Fac&sDLBo>Y80Xb> zo;iJPJp}V6?DB}x^qt^}`O0HAEw$$JgONcm4!eutuoy^KZ|e+uOf)JpTI=mbG~~m5 z<*Tq3+*fd+%qEc8n4sO7ueOCfNE-QWk4E`Y-YqB7>Z! zi7Oc?cQK=(zFG9;O8%AIGAX|2tT}}@AzgweC5ljrfN{_*_(Dn5;F-6V12$fMG9Xl1 z>(kyWvz;_Hg&mCC?d@Si{_Gb_v=DW!d)CGsc#l~SgRP*2@>Pe#(w{;AuTkP(cZ`_-dn$0TN-k`!Y#uk)*AJRpA&MjK)X=ReKlc?igVsQjJsET_ zlxtfY?u=2QtfrfyX~L7Qg=HWsg;)|D_~*!cf*UFSUenCCMr%IN8I@EY$i0{I@Nopo zxaSQ@ZO%n`gLPnmK;+`2_K49+75@DJ2?$#bJH%+=Fy_w1+Mzj%O3i{^x?a&GUN}ho zJiMEGi@yVJAIRawmZBzvQ*I&Lx|s$7y{Il6d%cahT!AOpxs-3i8bFoC^!Uil34CiYxWB0;!bPooWqTV2W{ci=ZN2XqwRF9 zN6EIsDmck34Ohy>`G#_o@3(tT0@#FVz?W7?TCz>tK)i`|Gsx;*<`?+00_wUM6Z5R- zLd-B9uW}7O*9&d+^)j(s5)koibXU|$lbfJw)a{f?lzXcwm)D$)%;F`okB@1_eU{hq z5QS{N=GqEe#wJMS2A6^O!9sY=*G*=eW~)&Z-YQ5%t*>&w<~g{=71-t5TR}o1#|CP$KxDjqm6{H9&b3fkq6vr(}U+3_UJO(bdXmy}~E@>n(Rf%0FxTul-d7lK3hNo-*pN@Z> zW=#i7T656Lm*JOhwsBjtpRY1nJP{JbjY$B!hKUV-Tg97N=M_k({x5j(4ENpk2`9Z65c_=DnbmYtiJSt05Z2OIROy<{>L!iNFHK ztQ8FJ_#!d*GGL>a3m{G|iH~E->}BXBO`g@LOOQl^y8#Hh`SR--azJ=Zy*A*gM#PL! zgm~YG9GCO=Wq{ARtD{lrouA#jJI=XqYLCylJ=|X70U(MQD_o~FKSO*^^m&K+v!yU+ zJnJ#u~_JPS^)LJ2SM-CLzQgy-=;BpxOEqmsuEp=+(V8}4dN zc7UV=p2yq+X|otk+(sqyYKG8Gf{*$R;IeKh;Y|@LZ_1%dN-4(QLkn7F>Fj&SPu0>5 z%e~pR_*F@G=S?cAfFJ*Q4O40Nw7JTCi0~7z1;#1qds~9;XO5#BXP0JhM*H0J*M{GY zhead14ZMv6hiwER>sh_{309hMU{W(Ae!rAB+sY>;OPp6I;K|f^@%aTvwq5OBDK$X= z$JFtu%tB2XzmT+D67FjhtQ8)u6&K5L+(Pf4SF$z)msv1z%?Mh7IieC+Ys*T-W~~P& zqy=awI1_JI;A?SG19~RLJEndU@*4z)hK8U{;_JuI&mmd2LzpBv!@26m$gzsP4MMQRszk_kd58rDC8)n%; zR2Q23v=IKKAT!5nfDC175FZvYMB*poDiy@{6G+rCUG1xa6G;YaXlhJPAQh3vOctv_ zHL{MgO!fJbr-b-p)kr98d_iM;zmkFlAS2gZK_qmn7~gxF?n|(DzdQ;Sk}+)Z&OBI( zSMaXszfb|cdVW$y^hb#LV@1jtkl3!|Nqo6A?{F3H|M;PPe7l!&oqWU?s|dtRdIp-K z=c2euPd{eO)!xmP0kZtb#0kde@}lSfDVe!l0>IEd(s%Dc>dw*XmtO+f`@J;+tp?rG z(!2(vky^^$lB7y2s!)yOr{{19ux4Q-STEjz6=%f`pN%XsM~RY?x_7m1s9w|afna(uCKTRnr6 z|2U}^9Z?|y9$=42);r0K`!+0H{B^|Q;#M2q)(w_Q>b-lZSE4)7k`HMG`w@cg+cAw# z@sIU|HFrD!vCkx_U531tz*$+`EtQisk9c^t;yhL>lwk9`;**zr$Gjha@iJpeV^)k+0}~7Xu;-h`aEw z6-_+d?gNj@z#qq3$9O~d&}IT_pO59)kTAnA$(|@{C_~GVXav17%>qx`u?PFZJS)3j zf>qI)wnvkUfoaMzE1^v}6zCPoqG!Et%KjY_-6O)Bq}XG9C69?^|HtEgk?99Ymy7R={Bu4IMKKS`J0q;jbc5H!_;r#` zegb<0FL~~uH9P7^fStQCDLkByIrj)OjgRR#ms#`QFbT8#1M(%mnaGy}zfF*Ja$^Z&ghx+sNm*OlzkvIFwhC3)q6I?39?1 zpm&w8J{*?8pX9m#V`jvHvC*hf+Wm+eKzLh~`U<9=_i$vZ9xeA?u9H^vxX?zBbt{va zmZo99)NAwY&>);-P$yC@X~w_7`D!FCAFi~Ha{HG;Vrjy=f~N;Gi-0JZ3zJy~Xk>S{ zRC=OM*h2g7^AZ6~&HLV;#7<6pk)0ff4lI}2Du41~`V`#VOyE5k1ik{*o|gDsy^A=F zHqG07t~Y*^Tpbn~Z>*Eo-P%m_b}&hr9I|_@(3_UsUH^~|-@texg{Q1h#=Y4`XAJfo z=Ef{zJbEAI#Qd`uh#N?jprNNjBX!S0Ekl-p+u~~=i@}ba*u{e_SNcP_l(#cx`33ZV z8Hba)tst_I3<}(S2Mrc61hFl6eBe6L3Ek2H`k!d}vDv!)9m0a{}aeSf-x@NPQMjf&qDeN{3 zr&I=gEA}#?IQU|>nGP3l1&u**>8Ui9cmfn8@Wz2R9 zaWzR9^z=GZ@J9a-3?|Ed$R=Br=K}-8SUdD=O`o0f~`kkuGWQY$-0zN3PutDWN`PF_^nB?Ee z6y0=w2H|2^6ImPW1o<(NzigWtVDQt5tytW(N`k@X5g(kq);%b9wGTPdf%#^H;=m)` z3>hJWX_7zrLKUTB11f5l6aw_}U^2NJ5|F2WdwHoW`*lRPz86j?gEj{RyvV)$SVh@= zBeK6f)psiB_FcLa{h;rR42Tt>9Y;5pu@6sX!(lOy(wta1RyO_Vmg5v;fAazrWR+38 z9|d^t4o#X_)yuRrovh5dM1*`?GocY`N%$xH(2w= zEn&k~$oDPvdrGvuMCX^@JQxj-4SbN@6AzI&>0(zA$*(~5ly402poLH7ZY925tu@z> zVyWbr4rWx7AbTt6qEe-Aax38i`X*bkj-KjXK~e%Riv)(;C8@d*c6)=%hXIz=hQv|7 zVYZ>03P5jZL*d_(*STXRoDiZ%UK^sqZAVLYTs9b2xbC*c#-x==n>xxVuDS~dJm$%<9F@Qc)^o6m9F|btmX}>v4hj*}DcB}&X zDvW2wJHy)983w;pwqh@q-?7?8t?^>93!DzH!w8T&0Xey2RW+H%u=rL~j6t{7@fAsV z#~=>XQ#|PMI2X8MSKhIfMgR@zyhqy!LtFtCp6pmfDv2U^q>k7i271&9O%aI-YhBCa zufm)BAr5xf`mt50d2zBkY|0j|pc%sa{vwqSV6Z=Qnge|)nl>LMXKSa|W&TnQ*0M~M zNc^=rqS*Nd9jqn1%3ob+pXD5B!C1~sp{xF=;I`e;S`|fRdW;rLzH%4M@u%q#+86W) zEv4B?6#>8Oi-2EYP2!7yU+dyaGTWpFXU)ShgnW8%Ha$3-9-P%4&hHVE`<)Ew!C7`a zqz7lygR|+u+4SISdT=&9IGY}vO%Ki{>*pcT5Ug<1gR?B#cav;;-Wgevyy?N&^x$k_ zRU52H56-G?nI4=a`%X^0nv`tmcW=^zvs==Gv($>xgR`ComDDUYQNbwvsAPI@Rt3K~ zWUh!t(u1?q*3yHs>A_h=Rq4Um^x$lIaF*Tb>A~3<{Z13xn9_r@>A_i|DX#S3>_n~rs* h2WOADMJqixn;x9~Gd(!_qU4w@Cwxss)tmq7e*xOR!^Qvr literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0c8_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0c8_states.bin.bz2 deleted file mode 100644 index 6548e5270c3e85ef190a45a504ea181390f5e11a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3523 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 bD@lyuL0m06^8X&Z%xjw&6{b(ky!ZbA%ZmH1 diff --git a/client/resources/hardnested_tables/bitflip_1_0ca_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0ca_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a9f7fd04544fbf4736fd9f5f122428deadfe581b GIT binary patch literal 47118 zcmeI53y>VenV_?(t7~eit20N^NHe36G(8MLuNg_>K^6~VHOmStgb-L}c{X}WFhlI=CM*Y+i?N}VL1 zPe>ybwfBTvJU+qwqB4nU4!FO4NxSlnR9ZRQ>~l|1LDdOk#TWlj zns(E4Fxun$!3#U2oA*FseQM8Njp!dlwcA3{+J&Khisl zD&1++#MCuvYTMj2Ra3*qis5GfwjI!mJ)tU?#4qx7vPJe(K=ucWns&2Ru8BRtURUr5 zMU#n|5ZtBoQ_#yjji)XPzve;yN2TXpo$$2N#pR8RzyU=?Q*{=ZYT;%bYol748S}N= zVial~zh#huSRjkTwlL;?)Mr%l`CRMdnT;kc^Luuhc0hz}I_8D0n|SFgx|f&K@t`10 z(|3#t7a6s1rcpE2@F-Z>H%%{Q(5t2SG(FF#ebO^6me#{G#!Q2ZK z8NopwL2ersnl|5KTp$Mtx3P_zETg94&dbo49bYNK&vW#CAY%+5+z`9aPe{K+$zvSO6?&W}x;v!%z9a zFN?xQA~XxFiVf$O#4T`5d7Wlqa}$mBMC%G>b3q;ybf}PF4s8iO28K+x9iH-+3nEm@ zpJkG`!^F{KQ}vcIv?e+Qe^XWg5uZ&UUxX_{m@kDa9p-XxiAeha@T~d-8q-@hBF-0@ z>J&PR(ui@@RFBYF{vBYd9c3A6D=Zd>kYOmdSP?5g?tZ#TZ`1K!(0Qg&J!`=3j;Oc8 zs2_ZG_Vy(nSgWo=4F7eU7{bIS2`5$Ww2BqR^U`*DTx^A)mZqySE_=hMpAPE%3MOvu zkJdSY86Mp#V7>(}fbkNIX9_t9I`vD4f=_E=@_e*Dpsp3ziv`%Mg7r{Mx|Z41PKFb| zXw-3O+DDs6W|2`9`b7oAP9Nr%E59BmIOp(&#mUH@LWaI~qU!@)kD$U5O9iWOCoG5k z=IO_j9-^s}w8B`yq_kLjmI21Vz8L;wBH`dV5 z^Y!#hZ_#~PO>IE)%2+Ktaj9U`T7P%7j$uVt?8cx7*o9UFzrv+ikYzw8@V-JU-9AgD zoj7U>k4Gvdg)l~~qhM-N+dNMNUpZc@69n+8njBSB6e;rtMl#7G~02ECzM@YU?s) zZP#>M#?v{?T5KPcgMPY%rorTldm!m)MxB?Y=bJiOrJ@SfGJ@2KDuKEBrRd&ht3m17koQ?=F_U^YwLRB3>jAy^&6r#7i9)b#MG#{LaYHE-vT9|?~ynYE1II@ zaN%oj0T<4)nEn-yFs$fpA)9lS{ks|z?+mZ^`Ei$Dvc@gil1W03Zg;@XBpN*{Z~(_| z6YUy6XQznCQt=H_M{QiGTU7+`Gq*;-tdG?78ti`!>wvDSJIEY}9>M@6yq-hW~xRJ(z1z!qmdUwjV zUYHvvzy&-3vth|GMCyiqy>LX&e!YM+G`!x|jT(>w5D`$e&U5C+QC&79Rw# z?m&x7!=;`zgqzcpMx8FkT~+CKK#9l#dcLAoFd4A8Vge;Th6|PabZ(T0t9%$ZfSHF~ ziLJSvK)=7!dvZXWRt63{hDRw#0eFa`?2HYk4U zn(v}x$~E7e*%?rc9VzfC#c|f?Vx{6K?~JAVRGCY`}Za$ z`)J7`q9Z(w5QeKpNWQ?p1u%6PM<2j{jI-J$TBPRo=}*HJ^Od+3;JpkhaWFti!s0 zHb9(JhzTC)kfk-_|}gUpPh-j%$9j_`G8iR0I0E!BvV`&53VE#685k>dH}S5w(oHx z|DI>#%7Ju7*atT)7W`Q3yF88&t`@q{bvX4Z{R^aLZEzuM(7z~z44Y>)g%|#VN&c~@ z(K9hF!x*@9eu13K^NEpekyrkM1#Iy2e9( z8fv(oS$Zf=zY7ESSK^Q0E%3b^9ek8bHPD};f8xSd`TU`kZ{R%z$}|gg`rs&Zgwqr< zow4R+zv*F2cYhyL!C8bWD6=utALer_b|)$uqB_7aq$X>|rZjBr5ow5xp@F3s^EHfR zN3aRvB4^GVV4x=}^Dsb2kNx~_UdC%MJo;uj4$S8SZ)y6Up*Q*!r?^4RbUl%q!0|sB z0se_mOLIWLDUn&}5|g~sUf;s!+xS4Q0|T$AX~$-^x?lLl*_Htx zN-)k1YM+IrXYpWM^lLopod)Hgp15NY(sCuFg*sqxJ41P(ay-!jA-9?#%m*smbeb?3 z^i}W3mm20oCQMducV+zlhJ=(VLJW1V@PwTswI2`Dc12)Di6mXkBuXAQhVMmQ7fU)w z7ve1?%;A*(sCCB1L`nWUqoa+IWRF4&j8idlwkEC=Z82&>Hkw@>qP6{^KXHyud^$TC z1wl4bu~>Gu}H8}^f^A8J8=ek!kZ={jJxVldqF<20dMI6n|29J_PidSoP& z&M_+YL6uqbMqB?0?~so-bP|G)M@1mC4hm47ScsM9^RW^WknLq~Kg7aaUeBv9OS|F8 zu*5fb?)&01o&%mUXIX?NJv8H1W_4nma44fh57ZxQ)LI9Um9cF&z=S_)-ria3^mCz!CnB&B%uX;9R^Fq=Wh}H`?&ojgTdmKi61ek zjgAF@sC6y+SZ<|9F&uoWB63WiLQP#kd;e9m@>6tGf=~YrX4(#cswHkmDIqEUcJMok z_jvuGaA>Je@6b|M6>&TorUdokB;tdu4~DLcDpx`(nspuo_5a;?Y7RKw-(o6}>)?Ak zcTwhUTBTJ~!Ni$a6FU94QGdqsk=O?4^cf-RMJ9gaL`Vz15}AzR8yA>{{%_v9#Qs_@ zo&S}Up@XaxYjpq(&ePfax}m}y3D;H9cie@p|AdE5Etq=8O#k%2t0=#Y0WB8%b#QD! z433B}{mZPzhKr?(0br0hUbv2FyQ|eSQAN|Hb+`*rPVQpZ0hwpAp{wB0Uu_-yChOog zEwVm^*v2NA_&M%owB}Ps^B4^ilouuX6jobz8#O&m?+1eIrd}cp(=1c~ik6K$h*-D4 zInH8TbFA~mP49UE$LOFUpHtw05goigK%pPU=wP_1YMB6D3%-Q**!iG5KP7kompN?? zt}&5#L(#3lQ+(_vkG|-C#tka`>bR5sw+Y8iY4F*v{YSj0+7%_!L`SLlm(bSBLWyZS zz#Mg)Mk5N`MHF}u0wL(dg0>w7iHjuIt zmhNf#Ye6*JjLb80QvOQ0K30W^J~>0j&2T#W(g^RS5??QOnD|c)qODqEJcN;h#7Dt$ z?I&>jO6z3cO6$#D!&#;MDuL5j!XOjZN_*H&XP!|@+C+1xx((wn zA;Q^Iv$0GF-nW>aH$hjuk|{r}*@$wt#KL8r1Ha7%%;9d;mr82)DF}2()KL#^1LPDZCI3C8C=l_bTRB;$&3R zpJsBu10rM!qRNOXMI6h_-V9Fz)Y<<4*kj%Pq-_GNy-%m#ze9!XPIwz)P?@E%8CJsf z?Dl_h4iV*k?^DWD=HTpOO=nJ!8GxD%!}Y#As$>ykMtagefvs7Dhx@s+dL+oa)u>vU z!bFIW=V`0xRab?lnLgViWYs)_{)_N=AiSZX#WDharWN1EW&u6QESJD> z0tsBMiOO?j;w2tVDDxC-*j5I|0EG$=!q6_{{(oo=BBX074C zzR=KDZ`&(Gd#zdjmAF1AiMeG7QqIM+_5L#;4125moG=peB|cIq_>l}Wt}fTH2r#NC zDqE+8ZazzhGs7d$WuD`19n@KH?LD{)K8R4!3j}_f&>YoH>>Nxdq(H^Bv;|WjwtqM9 zem-L)Zom)arl`uSb2d)u?bheWdOB5>SXE_Q4ESO?0u3|JzU|iy$AE>?rc4?!kD~f+ zkx5auJPNZBDct$*ivZ7OWaR-`U>JoyowPs(1b9N{UaT7^S&mju0X=?>vp`puhcN@h z8j2o_mxBv%_$#hF4^}?~K>kP5#kJRO+T84MBu!kXim*K;d)2V)rM+l9t|Q_XEld%FPk-vThGDe9v4*>MRFSY`9=6GoeK-2 zYQ7^5%pWqY9B<8n8fBzsfqBz8A5Nah`0WyG6}zq4m-6!%hAaVuJ;a{BZ8ZX6V`**@ z&#n|zKI(2?hH6dIlVN!V6b=f0xjE4)0fMDQ9RyBM(Zk;S7lXPVehoTA|BQ~DC(a#i z5-zWe(%mkeqvRX=6a!t*g!4R$T4hFWmxfGdUt&cJv#2xow;}4042$GU(Jx}?;~PbuU>M-T%>980|NQN1INBg$FtXY906{$FMP!E5#D_=gop0Ven%QY}(j;BI&8RQY##sMZ*C#XLpTKr1K%A{O z?v!7xxE_Hlt<%OfEA2gaI_YZwQY$RdiTJ0y3XNphF?npzYsE{RDcKGf&sPz)$i|!1 z=VUr2i;BS$uD)xosV@CN6zpNPVKf0`_ezZjlv{BEX8-kv2 z2s^Cjh+yAha}XBceyl;g?f}jgGgs!9Hk0GsD~vBQVo?~t*f88L@s%_-_0HN#AV@One04b(Gjqv{IM}Q1=1Jcmr@9tXyP-Bf1~2 z@GTps-1DO1E4Z(+eA;@a5Mp>OX^nMP$0Xhry?Reei5=nYhey7*4G_D2(l%jPpE*AsLg(G1Jr>*i3i?Hk0KfJiHx79V&0I5a(8uH*M4t zv%zD_ajN)PX&s)!*BM?5vupF>^p7xJwm@$u&Po<82q(jV(d)X7Vh+*U5&GD9n#mkp zk9EnPZ+OWB;>4tkO~CLg5?_%8VAiPA0F2))WP6BtMV5qdnT{hCDbe=TRiL%c)C+de zYRtm#g(R_(Sv8SG#EIf=@JzV`hF@=VOP9Ne9s_F#tT-sl$Fz0IVL)-pr)ZRcYH9r9 zLP~f_@_{xzJti09^Tbk!M@*!XW3ogHtq7sacoI%K&HCUMgZAW*k{&vQ1QFsumkMQQ zZ3F(2EHK>?RF@JSl||NAt*}1GgVRx@p*oZc5Eng?E&j;zO!Z2_Aw4F32tcyvaq!fm z!LyI*g{);HV0M3A5+R#lHWO2Mpb=vL;oG^$ixNM-iZJw`n@Qx=2Nsjz#edLs`f<%p#o9J3utV_`HS)}<^|8fL( zVfugwRyv&(w~SR^BG;HOGx0<_yss}9UQw%{V#ckg@%-9`4*ZBMq={S1s_)(?(C-5D zpzx6OjQPW0<=;jd3ASH%1vl&$?y~s_{)w>XVg`ni8W(Ure9oSu&DYTl&(B7>d+Ey3 z!#2#HuR<)ucX&qsM-^_i>f<5;l7*$DB40M@JOBBZ7_(Zp8s06V3nqM^(PgnFUjUB6 z1s}b@@=Q{j79q8LA7)fJ`DP#SWM)G*e&F%s zBpd7ALa)CiYdYGNnU!=WK=)`At1MjAz;Kf7m{9)nLb=9vmavhb^|Hx=7VZa_UM(tR zCVs*m0^!xZ$tL-mrIHw>{1dG*lu6YxsA;VUJa|bkoLU{()an5VC{#ZZsnucan_0*_ zi;@n9%*UoyNAWj<4Ec9LM+kwnGqF6iI!~?6Q>)Ll{`>2BYIU4B$$4sZ zo?1;#HP!+6r&i~w)p=@lo?2}KTX|}=3JI~OLY`Vp z6pCfLJheKKCBZ+Q)aw5igW~(Hg&B$U%W8zvGaMC{h<*GxvGMJ8@It25=OGpBYA8*kB#p($AvY&53%fsdxIh$Fv+%K!J$7kF54U5y$y0LOIajH z%@L=7byzk*#?E~vIh6(stQJYkocmde_hO*SKyf?ct!)U6dArLN^$dW7GuWYhO| z{AS58OQg_W)7os=r-y|*wtutGrwW7NhmCUKEsMri~$&R7vB5Q+Z4(f$0ySV){S(BwsUk0a|Y?XuExRZ2heLpY^+#FIR*+9ZZ zhal<7N{!43Bo|7ObB5QXz6JHR0Q)v}W9+mEMx+9<%-03<+5XG4GdKdhScle;Y{s+* zXIH4Zn0-Gi2G&#RMbc!2w`M@_#-_}SbLMfMYx&;Hd~c>Ljld4}<}UVT24w5S=!uOT z`3}u0YG>>Y&1;$^@mv+>eVFMqe|(!Xt5i9wsab5$B!NUMfXy=}ZQ?adAL^}+S{s{0 zV-ri?SCaWJ*r^t_7p#dQ&9i2e@7P^luZY3KQvKjvX~2bSLzb=3^S6u8*sj!>cmmBi znj7_MdU&vjogn>dBunN!>A~a7(zx{CLA3TZG`_Xg>2m*>bB+4PlkHyk;)xBzgbM!A zt*B;(|IGRL3PnAHJ)oYWwTMztr8*bYE#@)HQs0xsN}dC$)>^$RYM)}Pi8#nuD@wX# ziQXjiUe#sdE056$?n1E0RDZzyXT%^y&!$)(Co@QkF-Q&uscha!=R|DZ`x4vmNK`*! z>H9TB|0PRP#}tw3OEm!A)< zsyy0DBUjm$34x!beo-ak=UrVw2)mszlGwN;3FE8;n><}VNXMU$LP@cIu=SW^Ujse} zxoV9RcQNYt5bl961aurtbr&53Pp9dRO!B80SC^m{Zp`UioIkvYqT;7#5BrI3<|o?x z-}7l#{HRe!F@{%1(%H#nU(FNu;cN5>xoj4fEhO0RL^DSTh8~;D9)uocH21TvVwLJB zbuWy?6`G02uN)TntTsxv(?pW#E;I2tMYcMh=-X%esIw{)@v&9SNN#7t*!!x7f}dD{LEQv8ZUzp|~#G5cuHcYHwvs#h3RnER z+sI9Rkd!OSs}Gj7x{cg_xdd%v%5Cug9o{AcCy`ugHOF^1N00FF&?H>F_@QX1Ow;$! zBhJ39>TTlhm3o(Kr!WO&zbkio(s%+{251n58LsEeR+ncbFRYOY|AOo%8LsACoy6#Y z&ap)kC?=}o36dB8Z`ATO)yE_^o`SI`#xbS5#pm5Dvzn6Lz$gNy86wzH`Y5mF4OgJV zV3oX@cV5j~)XN`adud+HJFn)A)yu1Suff*j)x7aZRbI_IujZZP)x5=}&8vB{1thQL zomcag3SBb&$o^d+L5Ja^YJU463B$D0tbHE$B>q>8OQQ$4TdomcbDt9g^+l%>_~$g6o{ znDc7hWcKIPyj5P!8)3++d6V05UtZ1ogF7oy_GRSNyyb)sHt)$9k$E-myqdSlt9g$c zY8lJnC>(03?BSM2nyeZ)M+TED#=fiQd$zm+wkoe!B4?LzBynENTjFcG@#AMP?YG-m zRj`%wGDo+vstPa2ahcDL>|NXrdrjAm2vbqr;dBmYVpEY_El6uRW-q{uaff7HLergG zWCvm6fS&VBoh<_uRiMa6rE!Wh#;$(pA1JUsm(es2kcqv8je<)0 z(7xNAaPPpSUQwRhoThjaP8ZBZU6t?1hErr=&u5yYbEAX}==Pi}in3%yOZI%Une2l8 zxoF{CdkSyIB7Ra3<`M580Z6ae)9Gd%~p zDr4)KZ-lN`!*JCI$rs2b;BB($*wzgCF&pH&LXH5hxqbT69Q{@9)0{eQ%P{1r)p=@l zo?4x!R?Cdr76sWEN)d(1@x#Zu&6tT2rpO5eLU@MNf34n;FEz{wr_PTrU8Q4DIO5A3 zEQMDNuqPQGPhpTQIRj8hp^d9e+#(OK8p;uiisO$*ONJyK-jdJZf({>tk2v*mQhgiB z|9+f$%t3az6UM2SIa?D~inBkO+OpB?>Y$ud-7oqR=jeoTADsP8#RaTRLIsXEs~y7g z4U?1^Ci#1%-&+jx)apF7I!~?6Q>*jTYBb`7I-Y7&o?4x!R_CeJ9CV5o!qJvE64g@K z-}kqtR_E2cKa5i@^J?CluZ`1wlK8L}m^?PFCWV~VTI(p7+SIoEq)WAca)xBLjXS_z zbuzI#BE4%ke*F=Mjpx<8^J?CCHSggB@rM!E-=lJ>oN=EY2c)DVsw#Z=#{uQlyq9?| zF>y>csemfSHAkzdCa_1GkKdu0SMz>fGl{&KcV5jKgRorIK*t?2F%r0cJg?@>8b)5t bTNq-Tr~gr|=DqGHnX{&ff9L$>isSw-$iq75 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0ce_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0ce_states.bin.bz2 deleted file mode 100644 index 26fc3dcd4eb5a2050245bb37d385960bb2675764..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1663 zcmZ9M{ZAYB0f!+?O-xP<*BI_9ry0U_V*8Zd9ltP^WJ?GxFE{hzm)=#7*?0H#+WzEZ zEN|omFgRdNEyge0ZJ;JGpad+{b|=lvgl79}#|BqvT2<;MGzHR4bV4*uTdiS*+$`$I7DJRs3B{0*ho4wGvVHomY#xtd>>O-|iBvB116{c()%`Jc?B30DM>co< zGkcJ`|1p2Q=gm@=HQM2@Y`s7I+>UmBZ22CIW#-0#kA*0dw&sS12U{vSt01KZ76^5f zCJEP8h!;P6_tAp+A3wj-C;v=(cHA?5;kEBPsaSrn)TR2T(9HflvGGmQvtRsas^M>) zhVO7dF#N5qi4*C;QEA?BS>cW>*an(AZ=Kq{b0BEe);;M-HTlfbJ8tFnn6`P}q22Ky zrGNdK{i)6*j9MU(#&XjP*;(^+X?bMUPynY5OApc?0VB8Wl<4X^1_>Ht&~bcluX>gNTz69qKq*YwumzJ6Act z{aMFCtk%OXkKRjPwv!(ne`jFZf*>3Uw!yr5GJL;mE}4R;QmT zqO)dwwwQBDwM1`{vv?~vLY_}pUDL$CVjInDjBoH_JDlinJ4s6W*@cyg<=7722(Kt4 z#vJgB@rhVGjGNJmch&AEX9l9j?n~Rhd3^L<`ugxTeEs&( zPrpBZDVk7I+@oi%fzw}npcq_R2sCV7Gj4vMy%gC!^?W=N4V&5z73NgI!t=F%Gucv< z#KSZu(l}ET83uq+08A8Gqy*rEoC1M|_>JDBrTMk*iA_d0pn4#|VjWdl!>wVFi@ z85*9H5!Rf~uIJ+1!h}wXlVgrFzci`u@fE4K{bh$E4MJfwk);xhBM*@-QbZGLIs$kx zD%|R_W2HP?^pcAPm{^j~uqxcEGwxZWGDXviAF&@$V6jBq45>k4u{G4>?+JTI8Fc)ysMT57Na4}w;+wUKSVH8+{GFs1aQT` zeq#*?O2`zG$Gs{Z0KjpKq!npV^caWuJL)#jP6P}Yv^8v9Rk@pzJkEPi0qDp4f;$VD zYx)@4D!od_X)o+T{F6xNw43qku&eQ^lgU}!r6Xf!=V7lt z8BM&!ypVJxQlI0^HTdYG$sx1)NTnUx%PN~TTD%Zdr|zr7u6=u6V;Pf|%lcE*{{tf` B!W{qr diff --git a/client/resources/hardnested_tables/bitflip_1_0ce_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0ce_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..45d798574bd6734165ab8bc87e5b3f03af4e98fe GIT binary patch literal 21442 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

;GQH1uwn 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 DWJ`(3 diff --git a/client/resources/hardnested_tables/bitflip_1_178_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_178_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..05128e5d52f1e6d83ab6810594ec956025fd23fc GIT binary patch literal 23792 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 m$h(vR)(%+P?`v4$(zWwx1uKqXBm!m-d literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_180_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_180_states.bin.bz2 deleted file mode 100644 index 87d8693df1453a2c5d4ad7917b0252b1228fc130..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmV;Q0bu?@T4*^jL0KkKSrY>VjQ{`uTtU$Q5C8xGkN_1x06+)`zybU@P@w<-2mk;k zr9=UsDJdzFBhkJj5>Nb)Njk|DRCP%wVM!)ZNveQVsU*@sNzy?i=P4xAl4?mcNhYL| zAQ>g1StYbfB(W@#(pX7s2^F$SB(g-Ox^<-DnKVkB0KpQ#d8(4)N-ki1q_mG*lO{}> znocUN$udsKJgO_oOo?_0IFJuX1e4l9B*_Gm`5=;FK_tLQ&calH;wqIAxss_Rpou|= zP?da1l9Dha#F52-;GMdSn562J%$Y$aOhyZ{900e*lssKPn01fVxP#_ur zAQ}J@QmAOjpeZR+Pf&iN+7PO_B%KK)$t2Q%jFMQ8DS3z_w32d3G?HYJX(YfcNs?(M zq|#)WOrWKtu_RoLEVS8Bygcr81o<;wte>sdNqKl46xfFcj!efMlvwBZ^fd$V5XFN>%MlqN4(srbSp&3SyrH+>uTc JBn46Y{s4xXro{jN diff --git a/client/resources/hardnested_tables/bitflip_1_180_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_180_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..2d542516abf581ab8171fcecf5bd40d17d1bd607 GIT binary patch literal 15231 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 Pe=!ioTN;0Rz%2P+De^o? diff --git a/client/resources/hardnested_tables/bitflip_1_188_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_188_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..01dacce880823f2ab841c5c8cc195577f0c52153 GIT binary patch literal 31274 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_191_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_191_states.bin.bz2 deleted file mode 100644 index 64619890057767ddd63990d313622510438ecc5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmV-51IqkDT4*^jL0KkKStu1O0RR>VfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_191_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_191_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_198_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_198_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..1b64ec6b54b42048dfe9aac557a931d14b067eb9 GIT binary patch literal 25258 zcmeI44Q!oN8ONXd*-Ll(oYaS3w#E>t()v&1E|! zU63QCB&H&D*;a|V#aMC9tuGH+IZFSn$xBLq)z5uK(#~z2-qj=Jek+Z|<$7Ta7aB=D zX>97A__BV^|}b+l6CG~4$L+-?M`8YtIC6|Qk%DW`F%zrS7Wx-WLjVhBJ+$C z2a1e3Bw15Qbr{KPDE?f^u2sHZq;NCG8+9x`E7kn9#^#n8Y5b}la9fqf{ruiwq~v}W zi{t8zG%(D?C#D4=@+c@K|Dzc90={R?| z(uWet)z{|fY9(3XEmM|ONjJMTRn;Q~qZKQtq9Tpuu99TnwGW~UDVaZ-%G8cBm$oxh z7HWo}mZ7aY?EelAA22zB&%^@$nEawOlykqwbILeU$+ zX3zraS<8^`K&b~R*GE0I#?}_$;0zAWf<-YUnSyv7#`5RoFN~3Y7gU~NsQt*i5zE0z z=gP>YjU3UW9K5X>($^7g#3v*AaeRY38wn?7&i6bfIe$!|em1UbmMIyz@#eR6)a6_MJxD~6&ycU$Wm>*$a&7#_p zaB9@4;egv-wk{$R_DC~w&BoFLjEu+U?&4?F=gYA_IcHEPZdn{g%;!9pSB!YoZN@fc z8SHmPY6+FJ!$mUgn`UU+#ay+{$o39&Fc+n)H+IHMC@dgA=6Hp<)67uIN(c|YMdPSH z)H$~ao7q3T{jRb@`>;o#;>sVWz5XI;5uBvMcqX_4a>KLw8FTByn;|$u?&xl1MPk=9J zeoAfT*sG>uie9fa|Bn%`$r$N%r^15+374z*=+L{((nK9QW72!DAIi>`VPhfhKQdzd z=@b6jQ5NY2k8EmxwUeaFblPk6oOVeuT)jx<<7qdDzf8bcUs7lE!N0BOBq^X1Dh#=}My z5jin7T`}hT@hnX<_V`{SC%G;8H*nCI4Q0m{=e8&I7<)dh*6sGdIhSM{b|*6IRK!SS zai}Bt-pqBYjP%6UmC&hs+B1)y5}?o&(FlR%*axYw7J+c-gj_=L*5=|6(R1re90S57 z2aev4PE^R%(9b|+wL1%*ZujI0sB9Tt!?~(5RGtPd<5(LN=5VwFksPBRXr|HArlH7% zU{{>XyWDlP-D-p8a=+|!j}UK*q45Y~-#Mv&juM>wQzh0B?$OGLB*HxO6`|i_{PB`Z z*Wmj7q{GhvQ_nPTjAQi^48Mf+Sor{630^X9~*|afub}sIa;F%nm;MtYPeQ-R>?x_J? z^6!B(1>mEBv~?IiH=}E9uC~>e1mJaHAc40BRh9eD>tyhD$|$^P!fPAG;))l9ibC7T zPNIroaOxJIO>>W>9J87A;OgwrEZ~bKDPqBs9bliLdPQV;2&aX zHN)2eyow#Sz%3tZ0KftOs6{4Vv7e!r7dIWoTQ06bG1I^I)skcjqWSW~@}Q*J@!F)y zoD%J!ej%+?WGWWP@UzdAaOP_-44iwhnk%QEy_byCAasG;PDa1PkF3_;Z0whm?&HRu zrcpS^U?8T}Srz%pq1Rcx(I^n(5ue05>uMvHoD*B&#z|vK^)mVE7-L&|V^Y?70sh9Vez;4YgiMr%b74Jmuj$C2iF)AN{ql-^Uel1p1@u zZ_bSaZ=)2RJpieu6Kv?{zk|0=ZLMw#WE8ShhdU3TrkbobcJm0!q_vE@oV>O$+P1g2 zT1)6%(QDx0E1!+pD8)b>FOBLBj%^D*Oe(i)uyQgTut@Wc4`ifb__t7ffrMeBm(c=X zq7$A@=a%CAP{_sky$Yf3+umJX$6Sy+4E5CV=L>u(y?{CP6F+^_gbe)oSut+FrP7Tj zk{1}ey#qb(Qg^`u@`I%S&j2n3CRgs5kATGbkVP>E?g;%GMhLNJ-gQkJ2sDh=IDw(pNx}q2_G5WcF2RUJ*=7a`c zIe*MK;d@EBb!hp(FAy!G2GzQ^SjZGhwq?*S49zq4edPhli=kIZo`6{1PezmF#)B;k zedKvy#RN0dIwo1&k?kHk$pUU!TChjN^@yL7v)XAJC=oKiaqkUK>O)kWu-v8jUMG2Z z+)OJlt!5@(UpVgWWNl&IOz?aT1UUV4>W@QPUy#l4bJI#AXV2An?UdqcXO;UqnTq&T zx+V7+yWdff_^Rm6xSH@GF#3;G$e&X7q;`<|>oA zxTzJ{LyPt7Ek@qfWsC^pKe{ie#N^?vo>E+e9c(?qUfKJ>=L3|O$DgCMJQML}C<(P7 zWg^}^D(dK`BhU{+`Bj!{+=--E>S-0YCq5^uODivq6j^$Z>bVi}%g0ue*Hd>fgZxFc z-ZJvgEUmfL82dGN*uBb^mRpV8O+2N3%dqzl5?|N3grs!wIy5VA+d8yJy?n^cigH(F zMHc*B;qi9`YJAMti{!Z^t+!l$@j0ig;xB*mOVP{0x84>P(ieq7d|DhSd z4Lf0HMA#Y8#a&Gw>kib=jA*OkQ)otnoe_HD%wutjT({GQoe^PY#6|u#Qf@d+>mw4v z&WNyQI_#PL@b*lHW<+R4BzLQZoe^PYMA#XjyO%#rk8ujkh|r8+r%`xJQ+P~McuZ4x zOp~81hsQLrrWhX66duzQ9@FG^*zTe}cnV}-^UVfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_199_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_199_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_19d_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_19d_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_19f_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_19f_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1a0_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1a0_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..18008b8bb157da4af25f77192cbcee0bd41f5db6 GIT binary patch literal 18953 zcmeHP-D@0G6hAvort7-9M`*yfq;^Rn+1AFk4;3FOju13S8@2crid{6-CQaJ3CB{?> zgGfc+^vTD7BEbhAq^1TH<`3{8^htb*P$ZPvE)qh~((CWsJGQdt0&9It6JQUzyoo!@PM4rnRB3KOQe)u#k2-bQKCW^6 z;c0)Ei{pOVW7VeLbHaet zS#x-oqfEE6FOZ%FF)MiTe4VAuWnz!%7yJI@MwYYan!14ZVGNJM??$HJcRM*8+nFZii$=xyVM69A$EDuJ zg1^L6#M8In8QVZ0fB>Kn6$BJY>p{WHJ`5zPdR!GCzN(2&IySTP$%ecjI(QspCmt{) z9}JIx0$La^{;9M6XzgWq9Td<#Q3>}zPf zea%Cht=JcadcnOF2dOtW><6ThKn0r)YFT}&_bF~!yxn%ZG-6z~H5X9e9Ma14PI>`8ztxE;-i+m@0(5Ge^z0_`na zU36Nzz%&4-zaKT9x+hm1khd5>!7{=|Om9U1#nE^&7S$ojTPN)RqQTPUhYAgrG+5GL zsm0F)4VD1i`nA{m*PaGT#@y>;S%al@*(ME^G_xdmFwHF8k(1QS(%ti`npu)BOHGYG zAgOT;mNZz}#MGPyOByU`uq4yJ8Z2#KGFpQr4VEAQorc?ZC5=wQiObYBorcqzC9PS~ znk9r=TC-#;FoB53R^GpAPivO6=GZ4kx0BnR%gs;x153m=MgRZ+ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1a8_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1a8_states.bin.bz2 deleted file mode 100644 index 034c96abd830555113bf0df7fc5f848cf7fbae90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3543 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 HJNN$pIaCu7 diff --git a/client/resources/hardnested_tables/bitflip_1_1a8_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1a8_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..483e921ffcf196e93f917ffc780610520cb23ea1 GIT binary patch literal 25815 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1b3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1b3_states.bin.bz2 deleted file mode 100644 index 64619890057767ddd63990d313622510438ecc5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmV-51IqkDT4*^jL0KkKStu1O0RR>VfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_1b3_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1b3_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1b5_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1b5_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1b7_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1b7_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 AKL7v# diff --git a/client/resources/hardnested_tables/bitflip_1_1b8_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1b8_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..77cf4f142cc85110fde93fec0c80f6cdcaeecde1 GIT binary patch literal 21459 zcmeHPeT-Dq6+dt0&FnDDzO%wE49o7$WXs1!wn%AF(qf&UQvQ&Y*2NM6aia*^R_aFq zE!pbr7g4gJqJgcNbeqPuNlU{Y2E~s$8k05=6%#{h{1_A43^5f+YYeH#>F?Y(A3M9V zESs>2P44?+-@NjQ$u#G7qveyqN*+dyx;-!KPeK|c-Anzy} z@AqM|0{JVLyoEuIxIYqM^3mlqlytC($dwr4&iD-CEO~LG?SIDU{Fcv|;y+;%>t$;Gt`^8%rSmLPT3!gJ zBTXQzu~YxFqxK-1)->+;-6rygRunnKCc2&}CUQ3#{fDUwg?gPtzqoxntR}-uIa@CB zNv4pcHB58Cn6xx40^AgFuO_Vzu?NiEw05#V-;bF&tp z?#h5-+(U76*lVZ0{A;KRf*JFr%|Q<_HMN3`7&5Li&HFl&mjd!|`&QT)`uj0h+6F?D zLwDM$C~N?iZeSDlnPyzAoH|{algKWnR$F0SfET|-3k(p^xyQ9u3av#>RGA{X@n!*2 z76UY6wze-@Kdp_rwK}HTilMrm!ZUg+b4_2#5XxT;8EcjpwV_T zN&%8FOc;azO+Xu9C~OA}5itlN0wDRTfLRfPs_YDXa|A~R!H!>|w{?)vvfvN}Cm>RE z1N~8a${l5-7+;ZMv0xg3g_2$xrtioZHce?1eFO76UO~gpfi6YE@k}x2t+6vhhZkY6 zp3&k13LuxIiZ)dFDbs>&$zv*ug;3PSOp&~m5a(Y{RiGF#AG*S-E8xEB z47guW77QE#FH4$YpeX=A{4nHzn(>|rbIPh>HA2VvK}irj5JVZ;I)!4TiPkD#51=*_ z0jQy7AP`E4D+<m3fKiQ@Rjw~`9D-U8HI~bnZs|qS=hViUKJYyHky@Zz>kd@y zU{2Ds%`G$$FUcgB77OMDv5j**VNFBp3Z{_F{~iH3ZL$Y6gZ@6~JirEWs|sA(Bh>k! z_8`BH%|i;h%e3aQ*V@hW z=%=^`Ovir2l&?|?*^i{K%4I7=*;%0oXiQX1MstnH0B|mcG=YE`dqEAcOfgH*$rz0# zRin}U4rqf1j)17Qw^}7M{^Q!?t5B*l6}xDn1J*cK>|)9NLZB<4P$iQBW+Q^w3o;)c zVO2D!IE}8`Ld)_Zg!E6Q|H6W6kkTQEv#{5FaTtbDtN|C9Q^ROtEu$t z2ry125BY57wFKrWaH|_+!!lO=2Fz^(ABy@+Sy;guAmlc;O#%bPt72f)SjS-~&9qwJ zCyNGSebUFUm0K%H0kfY{HPhJ6UhoQO z*`%fR`UP|jdJ2a@-^Z)gHB1}z#a(bD$`UXNY*WWp(LxQ1tP2Nxcip50?{ui)^*jeG z*oJqMI+(=Xsu$=@u-OC~`#e0vfrFtTDfK7A zVrJ8bU}fc(N~}b+nM^|kru|UB2?CW7ZVIC8!kpS_tTJQ)>j>?v2zYdiiKue>{Lpxu zGs4VWay86B3+G<(VNqaT%2DQ@2TN;~j>4%3MAgpbp6$?|DGWF@z|75tF|P?aF9jO5 zFuevi11m1>RKUT|tA}=Rr!vD{uo*7yEHfj#e?j8Tx0(J0U-02X#xb6cBbW)Yh*VN< zAUv5m6Up>2LN@}J&dW58UVs}K$Q1Hk#J4G(FM@g8!Den7%;P2S6L9hu-b~(Di7ZA! z3@&cQ0{F~-Xy(SuY_01j>nsqz0{3qhh>JjU_k8pKY#@trUMs}eOncxW?t@>wcA5It z%aX^CORx*3`wz3ZriaZA#29DcX+2b&c-^#G=ky|*4xP(b|DPDo|D)CIlUj9+)kS@S)l5-L#xIQM*mS z?cH>HHx(Cd@1}mydKPBF?cH>HH?5@{`^W9wbbB|;hcevWO}BSbzt6b6n{MwWwt`OP zu+aF+_bqPkCca>}GehpoP`^fB|5s;*Tz1oCH){{~xxJfXmrx?B+}=&QiPW7;cPG=4 zpm!(Jt&wmi)5V=kKgULWWM|#U^il5AolJKp)7{B*b|=%_$#fhlSL297zV2kYJDG0J xSi1j+8)J09U$x9aG={{fYbZZ7}; literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1b9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1b9_states.bin.bz2 deleted file mode 100644 index 64619890057767ddd63990d313622510438ecc5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmV-51IqkDT4*^jL0KkKStu1O0RR>VfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_1b9_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1b9_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1bd_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1bd_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1c1_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1c1_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1c3_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1c3_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1c9_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1c9_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1cd_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1cd_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1cf_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1cf_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 KE&cJ~e(Hb3NM_mq diff --git a/client/resources/hardnested_tables/bitflip_1_1d8_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1d8_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b77d70585853d835f9556c7048fd9a0b267b7f90 GIT binary patch literal 24608 zcmeI4e~ev4701tgzxH+a?VT;%ZeN#n-%EecDqFe~N=PX9BtWX!t`$pdwAu}}p-L+# zrX{%TPEZ6Ytq6^&gkoc?t&tKEkV*r(CW;!?@`te+17Ss=My)on3R+TeMcg~%AGc%SHS6}~VW4FlloePeO>vfTwyWjQaWm0dG%-5gU zOotR^h^a_prY!MNF;<*&8%n)aX6V0lg`$?$>G$iyeDc!z|nnt20 zjg9ss_4Z3<5ohLTvoZB0Gn{8~Cn~*fp9Rb?G+bqM6x7 z3U?GFiu)*z78ptQ6dsh4lx2yL{8vn$G;`HHzPp!<7ge3Fr( z`(`pA*JPxX?pvpG{T&?JI8HG#&AIJ*nR7>tO|LMLb#60NzGLiEB$c_8@Hs;396p>} z>UJ3^^YcX`XSoj;sW^9^k@FE@;Wc_iqsb$nl;<#vPwAzNAn-}rehjI&viOV+SiAJi zI5$z7ryQN|i-@CRyQ`Z8RQQ(SstiKw0d z`}x%Qi$~=~x;#!xj3eC>uc$X2Q2`0A;Pgy%nDcs$FQu^-hV2_2HSFvQI_xZC-H5`j zqB8_O1BK+>%L*HxJ86x>?~I*wmT%Z**CP;rKx2)a_&gW>llDOnn{tuX`$SbucP4Ox zY7QaGsG=G48JqRh>-5^6RUub%C}IXPxprQF{b zq;o$t@}8JpY4cViPtg3_Ug{Q%`~oMDqA1$Jxx=PnazOSg%<`2%2y7ZuI)0E0zv>$3 zWTp2qg?o*3)2stC?;bu<9r~`MJCu_J+*}FCF5>ttBi3I&=D+)Dc*%hqV#%6=Y9NEt z7%>iPVA29*suKYiRn9p)VWv!HGZAnzy2_!euB07@Rj+h8W9u2|+Jhje5bmi-jEnGk z(^|;ez^$aGD z`{giOcaEN#>A9PWa4SqVEdBa1Wd+}_PmlYs*1Of@uhB~zj64il47C_dj%6)U;HTEQ zCBV7ex0naPWgy7qw69@95lrUO(0C>S6Yab)OwxG~9;(iV=kwg=`lYIp>81U$%RSC4 z1CQ+E^u2RjyBz9w{BISH)H$Xa(tg5F=%AcHrH*>6p)lbq?x}J6$Krby8$|x9k=`~V zKSYeZCt#wowHSHG{np4M8qK7&9Y3dWxo=2r@U8jvV_uats1sFg7*u82*gPFqz1EcB zUW-|E0ia<&leuCQ;Ei@yrQWinhx@C`>pM2%5fwiY?j-bOpE9(+ODkl!A1T#GdPMv$8bU22v-rJ$}7j};gNYHu+asjUWwW{U*&-f zF%d;solG@FNmJ@$94@0qjvTrj`?mG<127~awP2XRHSCdc+NV86;o%q7EZ&*s5GS#

vG2tmGP8|s zz+1eb2_oE_P1HR}+q2P-?Tr(&oJ&_FuSIzn@%^4k?I0u|Y~_gQ>m&kIuo|2*p9x;Q zc(ui~pUukPs?_((xD3w!%g9am#$1n)&oJj(=W(Q{qXg#v_`o-I z)IOe--By}W_pCteI-xaALQL(J^|B2Z;n<@($te=w!LE z6PUO4>%HpXhQji7k1!|L1d2y+pMh26FULKtWgE}br6?jO0Zdm(XotEw*VHY3kL zhyGBt{&7itW&ZmZ#+h;7QwgzuQvIF!OLXzTAhCy_D6#K-TZz4r`O1_zXbW;58LHF$Q0C~Wgz*?^p}%a5lFuJQx{0ShvD`95%nhF=Y{fH z--OGrCs&m4-^A-@2I}yc>6{esj?kEQlmEZFI^L7={XVJF1qW5iTgayiMcdZfL85~c z<|+Gp!e`%0#Jy*HOd{e|Inmh3oYUg-uTJRRD04B!o&oQVp7)G(5*%|GR4IZ^MbJK< zr?5(%l(zYWAbhW7s13$_?h2m~AUg)7YoAT!$2bxZ`g*Ut8 zCApwcC1m=2t~q4-{XLD4>6c>2^lSJ@J|WW|GW}z*wU&_ShX9c8Nrz1TJGJE@WcvL* zS+c3g{rr&WuSF@2A=4i+{UOu;1VL%{JGPZ4WctH)9+GomJI`CPohM}a$KJYGyUQCg z{YrO2rr+3>@`{)bF|*wa72{cyeMcyhOa!=C=Ir@#6X0-Nc=o_;n0ggyOX zPygVS)v%{O?CC$nhZ{qtKVKHHIP6A2R(R)6WyzmRtb$I>Os~!rOaJ>+3ngp8l|>KkVs$t6tF= eGW{XbA2R){3S4-5kAl#%RR25SbKRjYJn~=AVr#_! literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1e0_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1e0_states.bin.bz2 deleted file mode 100644 index d701fc28569656e2e6c0dc994a11fe21af1282cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1535 zcmZ9LeM}n#7{-s5cE{0e?dX-WK?V9DcdhOqETX{;+R~MyAT4b<7KV3SmvpEJ8jZ$@ z7P#YU-K0>kESo8m5;!U;%Sfgn3wNUvnrL9MWQjAOi%SSGk@yieTr$zWjBoP1dEYHfuc&_pjcmB z1+16({xjyx5`l66a1yoZdRbri+;4lB!oB@jG!irfJW48>G|FQjPjVf-#+M|^$prR5 zNKvUCxJRWryu46Bo($a38J;9Kp_H{3v7REDF18N3skrme zuIp1$_r9%Xe$*B*4RjT~JJrrgA#O46`jr8`di8R6G+xK7IDV|-4q*`kT2*1U&wBmi zt@_c>yXaJc5z2}lDTWP_j!W>dqsm2Mv0A9GhJ{K+DC6_{+MiMTQ+T9a&F!AlmHSuI zliOhAgB_$40Dj496uy)CUE#;sen0)$~Qd^optcvC?b2n**5=VGa`A8+t$dpN8zi=aB zY|2HdNwTZ67ZLWxuqAlg&2J^=HlE7_kIUXUE`EM{Z}j=96#Ga1eYY^0!O&;1VLgbR z-tUtx_v7@yUXAUG9ajr6%r|8tQ>yr+;<|4-c(Ja&JR+3kWnXYRj@im;T5^~RC1czq z<%!nUq27MGmW(TgE=Q;1VsNv`)qU4xR}vH@@I6^<|LsyrYlN9l`;dQXqAZMGblBm* zSe~0WgQRHE1Cs zbcmk@I)TYR6mSNHpmN_qwa@Q}75cx|m@YmewvMZn{#AAP>UuqKIVufg)neLIW$bly z@dP*=|4_4Tx5CQ?2yY}+po5_j?h3OiU$nJ<`a85Y>E#Fc3%LhY|4l%vf@OQM8&u%d zN^}0d39w|2e-moU{n$SbKW)1yAF{vrYV;?>CRr(!(O;q@*A}gqXkGQ=c#RQ1OvevaJC- zCBm**B{L#+l0K9Bgy7oJg?$i`jpsrEY781~WtfLf%kqxY>6H?38mVa$^<^h}VN%zf zM1MCH2?$EFEXzD5!$UM-TiFE_t>_ zdq;H6X_>Ef&3*t4u$J|qaSS%pI%LW>78Sa1F-H?NFLo#gJ&O%R!f{4Q6c@nopu<`M kJ;9bIIxv9@-3p|7ak>GSmlYIvpQi4I8kAb#7x=;Q-?`;f+W-In diff --git a/client/resources/hardnested_tables/bitflip_1_1e0_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1e0_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c6e2f9438534ae43958a6a4e58cd9a8dfddedb1c GIT binary patch literal 18954 zcmeHP&2Lmy6hHHrd5pu%921&YCq*W0O$VWTEHExec#B5cLRI3fF*?yIv{0sn)LN9} z#Tbn4bmg*%#t;`SOf5EQ^8Nr;tc)AL5YrgM#xzQla`~Nm-%N)ToK9y!#Pb&KzP$T& zK7aST`|*;UL+v9I3x5p|%@z;-OqW+GD~6L4u(`bA(LQ5LhPv6bQLac`Tq)5WV*_YCle1)Dsx|^xP++b>#TUH92 zKbT7P0k;_x*}>F?$Gx^QV{H6|b&4 ziVcdlI}*W10Z))ihxx}fggd=7Pf%h6aTSnFjv0rsHFTgbWMbO~BTmF6}iH45H;t5c`#;|53X zABWf~P-!Rncv_fy!`8ZmMn^f^G!nCQrcR|`QPg>|rp|;Ayu?9roXgb1#nd<&1xYZ& zDGvLOf}}4&>^w(<-Kd0|vLp5;a<0XO_qXl$7u)u!8l?-3MR(B&Y}s-dra-a(7E>sk z-~0N2V}fb8hr{9hJez!y!@L+#(n;Y3koU5v6l$D?BwoXlP(0~s{?2r)+Vne47_d5P z4sUaq>2mf3($gSj5hc&nS=wwS@|b?K^{+LuoCVj^9O}au9*5rzPr&b<;$ZYZJ}Q9o zBM=p`yx2~xksEUsM86Uf{grFO90X~2m-rs4*lyK&Rx}9ti}Q;{#ra`E<~m2Ep2mW| z#8gD-+whESAP_(RPzVbG3Z=E6U}hcx5>-8}3J_n^#3vn_8Tx2lUJxEW4zgnp7!(iK z&-6S@w|Ng3Y25>0FmN&(DDa@zU)!vbJoru%O50gMnVJRZmM!H3{?2o~SM5DxnqTx(zF zAn;i53Qc0lnIi$c$HwL7kDS91vaRDycg;dbgnDyYl9jU(NsBau2 z;ue4(Bkg2*wwEcg#;~Cq21fxe(0@kI9RkM?NdDd!xct>mNZy$D~nk4 zY`Dg#v)H<4$?lcYU}+sY_cU12UGnnI%09S37s9r{UyKPxX9>o`#e2LUQS8ICnzo|9G5N zgCz}?G+1&tsKJs3OByWcuLFPs`s)Dw_lX-6R__<_=L!9Fz<=>H+^H9>775p-Evc0| DKT<(7 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1e1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1e1_states.bin.bz2 deleted file mode 100644 index 64619890057767ddd63990d313622510438ecc5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmV-51IqkDT4*^jL0KkKStu1O0RR>VfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_1e1_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1e1_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1e5_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1e5_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 zcmeHNZ-`V?6hE^wvu(Nij+(BME<1~m3F*3uyR3vYLB@i+>k=VSX+jo4xGJHTS@Vc2 z`;ZI$F%b-j+#*yqvr<3Ad=N8A*^dPUeX#$v?pmu-=IM9tdo%Oi{+StbGJ<MV`$LbdlJ^aZJLK30%$+Sx%axs}cMeWHnMf9fvHS-t^o0I9j z=>6P9@npI!HkT>3m)!|yl`Wj2UIyg{Ox622qZAZ9!VT2O6g>d8k%LTCBD?rf%`B$L zn@s7XcIjbC{KYgy`N({3avY|}FHDt{+S<(hRp608+uL9zw`t`7lOvm%W}|jXwySn; zX1Zw|Q~kY=t%GTy)`|SYl)_&>y9>Z-hV12uWo4$@xg#FXh?J0{!XTe$nIcj@=5;$1Jus)i}>q-(g#Lz%r}cX z$J8aVK}QZG=s)GN$G|Em(q}rwTBa3V(fnRwas$P1b|up!k=;yd!}TalHCn>3x~3SS zdlZFML~?U^0!B0dV^ULV3DQCUM_QoGb0V_~O%$D8U}{8vUF0#gIXRu`g?8<_?} z1lx)X9wN>a_Nw}?aGOlU6!xLIwU9z{-HK=WFo`@BwDe8BR4{ilG_3?MMgR>~$W@*9 z7wlsicV;aVYn3&~U@wJ!Ewv6gTA zn%!y}oqmWLJ8P`?dk--#V#|Mv>~b@Yoq)dWoQgXN1dF+f>d|x$x5XBtpToN&H9*Wc zScB*iQ~>Sbosi;S4u+<)YXA{wQYnYD3A6@}-tl2=5-Mt>#^8(F6ojKQobhexd|@mC zb2l*G@v{lDrTTNb1C%f2`)*^}rs(R)2SZJb&neJy3)6hlO;J3YM()-*;bxTJFdh*3 zi0L@I$uw<-<*dRV?D=C<86RQvrEQvE4iRaDW%V*W;#H0L3%h7V10~Zoz?1I|*RAD#O`TT8`B zH5i_NcF${?k_Y{ROlxujHXG~*o5Qe5pz28s@|EAZklkr2LD&M0fnv`I{3Kpus#ARh zR_6*+O%2+-s!uWc1+(=A0F;g{|MN`WDPoUu2)R*nqUAGjra3y*fYoefdI*Yw{|2+w zAcfEIX6o-eISVmX+ils$AIDeDg9i)FLX-_yQ`rHxQ41C=v-#k5XQf) zf#b+19TlkXoC6Gh-&7p6E^`}UGW$fZCBjxxfJeCLO(0~8T7B>Jw|ZEJIq?AF8NizH zB*UJ0F)ZU&16sruvSW&HGro^k8O z>4!7x`EDO_#=#uyn~0uqMjY$LVOVlCK(GVE8;jTiloiyY$RC(f0F8(8A%;r__~>y5 zj&Yq2*Z{y?SgBf6t>N8jeTXo;lcFDCII<*}&Q!uatASFf2;6D(EfZ$AxiAAr0S{1l zC%f^Lz>TNPF?y#C0RT$?{yiv}kCPeTrBczZ5?;7M4~ccF_*AsnSOmOoH6(C8=gegA zihd0zEsrT=Lq?tBiYzD9;aqTuNvAKZ$jb^D%M5^fX92_=%W)2XWYv(UQEtWLKpx*; zvfnog8j3;^;p)RQw^l6jY8Oce7Wa|N{d5=9omD%cy%mal<9S{ zwia|nnLbn}b70IFuSUpw^SFL9m0K5jpOVIK2?EpUs+<2FaL{Jgx$1%?kOc2 z8Lm%%fg91pD`OpdiiF^&p{B%{avuH>qTDA~jHTSvJ_UJPO}FESg*XLq;XjU3p4IsN ze-NkOeZf6;5K7Izf_M>1CL5vP`p~?A^w~F%Y{-d=Mf(OqVfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_1e7_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1e7_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1e8_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1e8_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..42fb9d45d1b25c09b945821e8a57e22ee10f7a2c GIT binary patch literal 25815 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1e9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1e9_states.bin.bz2 deleted file mode 100644 index 64619890057767ddd63990d313622510438ecc5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmV-51IqkDT4*^jL0KkKStu1O0RR>VfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_1e9_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1e9_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1eb_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1eb_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1ed_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1ed_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 zcmeHNZ-`V?6hE^wvu(Nij+(BME<1~m3F*3uyR3vYLB@i+>k=VSX+jo4xGJHTS@Vc2 z`;ZI$F%b-j+#*yqvr<3Ad=N8A*^dPUeX#$v?pmu-=IM9tdo%Oi{+StbGJ<MV`$LbdlJ^aZJLK30%$+Sx%axs}cMeWHnMf9fvHS-t^o0I9j z=>6P9@npI!HkT>3m)!|yl`Wj2UIyg{Ox622qZAZ9!VT2O6g>d8k%LTCBD?rf%`B$L zn@s7XcIjbC{KYgy`N({3avY|}FHDt{+S<(hRp608+uL9zw`t`7lOvm%W}|jXwySn; zX1Zw|Q~kY=t%GTy)`|SYl)_&>y9>Z-hV12uWo4$@xg#FXh?J0{!XTe$nIcj@=5;$1Jus)i}>q-(g#Lz%r}cX z$J8aVK}QZG=s)GN$G|Em(q}rwTBa3V(fnRwas$P1b|up!k=;yd!}TalHCn>3x~3SS zdlZFML~?U^0!B0dV^ULV3DQCUM_QoGb0V_~O%$D8U}{8vUF0#gIXRu`g?8<_?} z1lx)X9wN>a_Nw}?aGOlU6!xLIwU9z{-HK=WFo`@BwDe8BR4{ilG_3?MMgR>~$W@*9 z7wlsicV;aVYn3&~U@wJ!Ewv6gTA zn%!y}oqmWLJ8P`?dk--#V#|Mv>~b@Yoq)dWoQgXN1dF+f>d|x$x5XBtpToN&H9*Wc zScB*iQ~>Sbosi;S4u+<)YXA{wQYnYD3A6@}-tl2=5-Mt>#^8(F6ojKQobhexd|@mC zb2l*G@v{lDrTTNb1C%f2`)*^}rs(R)2SZJb&neJy3)6hlO;J3YM()-*;bxTJFdh*3 zi0L@I$uw<-<*dRV?D=C<86RQvrEQvE4iRaDW%V*W;#H0L3%h7V10~Zoz?1I|*RAD#O`TT8`B zH5i_NcF${?k_Y{ROlxujHXG~*o5Qe5pz28s@|EAZklkr2LD&M0fnv`I{3Kpus#ARh zR_6*+O%2+-s!uWc1+(=A0F;g{|MN`WDPoUu2)R*nqUAGjra3y*fYoefdI*Yw{|2+w zAcfEIX6o-eISVmX+ils$AIDeDg9i)FLX-_yQ`rHxQ41C=v-#k5XQf) zf#b+19TlkXoC6Gh-&7p6E^`}UGW$fZCBjxxfJeCLO(0~8T7B>Jw|ZEJIq?AF8NizH zB*UJ0F)ZU&16sruvSW&HGro^k8O z>4!7x`EDO_#=#uyn~0uqMjY$LVOVlCK(GVE8;jTiloiyY$RC(f0F8(8A%;r__~>y5 zj&Yq2*Z{y?SgBf6t>N8jeTXo;lcFDCII<*}&Q!uatASFf2;6D(EfZ$AxiAAr0S{1l zC%f^Lz>TNPF?y#C0RT$?{yiv}kCPeTrBczZ5?;7M4~ccF_*AsnSOmOoH6(C8=gegA zihd0zEsrT=Lq?tBiYzD9;aqTuNvAKZ$jb^D%M5^fX92_=%W)2XWYv(UQEtWLKpx*; zvfnog8j3;^;p)RQw^l6jY8Oce7Wa|N{d5=9omD%cy%mal<9S{ zwia|nnLbn}b70IFuSUpw^SFL9m0K5jpOVIK2?EpUs+<2FaL{Jgx$1%?kOc2 z8Lm%%fg91pD`OpdiiF^&p{B%{avuH>qTDA~jHTSvJ_UJPO}FESg*XLq;XjU3p4IsN ze-NkOeZf6;5K7Izf_M>1CL5vP`p~?A^w~F%Y{-d=Mf(OqFg>Qye6rzay0ywyHjnE&y1)8q ztg39qBZGxEH}1Z1jrvx^mZ!=nE_FDU?Nnios;WvE`2o)J63Wi^UU#<#FDhpQFq2A7e@K)%=O&Bit@==SJ^j`w zE@Zq9HHIn;>BlHiM6!gF%>s=lM-iYWQSgG7muosT@*(tLqk`dBdgua;ArT6u#{aaU? zzBzO*hPcM@Tix-nce&%ZnW{cC;g!}x+T5qI*znm+D@EyXuQ*sCH#;QuXpo+q*&Yv-|oRzx>$*(cA0T ziEZKeM{S<>&HWdC`)l)n(BHXoy1j`RG+3W!nPWC~Oyp25CkL164Jyp~`pd_2r=qD> z{dsi+Frf)>;5C@F#$bPe_~MH2@WneraYwntytMKsN0tqX-hY)#{@TqB!rVZxFkr^ zg2)lR1mo8@G>&XktFIuCIl!%i#W_U3;0ozwwScg1nV{9sbe4YB+VHY1@dgvsh737e{wKi^s=5RjK z3gFM&hBO8Xcz#{T0(d!8Nw_aJ44WPJ9ZU6^FoQUfz8#MPx@TBNK^X=3oP}s52omuZ zF^CLn<_lzkBQe4mQV&}+1O>CyT9jYsyQ)Xov<0ImeTnUf3+;UhVG1^|*Nh@cP35k+ z?u0BheG1;hIx!$7Qpvm$!EB>xu07GF8)Chv&*HGyFq)5Qu^KYxsg(E12q#+YjFZ!B k5&T4_#yFtJ#()eMjBHbx<{*dTyWZVTI&(vj2T?TrA6B~l761SM diff --git a/client/resources/hardnested_tables/bitflip_1_1f8_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_1f8_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..87fbc9d30c636c2c71a18e91a94affe398201b1e GIT binary patch literal 21459 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 PB=Gkpjy`|=@F4sbDYe8t literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_220_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_220_states.bin.bz2 deleted file mode 100644 index fe85775bfe7cdafa269bb9b1c2202af269e763c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1680 zcmWO5e^8o-83*w9ec=Ve8^|jPD%aUJ78UUa%3)KRHojOO_%ld&K{=}?!<3NQW_r0* zW4gTA}og^VM8$|r|q6R(OnWR~`{MaGgcHl}b^VXfZWHZ*Jjcv2EG1<81`Q!QL zd-ptdpQplTE-R5Y<{WH1O#7h;Xu0$8z$+6;(&;#z4$uJ`fC5R0VTJKeW)uJbu2`3K zTGh+I%^Gve6K1p60$B#=m5-=SW3m+O0Iyv4Qhjp&M!!1MH{fek)$UqQmRG_574GLU z9NKv(Wa9L217-3uD7%qH!Ol|RsA8%+i1?7p@}DH}eU2&n!LOg*O-|D)%)a_FyC;-2 ztl#h|`MiS>F7}Y9(@0pXXHKc`64oeh(ilQgriHbcA#bo8}3Q33qDP=yD(kJnc{gUN3gp*s`(fOMkjF|?GFPfB5DfmV16UWA+Q06)>7 zC!GP3=AG8o;(=Uyj~*?u=b#1hVu7_qNq;bjZ-+j^E>Z!$M-Ms+Xy60`zlu_iD+apo zSuS71Cl@Qu4J!1gKTp(O1rH%{qKihmM*YY4Kn# z4U%m{gjx-7utT~7PiR=Cg^KnR;U<`(?yy$jPLJMsUQB(#Gcgj!%!~br6b)!)R@mB- z)8f!9xJCILR4W_!gHnEjSKYpcsG$J?rp3h;ad0!6(35eZV^SM{Uv7%M)#E{-;>8dW z;iXP%E6O$9Lvf9Dk>xOahqc%$E{W{H%K9(0>J6Lr5q1tO6zQVK_FdTIu02u<{3paY z^U*Wr4}%bZCIcu6pb!dR0FXioo+m^C9|NOMZw5`}7NnZP0$DgZqQYZisvd!q(JM`u z96VZkV97msqjEiUa{t8lGgBb$FyOMZo z)EsQ$K9$$7qcS)`nbpH&3=AWc3IkS(PlFb@0ec^B))aXX7(FsJX!S^0PtigR5k`oE zxDh6e6NEWC|KD;MesdXm2n7%uuhX73grJgA-B$OsT%VlCF~}f;{ET2tJ{U-l`i5!%*f1sTvwU9z)KQ&*YS>}lYH=IDLV618g; zifLJE415lD)#vDtp`Io@h+sz8DYH7I3_O~Vcvx=ThElIXygOXbtrXD5`%#zT(wtsL zuI;dTjPgbr)<^>R(}s6*IORbQlc1MosNxKc}Xct+CW!$B71VldVm?N)S#y4b8Xl{?R>8 zUtmz9tqAZ4h^COOGG>Hs_NGNyVdeq{{FZFzI5T+i38IiNLZNi3fccdR1$0(NXTpsnsm+>nEI}GLbbrs?7fum3)(2ciCq2>N>jB8@jv`&T0js z<2B(o$3*$U$gz?pA=3jGuLR2f>_h?54v-{3q9mBmcL6Y5LI+YsF{kY4fLC?aI#SaM z4UQhTTU)MsbL0!KQZY703U+O@to@H@FUdIa_Q;0|Lwj!*{7h9EzwZwo7F0!M5gN8+ z@k^GKUsKx0@wE=Yd3{~(?aW+v@z$Qsw_;_7+HcJmr%Re{bObjy?j1XpS?^lBaL-*R ze(|^Z=Y5Rf{A+s~u76|<&QF()=e2c_!|v?9p(`Kcelp_d`nhA@=aOkv>6X7>M%ej* ze)9eF5f?cu{X8|W&{x!a6sQ>Q)+x~E9I?dj8w6uN4$Czf zaBAX=yTZs+nnx<(sf1m5Dz?Ve)3QA z9gfIx6YKM=QE+!)8i=$)j+nVLqr!NCPC(xqj!Tb!gsQ!2LaokO*UED}n2-;LXgCc2 z3Be!7%PaySAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wVBF N1v(9kpXaZ)+&Az7G@$?h literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_24a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_24a_states.bin.bz2 deleted file mode 100644 index 15195d21385b0eede73fd2ebfdf61354647a4812..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12468 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 GUjI)zux=Cp diff --git a/client/resources/hardnested_tables/bitflip_1_24a_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_24a_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a5259b6246dee7b88830b44cd7b0da33f3ee17f4 GIT binary patch literal 41275 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 CoB>Gy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_24e_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_24e_states.bin.bz2 deleted file mode 100644 index 18a6d49871207a91671b9bbecd09e0a98f45fb6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 zcmZ`*TWl2989tY}cy~s#fwgx>XuWG%umP{uClwDHpb&6$0gAMf11sZ zGaAjD(VTzI|9#*8{j>j9r(Suv>-ENCum1*V2o+yG`}M~9jSp^A7Onrh(PeKBA>92E za*+@hf^8}Ef5$7=8c|dosDMJ}_kIC{6RxJ1Effl5FnD|E&g+xfGsrL6j|C(cl znRxE+gqC}G05NAu-@C>|-g0vl(VvIQ$ zvXNX5InP~#67WOo!3#0oRc=DCf63$>4gStbLWkpswahrdUl30lSUx5}G6#9rdUo#H z$dV(axK}*+r6U&O1-D)%NMKv&1$qvPX6`QL2QgP8ANK~Ox9t{bF6LvpfLj#te2n}s z>%~#l!d@JoDW6<2=qg!^=SFBLzKFSl1$=^~N+cQV;pIJT=-;J;R5{KEmxVa5t)=B(YdQ*QlQ?LIyWsP-#$d1%Xv+8Et-w z7A-NYb)HH=g3M4fh8NIeZh$vqk+;Y-4N9Tc*3rA#)ojh0{QjJ{2Yggd7QN8wIhca%K-1>@!Vxf_#hR9 zI>`r7kkB@!SVFrq!4H(ux>#@M2+lOL!wQ9+^LRc4<~OvM6s;6<*QOnOE>Am3 z0U_qG?As``w8I8wTKs8o$#!GYv7u>dw#1{ zHS|`^cWYH{23Zxb508-N=sD*3RA7FQM0^OrBx{K8^(zE1cj&?p3+TKBee3;RDMUB3{ckbk5ARp&7z|p^ND-^pI=1a8p*IVw?)x&nJk;g?<{sSJkb}lYK<2|)f(`X@zhHgR0V2I zxmz9?+A_tJ@KajaCxvp63=D_L899V2sZ(ue9KD61PtHdgc>jWdA^FD>|7sXfWuAe% zO5g}C3gE}^VuT&fm8??JOgy)blJ^arDQfVN+Au0P;tpAp>-daP!kLCqbE-`-{R6u4 zC7p|-j}h;Zl_azgK8~MGRLP5C|LBf2EK?O*-^j5{aF*xIxzMT-+ybteGxY>mOTn#M z)@7eqofr>>b>J-xthr+57*&8jn=S9EnqL|ELkdkI8xGv~*Lb7YQ60mNtV+0Q;(3SM zp`z8ipA1^f4OF%6TY)74rK}NJjCic6khXlqvaHlSnXmn5(l_)c2KL-7Qo!GKbYB40V`fKYXed<4D*;Ks1hx4&ERe3ZaX32)R{ z+9E1m&wW?9-HhY|W%ZIgx@4fL$rS<0vPTr$`~bx8K?Fxe2>g}z1rS#?9>q$bJg>YW zugh1<2@Q5YFIM-G+2LE5zXond{DBlK;=3_jHeTl}LH7VpthIZ1$N;g2#v|;eyWDZqCB~w($Oow8)1Y1VMssD%5oy zTn_Obq5Mvn`q3bKF@PZ{2ae~KHa)E#gQpE^SxeQX&l(MF05rEw#QC^XE$uzQ2l{zE1bbMVCzY8wR1DJMp|Nwt_A&jS*Uz%ytKOz;^0t0V z+)zvif45+J3I<`jmMPi3MEIc+C3{v3y${}1kk+2YaMY_U*r-qgA7%)2!2wbmFxNFq zEWz9)fNz(3Ydw|r5WZOo3C^hkRP|L$U0jMdch%b(_;ui^j$CHxFhn-uzx#Ri@YLqt G%zpu4Rqjmy diff --git a/client/resources/hardnested_tables/bitflip_1_24e_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_24e_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08c31153365ebdaf62319aaec612c7c2448f20a8 GIT binary patch literal 26933 zcmeH~-)|gO701t=Upu=qbI%@s`XOqQtX_Pwc&;}?J6IYbVs7bX&JOnkN zE7AuGNExIGDuK}Qg7U@|gj6+=@C%|yAnhN3kYCWI5|aG@5-*fZLo`*>_VOJ&DV?Dp zK!A8SE7>z==l(e7d(P+FS!a4>{0r@$Pk)iS#6l5Q#fsa>x;k}VMGmZfi6 zxSQafRYi!zFIqLdnSC|Hzjr>KxgIpt)BV)+w+uqA()3hXr(-Fk8E+W)HP_$jQMsCl z)GT)>Bnz9l+$0-U2cgbma6-qqs{$r(394MtJ-0%Rj%|E#GV`&Pl5>x)E3AJPC*DVx zeDftHcQu>qu5r(^;9bOt1tq=Ha4Uf9@yOPPX>7~M+}fvGAvWA!GfgVNmzaB0vWC?} z_P9es)+oWJviCA^i^`B#`L(n=s<_8<+*aefSlLkP~@P`|=GhjBlTnM<6w4R}Aot5ljYT?fx?_!Bzku#|fM z8L<%3uwJwDWoYev0s$@Jda#-*Xc=VjgpXD@sVI0FjFg+?Z;-zu^3iCM!tGFRBlkU; ztU+53A&tVbWoUw^6ots&Fh8d-^$5dA9VQJSyHyVAf21I7 zHH;~2Qn*SHsw7qoDt?`? zWvR5eC+r2jH4zdt364Nctz%SEMXbLNBVH4M)o;{GI)&th(*7KXddV86e>);iu-9S_jTOYYlbGTa&qDvh8pu4Q{9+v zLE$SrV65=4?l$;iq;;pkt;KyDW8w3>{hX(`%9zFVVCLSek1lMK}`j1{+@ zo=0h;s&_TIfneV_m~Q#Bua8bm{+QdOfc&8}p@aSY;56phRze8W_vkX&1J|1+>v%R4 z#j|$-Ee1YMpcj4W5GQ-rxmSX^bYBh2VHYQ&U!yL`?OIVQD?-oDh<7$Dl@*ht?%hha zUWdc>ooeJbh=OZ&*v1x4ghU;^-2x&PEHop>%~&~Ivd}1Y8nc(s4kd25)1J5WXpmUp zhKg3Pfp;>zX1NI5&MNN>-OdGx8H zT1jpv@!!6ni`^-NJ8Qhnw8sp%zF6j#hi1Jn!<~x($2#J{$bC9~2tpn@W(=KsVi%ou zc|TVxX8^$+CmlFh-(3$*?&cKcO>TY#kS>qwCS-gO8951>Y-1L8Eo*+pWaMe1oZlUAOpv4OLhHy zfHS?_;djv@mYK{4VBNd)U%{H`O?Yt;J#%rmg8EJV%(T8&)0^P4f``!meS9+A@-_M+ zy>a{th;D3)sAM8oc1(+Tn%F5eV3XbhCnpAhPo|ilaji z5k%g5O_WpQZ{OAg5jjQVMN3|^WukO?y;j{L{5AOX7OMFS? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_25a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_25a_states.bin.bz2 deleted file mode 100644 index fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4981 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 diff --git a/client/resources/hardnested_tables/bitflip_1_25a_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_25a_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b315cfd6097ff70103efe6f78b2789a1d8e17d90 GIT binary patch literal 29127 zcmeHQPi!1l8UNnw%(2UO)iP$Vig0;=IRyBj-kFsVZd zJ$x&9_r0Ar-}~P0`+nb>_syHNJ@-QG$}8``_bSov&CfriD2>w;e;&r8*nZyhRfz=L58Jn5?>fO))9Q{V};; zBhMl>$_e5&ksVSH?`ZGB9aR0U;y2e_K=|y5wysZG3=n!s%n;qGg#A3&5*tZgT`DTaBnM ztCdD%RqzF@k*hN43QlvMg=%qG1yPxfYhd4`AOK3#O4B5lnLI2cRE`y`Mp5MS4X;## z>;!(Wt6)LbxYejhR);*}0_l7er~BI$isO)029zUA?ga=W+n{tET|Whga=NLwOtWm< zWiQDWw-p;_4C7B%m>k`=pOd%A@eNRM92myg=vyywwHx|==s4SyLys8%?$axAN|^#h z^!Q|uD*7|OQFZj?5}Q&{zk&~1(+d-Yb{Rr^G`glcijxVzpen2=eG@KV6?K@o*%|bh z{*619hoheXVCh?W$LEf+TD`Olc^$a1Rd=`08_i&x5O4nio>-ugjlMFk#z@|Too6#q z8yWiE6*NB1R`j-cXS({NH#YCuE1 zrcY%KTfqpH^H*zd)A`w6pQ?481ce&;eX1_QZoVSFNo3JvWa=lPs6tcG%_)cK#Tvv> z(S4pQA5DNf2GAdb^7!^l1wspKW=|KlgHjj0%@!KHbp`L^8^r!)ODDOY*A8@{Oun(S zX~3<{!dWsZ!?jMWF@?`zkm0mf1CdL-OV4of!~~jE(a)E>3yWysjMU)d&;(?I0)2|= zb>a@f0fjRwQT%QTBL(BajXnTs9iZOgaL&SK28LH+T4ZNq1k>0!&iD&c6X7>a;r{JgI^1M4hT)8D=BbeX103|THExa<2C=2`O*BfU znCi!v)}Jq$QGApdkr`ctI_nzs-E~N=zXY96=;jyzZ*X|Nz}*JexCz12KVfrjgiS?j zb53WvT0R>01B3ewc!L5KmGVHVze3a;@O;WS--7cp3*5)OKcSFmmd5nV!G&chEjJ!=}+E z)~ae|_Jj6kGsZ8$bS_SV-@4muG>BV!k&`7G{lG=c*L|COcv$ze_Gz7y>NIyL8&PI+ z1RRBN*4p|5c*@BtWn++8PTlQ0q$|Md=j4ao&IDt(Ek#6_VWJlzk=TG zBJrr77x%^OiTFtGRQ!2@E4HUK6#70D^IM}B!7y+=vokW#cIbt7PpoAo7%8u6GO&Sr zj}2yl4KPFO%3hO9S5tVQ_X1NM?sXL`@FoHOuQT{>_{k!hAB-ca!YiG06|DFB@FNKS z@bdr>p~hMT`j_+@U`XyIrinFemim4R{Ot<}50eV0j{DoAFaTU>Y+wL0Ue<_DTT8HJ zZCbw!8_dCe;aG{_%wZ96*uHypff<#PW0{|y!PNz~pMY_P*0_6VvDK<#kQOjpeNj_~ zX{O5Ex1k=Sm>D?dJ737YHt9*&Zy1v9yG~%*8bI>Le`AKUkxd~-HZcHgLg?-P8x6k& z+nQH1bMG;b?toEy)>m{((?6L0{xDUa7^a0ec}nngkuA5_!!rVGLJp# zWk?ek%eCTTU7yK3Ci9rgW1nmeL^viK6OIYTvPAI_bBl7VDA$UTS47_RVR?MXD@yKu z4o)Ds`~52ol#rNe-}eP7lDn7tV;}c6wcH;&$esu5!m<7iH@OF$CFXGd{-|3)gkukK z>fkrRG2z&Mv)xKKc92mI)`erjG2s}t!}a%H4)-rg?p|{D`=JscvWc49gO+>H58oFo zxqHdoOYUBB_pD%s~D`#kn3CwWE5D-OIt@`{pIl;3{akBlfuUQzOjl2^Qs z62pq*6(z4IdBw-_yTP&^ll9nsh?Vu2tj7l4AnP$%kI8y$KQf{u>oHl6$$IQQN(?Kq p9+UN$tjAzx3{<4)_aQudL%pNmAXuJlKBCWeP|3g z;vk$`NED|Ar!LjFtQ#A{LEQb~LS~&u;|vnFbcSu+vgn;_93s=sKO1qNtDp9MdXx8; zC(oPbS^rvxZ*5@vs@Cl%Hcv#r#@zm;r%!J$mM_tL-6x$#)4;Y`0~&x65G-F0_Jbi) zyaE27TgO*8Vk<{-qP5?TIBTyQreJUF)YQ%k%ama5=s`sv4ITg%-)Q58Rkn_cGa*bn1daHzPmgmqIJ#v?YY(+&+`tQGWSeWO zdW#egLJHbtW8)_DgOfV;=soOfAO+T$>y(Bhu8Mc@Gy|EG*_zQG4#fTDKQJZ7Jz&nt zKVfxfLGP#Ssggl=#I0dmWxo0soTm|S5;5#RtTiFOCBa?xu~mF8F>@b*wAe>To0>ID zngjTG)hJ`tO<=EjPQ5ig+&aT8M7`)dE{dK8i}7M->rcE+!Uep^-+{jiWCy${0E~Uy z7*-_evv|3y_N#*W`5e415WnhIKTNuZC7Pgq?Odo{YlyVRE2iytxXF@V-K32wN`6`Z zZ-g7n2CXmdrym4TZX!YE@803#uS+ymAb@@|BLB_51G@O@LQ0B1M49Nna5tYSj(gDq zNQyX+7QPfd@nnIN41B^b(r~GPEAH|$p1@QUHL5@avSQk&?t$}YR)~1mS$#_GD9%*H zyM<8mnKsjkX1Ou1pjAqgcmf1tOMRWV&(C7+udLa!l1eL3oCL2qAbzB0cbrSNLGnsA zz(x*@BSYcPgoT}=`-zgTJ4B-r#l&O<`e8FsT-vEpNb<-_w>fa^lDHAe5m9lbUGU{J zQu69mvU<+?tO!td-=M8VDf*aH+Smv%9LUSlPlFD=6)|Sm7%rnMY}c~hD#bI~cuKbM yq?CJhtAP65h{epMM&USMEUYYNF$V`pBbvxclPu2&Ubk@ez4D8LgVzqeN&f>&!H^vQ diff --git a/client/resources/hardnested_tables/bitflip_1_25e_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_25e_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c7380444ac75b1e664e239b7bc16c474037613bd GIT binary patch literal 18288 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 GUjI)zux=Cp diff --git a/client/resources/hardnested_tables/bitflip_1_262_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_262_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a5259b6246dee7b88830b44cd7b0da33f3ee17f4 GIT binary patch literal 41275 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 CoB>Gy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_266_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_266_states.bin.bz2 deleted file mode 100644 index 18a6d49871207a91671b9bbecd09e0a98f45fb6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 zcmZ`*TWl2989tY}cy~s#fwgx>XuWG%umP{uClwDHpb&6$0gAMf11sZ zGaAjD(VTzI|9#*8{j>j9r(Suv>-ENCum1*V2o+yG`}M~9jSp^A7Onrh(PeKBA>92E za*+@hf^8}Ef5$7=8c|dosDMJ}_kIC{6RxJ1Effl5FnD|E&g+xfGsrL6j|C(cl znRxE+gqC}G05NAu-@C>|-g0vl(VvIQ$ zvXNX5InP~#67WOo!3#0oRc=DCf63$>4gStbLWkpswahrdUl30lSUx5}G6#9rdUo#H z$dV(axK}*+r6U&O1-D)%NMKv&1$qvPX6`QL2QgP8ANK~Ox9t{bF6LvpfLj#te2n}s z>%~#l!d@JoDW6<2=qg!^=SFBLzKFSl1$=^~N+cQV;pIJT=-;J;R5{KEmxVa5t)=B(YdQ*QlQ?LIyWsP-#$d1%Xv+8Et-w z7A-NYb)HH=g3M4fh8NIeZh$vqk+;Y-4N9Tc*3rA#)ojh0{QjJ{2Yggd7QN8wIhca%K-1>@!Vxf_#hR9 zI>`r7kkB@!SVFrq!4H(ux>#@M2+lOL!wQ9+^LRc4<~OvM6s;6<*QOnOE>Am3 z0U_qG?As``w8I8wTKs8o$#!GYv7u>dw#1{ zHS|`^cWYH{23Zxb508-N=sD*3RA7FQM0^OrBx{K8^(zE1cj&?p3+TKBee3;RDMUB3{ckbk5ARp&7z|p^ND-^pI=1a8p*IVw?)x&nJk;g?<{sSJkb}lYK<2|)f(`X@zhHgR0V2I zxmz9?+A_tJ@KajaCxvp63=D_L899V2sZ(ue9KD61PtHdgc>jWdA^FD>|7sXfWuAe% zO5g}C3gE}^VuT&fm8??JOgy)blJ^arDQfVN+Au0P;tpAp>-daP!kLCqbE-`-{R6u4 zC7p|-j}h;Zl_azgK8~MGRLP5C|LBf2EK?O*-^j5{aF*xIxzMT-+ybteGxY>mOTn#M z)@7eqofr>>b>J-xthr+57*&8jn=S9EnqL|ELkdkI8xGv~*Lb7YQ60mNtV+0Q;(3SM zp`z8ipA1^f4OF%6TY)74rK}NJjCic6khXlqvaHlSnXmn5(l_)c2KL-7Qo!GKbYB40V`fKYXed<4D*;Ks1hx4&ERe3ZaX32)R{ z+9E1m&wW?9-HhY|W%ZIgx@4fL$rS<0vPTr$`~bx8K?Fxe2>g}z1rS#?9>q$bJg>YW zugh1<2@Q5YFIM-G+2LE5zXond{DBlK;=3_jHeTl}LH7VpthIZ1$N;g2#v|;eyWDZqCB~w($Oow8)1Y1VMssD%5oy zTn_Obq5Mvn`q3bKF@PZ{2ae~KHa)E#gQpE^SxeQX&l(MF05rEw#QC^XE$uzQ2l{zE1bbMVCzY8wR1DJMp|Nwt_A&jS*Uz%ytKOz;^0t0V z+)zvif45+J3I<`jmMPi3MEIc+C3{v3y${}1kk+2YaMY_U*r-qgA7%)2!2wbmFxNFq zEWz9)fNz(3Ydw|r5WZOo3C^hkRP|L$U0jMdch%b(_;ui^j$CHxFhn-uzx#Ri@YLqt G%zpu4Rqjmy diff --git a/client/resources/hardnested_tables/bitflip_1_266_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_266_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08c31153365ebdaf62319aaec612c7c2448f20a8 GIT binary patch literal 26933 zcmeH~-)|gO701t=Upu=qbI%@s`XOqQtX_Pwc&;}?J6IYbVs7bX&JOnkN zE7AuGNExIGDuK}Qg7U@|gj6+=@C%|yAnhN3kYCWI5|aG@5-*fZLo`*>_VOJ&DV?Dp zK!A8SE7>z==l(e7d(P+FS!a4>{0r@$Pk)iS#6l5Q#fsa>x;k}VMGmZfi6 zxSQafRYi!zFIqLdnSC|Hzjr>KxgIpt)BV)+w+uqA()3hXr(-Fk8E+W)HP_$jQMsCl z)GT)>Bnz9l+$0-U2cgbma6-qqs{$r(394MtJ-0%Rj%|E#GV`&Pl5>x)E3AJPC*DVx zeDftHcQu>qu5r(^;9bOt1tq=Ha4Uf9@yOPPX>7~M+}fvGAvWA!GfgVNmzaB0vWC?} z_P9es)+oWJviCA^i^`B#`L(n=s<_8<+*aefSlLkP~@P`|=GhjBlTnM<6w4R}Aot5ljYT?fx?_!Bzku#|fM z8L<%3uwJwDWoYev0s$@Jda#-*Xc=VjgpXD@sVI0FjFg+?Z;-zu^3iCM!tGFRBlkU; ztU+53A&tVbWoUw^6ots&Fh8d-^$5dA9VQJSyHyVAf21I7 zHH;~2Qn*SHsw7qoDt?`? zWvR5eC+r2jH4zdt364Nctz%SEMXbLNBVH4M)o;{GI)&th(*7KXddV86e>);iu-9S_jTOYYlbGTa&qDvh8pu4Q{9+v zLE$SrV65=4?l$;iq;;pkt;KyDW8w3>{hX(`%9zFVVCLSek1lMK}`j1{+@ zo=0h;s&_TIfneV_m~Q#Bua8bm{+QdOfc&8}p@aSY;56phRze8W_vkX&1J|1+>v%R4 z#j|$-Ee1YMpcj4W5GQ-rxmSX^bYBh2VHYQ&U!yL`?OIVQD?-oDh<7$Dl@*ht?%hha zUWdc>ooeJbh=OZ&*v1x4ghU;^-2x&PEHop>%~&~Ivd}1Y8nc(s4kd25)1J5WXpmUp zhKg3Pfp;>zX1NI5&MNN>-OdGx8H zT1jpv@!!6ni`^-NJ8Qhnw8sp%zF6j#hi1Jn!<~x($2#J{$bC9~2tpn@W(=KsVi%ou zc|TVxX8^$+CmlFh-(3$*?&cKcO>TY#kS>qwCS-gO8951>Y-1L8Eo*+pWaMe1oZlUAOpv4OLhHy zfHS?_;djv@mYK{4VBNd)U%{H`O?Yt;J#%rmg8EJV%(T8&)0^P4f``!meS9+A@-_M+ zy>a{th;D3)sAM8oc1(+Tn%F5eV3XbhCnpAhPo|ilaji z5k%g5O_WpQZ{OAg5jjQVMN3|^WukO?y;j{L{5AOX7OMFS? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_272_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_272_states.bin.bz2 deleted file mode 100644 index fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4981 zcmaJ@|5K9rzV{obJXj&}fSit{fXM^u6N59ZvssFu5Efsa2azd#9+&1KKh;jn^u?_J zQ9*6dpe4^~6BLC<-6cn7+Ge)^>s(~!-a)V2)9mctv2J_Dx}81dDYv$^F8c@E`}yJX z!{Mx8 zEr<{DKmmn{kT)JuWmHfmAx%);=q_r>7(pR!Kz*npBP$5);%Bpzt>nD>BG~&$zGFPf z>XXr__w=WTig{EYVRPts9!w(NJq0in+lry zQ31(r9ep-seHKd2?7fpyKR!QsCunL}9}4;`rz(C@y--E&a8P)LvZy85^|H}+`B^aU zZSM(rPsN{7je13mD$$p<4HCKN4&v|@aDTE`v3V?5O|miz_0X@W`m#D8CJ!LtfKNvo zU({*@6+;f~Gr!q=A$UT9z%!9yZQ~q+?MwS6ZhDU~^V4Ar)0Q*Z=fY}I>~ZioDrlOr z>l-dUGBW`rRa0~xAlSYXwVc3piYi)iMp{+6(HS`U{q*Yet@F%ROkhi0?<^nr2zknz zJc87PEGN;e1{3;3{uAn)1}L}nnqRb(j$J9wbjT;)ya8m-P1h5}(@p4Fh-vi|R<#6*4of`yRZIwSq|4v(B13sOr zZq(p6d#tg;Er$W?8r0KJ?>WHlApKKIB2GvE;*YAI3ep((;v+x%64QJXXNP)mom`a8 zB-BCLCO&i5$38B+pr}4o^57V+lCl8MV108u_@?5s*vsn1_1je-=@*(ujbrJEe&PjM zqix#ru=Dvb2;Bxr&qms5gl|(=RaT6o8ZIjKmoBL28gS#xFFxJxx3iso@SI zk>Be{m!oE0_J3B&H-}<%A^Y>3_lvFk24BUNoPRPuLJ$0Y?`wkI08g6j*(<6T!|qo4 zaaKDL#fGZ8YK21L)6jZzR@B@_n0-6kUeIEao2Nz@{;NFb94hifF+EUZ%e+83Z2bx- zl+j*D3tu#?FP537(s|1(RcriM6f=Y@-8{QB)vAiY?FuEx(2eSagjWbs!um=rsTW&- zQp&Vh6Pfq*;+PEC56aU%Llb8bXmXYfu14mJyN)8uxX;z9! z#NnK7C~7j0>;!K18UmPGw^F#~zYmZIUC=xg#AGPnngV-GU}$^+q!C`3%4?VcL%n7% zO5m){80u}v1t_f5OaT9M zE-E?i?5TsN*waZ_FYzXC8$cq9MGMY$h$W+We(&Jqyw5#R;gyl>z1VQptvn;YcM$5M zg|Z=X2uaTHa$h<-yPPkwHUnVeoIoX)0weL|A2@C*nA%Y*HPFs zLgxY1uuwRD0`g9V-6tev9$1Koe9op>PG0PR>et>Al66{&${{tsM?a=LW0*$_eA6(= zKy)h-A*;xl<~K;PM(*Jkt?z&bEw6UzY4zr|{{)aZl0Bw(S&w>ESMS5P1n?3g9r5#o{+^)Izkol~7t%LN87z@>7hUxp9%#$<79CTfE1$fT< zK5$O;mh>7u8m|JjN$*Ho#7&Ctm8M-2KE`|Epp>HVnO50q_E#d+#rL`Xe ztnihh@X@u-pMg#0yR5(qBwzcZ=I*+|kDuW6o>BB$VHwz@&B64QjGaF)#6e8)4!R+) zlvfshUNn&v6E)qmltApzh74pDeSP_^&pf?|9>{tb>>;gR$$CwSUdX{&1fK3ehesJW zIg=HGuaK-)N!F*0ZAraQ=>Gb&!{3?}n^m+^76y{l|L_AZ-@c}FDm=vDd|Ba8&O)%u z8AdlbkRvjTTr2YuG8AraN`#J%52^QQ3X_IVMYwE*%HgB!a-0(Fa>uTbI7m`&O>z@c zLA)D*7x&6C4Hf8fp4NZOHA0L96)T5xLOxONbw$GBQKkWwi^0*syi{3u3K2Wp()!15 zQ7vCD4B$GXM)H9;3nUGrLqr!D$n(A9fA-*c2c)>`EZTP;?7imHE1C<71WnwV|EA0d zhexuJ8lLnl_xZ1B)m{;PT}bABVLM^M&!LNqQrj98KW_8=?45C@51z; z#Y}s~H}^w-29a6d;dek{deXn@UsaqRsPc=fC!5UKicq3WUPU^Bz-!$l3{ zHF3Skw=Qd$3K@dJ;B|`H?w|Blau*e`6jj5p&VmdH)TiPUO^_y)AgTmI^2v$(8cAL( zMkG9LCFoH1noyi215|z-KcR|*hg|zLi$&(Xfns$HuTl$;0s=&wb%Dn+j2r>d6Oxt_ zFO;g&v@0H4>=tanrx*H9DQb{)p@wG_AwwK{0zG*Jq}h9M96#+7kO;;x&P$Nc73x7o zcTpG(F+AB>B1$AYj4ByE_7tHe#(bA=Q9&SYPTSI5z%zRY-RMvuEB%cmdPP%&P^ekh zwOSU{0i>WLD^ac)3TV^%0%{5LG&jzaf{oXJiW|~1tw^jc-;KuRvQmPafTwPzVw@j-~&+tn@l`+vV#(#WK6TQeC4=w*){|$-!>LG7^h+3)Bo&Wy@&nL4)34 z^>w8BCXxw&GnHS!ShNt#(c}#ReYnPr40<#ARCnZcWpg)S7TuQ!Voj>+Co^ zB-d*QJ=ux|g@u9SFj@=psrMlCBNr#U0~I^+L1e^Iu=V_jIemukHKANf<|S>2cazo)EG4L6Cf z{-k~R<>af9tG_jUofH&(y;jaO(1<3X(7_+?a`@*OWY$%_fw21yy5`7E@3|e;NZX=3 zbcAUm_hnPz7fkCH0fpF5P95C4HYjH|5LeZ?{uz03`Ji+|++L2{00(m=QvZgM)umXE zpWZ#V_X+TfI`Jhp036hanl0A1_K`jL9sYib0hC_eW*2Q7 z&wI182wDDk_rO_L;uKZ8wy(OjS`q>Od?mfqRNRG%^$Dw!^?vArT@3NP&W zp|%#qV)&EV`WF-Nji=}_fGeupb?Mu#Ii}8(x;~{ zaC`$!T>V>d!-L{->H4EOMHEW`0|(bx)sYWI_`Bsjv>x?G<&qKOw45zyirU$3czu<4 zP23%Mw$JiUme{C2eVobjM>f7uUl?@##P?$>V#7#KR6visUHbWpA37-8Xb<=GVDD@i znORn6Sts{i=EnKmyLZC}v*NO1;IU)$%S;>hruRL^A9_8U>%ZpjsxcYf})0o{oMP=!68x;;;Bm2%vT~AwCSTD(DWo%EoX0h50J~ ztwwWzccJ&-oDjlY3&nIYWJ>gb)?~N(HORu@aC~9JgkiBIGOJq>QT&S1#vh%Aw<+&k zYiNz8L!+r>MB3ENS+^OfvY!6u*nn-8$GuC8V!70i%nla7d}qT&KN8B~N<`dIDo7##l1pS&vr74b6y z|C6d64e@XGNke+kksaWW_|nFL=e#PIR$P-3G5yAy0N(XCZ&vPUF#CF9Jq>-f!g*%` z1VIT8?~+MJ+XX;2H7%1vsFDc#T;TKyVbi|d68F}2;Hk?->9QEZOrBVd~p0=>4!rTj|($@ zrf-s+OI-YP2`cDhiqPYel#Y5vjoMP{idiP%>m2q|s}GkQhJa;g9QCz107 z+<8{WMqz&7y!m`!E7++RnE1Y!VVo=6Coj7;$+#4Z4Ar!_SGu8zXy?OA!HcAy3cqEO z$#(w(q+=9{Pys13;vA~C7=rz`YUI*K^6{jR<#;LpTHZ&E?(b$HC+{B<9g*bIsc?d0v-g)~ zJE~Z?D;{2=!pma+d8%rC6UO3I!Q#@BSF)bWP;1$ZCKkhDYtf6)sJo4fs(rkdgQ|&y zW?SsMc!rm|TA)a8hKhyOJfjYk;{*>|8>Sb4Jhc^zfsMU2GDX4EPw=55l99#UPqu33@M$f>Io{_;ZGrVDf(_`{ZVWdHeq9R1IxAUrEIc) zs94~r%*}MrtO=fdY4iw_DulyJJN$IA^Q!%ALB4f?E%Yx4H7UO3gxX>s$Bjx@ZOb1w zg|XN$`&u9*Zl!DV5XQpdgwdqjUrtN~sC04xR#$JBHaT*5SJ{HPj(1uyZx?ammlt$y*r+SWGtSa^{L>Co w;BbQx*p+lXQSPwGJ6rZQCCW$d*d|Ba35(BHe_(zptyQ_Ag8u*cU-)1DiU0rr diff --git a/client/resources/hardnested_tables/bitflip_1_272_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_272_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b315cfd6097ff70103efe6f78b2789a1d8e17d90 GIT binary patch literal 29127 zcmeHQPi!1l8UNnw%(2UO)iP$Vig0;=IRyBj-kFsVZd zJ$x&9_r0Ar-}~P0`+nb>_syHNJ@-QG$}8``_bSov&CfriD2>w;e;&r8*nZyhRfz=L58Jn5?>fO))9Q{V};; zBhMl>$_e5&ksVSH?`ZGB9aR0U;y2e_K=|y5wysZG3=n!s%n;qGg#A3&5*tZgT`DTaBnM ztCdD%RqzF@k*hN43QlvMg=%qG1yPxfYhd4`AOK3#O4B5lnLI2cRE`y`Mp5MS4X;## z>;!(Wt6)LbxYejhR);*}0_l7er~BI$isO)029zUA?ga=W+n{tET|Whga=NLwOtWm< zWiQDWw-p;_4C7B%m>k`=pOd%A@eNRM92myg=vyywwHx|==s4SyLys8%?$axAN|^#h z^!Q|uD*7|OQFZj?5}Q&{zk&~1(+d-Yb{Rr^G`glcijxVzpen2=eG@KV6?K@o*%|bh z{*619hoheXVCh?W$LEf+TD`Olc^$a1Rd=`08_i&x5O4nio>-ugjlMFk#z@|Too6#q z8yWiE6*NB1R`j-cXS({NH#YCuE1 zrcY%KTfqpH^H*zd)A`w6pQ?481ce&;eX1_QZoVSFNo3JvWa=lPs6tcG%_)cK#Tvv> z(S4pQA5DNf2GAdb^7!^l1wspKW=|KlgHjj0%@!KHbp`L^8^r!)ODDOY*A8@{Oun(S zX~3<{!dWsZ!?jMWF@?`zkm0mf1CdL-OV4of!~~jE(a)E>3yWysjMU)d&;(?I0)2|= zb>a@f0fjRwQT%QTBL(BajXnTs9iZOgaL&SK28LH+T4ZNq1k>0!&iD&c6X7>a;r{JgI^1M4hT)8D=BbeX103|THExa<2C=2`O*BfU znCi!v)}Jq$QGApdkr`ctI_nzs-E~N=zXY96=;jyzZ*X|Nz}*JexCz12KVfrjgiS?j zb53WvT0R>01B3ewc!L5KmGVHVze3a;@O;WS--7cp3*5)OKcSFmmd5nV!G&chEjJ!=}+E z)~ae|_Jj6kGsZ8$bS_SV-@4muG>BV!k&`7G{lG=c*L|COcv$ze_Gz7y>NIyL8&PI+ z1RRBN*4p|5c*@BtWn++8PTlQ0q$|Md=j4ao&IDt(Ek#6_VWJlzk=TG zBJrr77x%^OiTFtGRQ!2@E4HUK6#70D^IM}B!7y+=vokW#cIbt7PpoAo7%8u6GO&Sr zj}2yl4KPFO%3hO9S5tVQ_X1NM?sXL`@FoHOuQT{>_{k!hAB-ca!YiG06|DFB@FNKS z@bdr>p~hMT`j_+@U`XyIrinFemim4R{Ot<}50eV0j{DoAFaTU>Y+wL0Ue<_DTT8HJ zZCbw!8_dCe;aG{_%wZ96*uHypff<#PW0{|y!PNz~pMY_P*0_6VvDK<#kQOjpeNj_~ zX{O5Ex1k=Sm>D?dJ737YHt9*&Zy1v9yG~%*8bI>Le`AKUkxd~-HZcHgLg?-P8x6k& z+nQH1bMG;b?toEy)>m{((?6L0{xDUa7^a0ec}nngkuA5_!!rVGLJp# zWk?ek%eCTTU7yK3Ci9rgW1nmeL^viK6OIYTvPAI_bBl7VDA$UTS47_RVR?MXD@yKu z4o)Ds`~52ol#rNe-}eP7lDn7tV;}c6wcH;&$esu5!m<7iH@OF$CFXGd{-|3)gkukK z>fkrRG2z&Mv)xKKc92mI)`erjG2s}t!}a%H4)-rg?p|{D`=JscvWc49gO+>H58oFo zxqHdoOYUBB_pD%s~D`#kn3CwWE5D-OIt@`{pIl;3{akBlfuUQzOjl2^Qs z62pq*6(z4IdBw-_yTP&^ll9nsh?Vu2tj7l4AnP$%kI8y$KQf{u>oHl6$$IQQN(?Kq p9+UN$tjAzx3{<4)_aQudL%pNmAXuJlKBCWeP|3g z;vk$`NED|Ar!LjFtQ#A{LEQb~LS~&u;|vnFbcSu+vgn;_93s=sKO1qNtDp9MdXx8; zC(oPbS^rvxZ*5@vs@Cl%Hcv#r#@zm;r%!J$mM_tL-6x$#)4;Y`0~&x65G-F0_Jbi) zyaE27TgO*8Vk<{-qP5?TIBTyQreJUF)YQ%k%ama5=s`sv4ITg%-)Q58Rkn_cGa*bn1daHzPmgmqIJ#v?YY(+&+`tQGWSeWO zdW#egLJHbtW8)_DgOfV;=soOfAO+T$>y(Bhu8Mc@Gy|EG*_zQG4#fTDKQJZ7Jz&nt zKVfxfLGP#Ssggl=#I0dmWxo0soTm|S5;5#RtTiFOCBa?xu~mF8F>@b*wAe>To0>ID zngjTG)hJ`tO<=EjPQ5ig+&aT8M7`)dE{dK8i}7M->rcE+!Uep^-+{jiWCy${0E~Uy z7*-_evv|3y_N#*W`5e415WnhIKTNuZC7Pgq?Odo{YlyVRE2iytxXF@V-K32wN`6`Z zZ-g7n2CXmdrym4TZX!YE@803#uS+ymAb@@|BLB_51G@O@LQ0B1M49Nna5tYSj(gDq zNQyX+7QPfd@nnIN41B^b(r~GPEAH|$p1@QUHL5@avSQk&?t$}YR)~1mS$#_GD9%*H zyM<8mnKsjkX1Ou1pjAqgcmf1tOMRWV&(C7+udLa!l1eL3oCL2qAbzB0cbrSNLGnsA zz(x*@BSYcPgoT}=`-zgTJ4B-r#l&O<`e8FsT-vEpNb<-_w>fa^lDHAe5m9lbUGU{J zQu69mvU<+?tO!td-=M8VDf*aH+Smv%9LUSlPlFD=6)|Sm7%rnMY}c~hD#bI~cuKbM yq?CJhtAP65h{epMM&USMEUYYNF$V`pBbvxclPu2&Ubk@ez4D8LgVzqeN&f>&!H^vQ diff --git a/client/resources/hardnested_tables/bitflip_1_276_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_276_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c7380444ac75b1e664e239b7bc16c474037613bd GIT binary patch literal 18288 zcmeI4PiP!<6vy9hW@odTo&9|$T@tc?lAUa7jizZ9nqtsMgGID0Eh&aZsnIQ{6jY2N zc+l1Xizfr=$zH@%yjk=jh(T$3RS&uKB;=sSLV_(*wDsqkO`2cZK`0XHBeP!0+W0H1Z(Y>LY1ad#cZ*Gs~a@zuD{o14 zeo_EA{lyPy)Wqae7y#;Q`1#1G#|w)1)a!hruQ-$im8{gfZ%BWsIMNbMdc%6vML;L8 z?rA1+2u-KROFp6u=R_~C&9t%;%;KWIkoA)kvqzI?^vOK`@gKD-J_;pW?%fNrH3D@0bc2b8*_T47t~orP;fyFGlZ~G0{P!z${DH0k;BytIC3|KkN5;* zdJ>o|&0wX%unhJ0V7~M^rnt~ib)p`t#HTSw(QGJu?(xRKDsJuKDs*sGoyNRVk6S~# zH9e%Mlf8PN!UfC`G4sA8g$W%!%o#tyYX`StWsi^J<|FfXYajEf81pV@oB>sMOR$91 z;Q-XV1gbUp^<_QCh3R8%VLKLjy(`h<+WrzNoP%lW z24UzS8u&r462bv94r=kXKN4~p%dL=WF#`gF+eq7(0np(Pbm%c&D(a!vuvqLuRKAi_ z^lQDMb!~(*%VW*wP0X{*6?XOH4o-oEWdxE!ExPc zV7YO)8gtvo>`dB*hp;?ekCz8$K|7PA-G0vY{Ox`b)jnpaapwv9xT@`DaT+%}Odrl> zS<;cJ{d=!iY{xvhJ#^Xt*8d;D&|e2cDWa77Xf2`?=_&U&ghVN#6j6$i&nesZ!B%>T z^c3kS(o?qc%d+$o=_%4vq^C$vXbUc@D8Y%CIzaj8qGb{2#f!mZ4-zEaMdh76t|u76umv4h9B>1B`b{7!=r87!LRbHLEpx zdP=2y@Cub+)cDM@xItA)H7I;u!;}J+#SC610m^%X`kMlkmupRo6m(MwR|(@X)i~+4 zs4vu2zA3O}@r5b1LQ~z7R!kG>QP6kw3T_bU(b853v`bm+DyeZ~v8t5D>xQYE7rYDt zLwZytR3*F&ybM6Js)Wjt2b^w-E25pmhTrK6!`#njEP=zvH>z|w<` zfiD6plzIZI7M;=oqQC-?SfGksB5_omySq;rsxM&F-DOBAmREbB*^`)q6@o2koE(P#XojW(md4C J*tQ|90ssyfbqxRj diff --git a/client/resources/hardnested_tables/bitflip_1_280_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_280_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..e835ce4179c307e40e9ceb5e2d400f569a1b826c GIT binary patch literal 8357 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 PB=Gkpjy`|=@F4sbDYe8t literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_2c2_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_2c2_states.bin.bz2 deleted file mode 100644 index 15195d21385b0eede73fd2ebfdf61354647a4812..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12468 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 GUjI)zux=Cp diff --git a/client/resources/hardnested_tables/bitflip_1_2c2_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_2c2_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a5259b6246dee7b88830b44cd7b0da33f3ee17f4 GIT binary patch literal 41275 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 CoB>Gy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_2c6_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_2c6_states.bin.bz2 deleted file mode 100644 index 18a6d49871207a91671b9bbecd09e0a98f45fb6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2268 zcmZ`*TWl2989tY}cy~s#fwgx>XuWG%umP{uClwDHpb&6$0gAMf11sZ zGaAjD(VTzI|9#*8{j>j9r(Suv>-ENCum1*V2o+yG`}M~9jSp^A7Onrh(PeKBA>92E za*+@hf^8}Ef5$7=8c|dosDMJ}_kIC{6RxJ1Effl5FnD|E&g+xfGsrL6j|C(cl znRxE+gqC}G05NAu-@C>|-g0vl(VvIQ$ zvXNX5InP~#67WOo!3#0oRc=DCf63$>4gStbLWkpswahrdUl30lSUx5}G6#9rdUo#H z$dV(axK}*+r6U&O1-D)%NMKv&1$qvPX6`QL2QgP8ANK~Ox9t{bF6LvpfLj#te2n}s z>%~#l!d@JoDW6<2=qg!^=SFBLzKFSl1$=^~N+cQV;pIJT=-;J;R5{KEmxVa5t)=B(YdQ*QlQ?LIyWsP-#$d1%Xv+8Et-w z7A-NYb)HH=g3M4fh8NIeZh$vqk+;Y-4N9Tc*3rA#)ojh0{QjJ{2Yggd7QN8wIhca%K-1>@!Vxf_#hR9 zI>`r7kkB@!SVFrq!4H(ux>#@M2+lOL!wQ9+^LRc4<~OvM6s;6<*QOnOE>Am3 z0U_qG?As``w8I8wTKs8o$#!GYv7u>dw#1{ zHS|`^cWYH{23Zxb508-N=sD*3RA7FQM0^OrBx{K8^(zE1cj&?p3+TKBee3;RDMUB3{ckbk5ARp&7z|p^ND-^pI=1a8p*IVw?)x&nJk;g?<{sSJkb}lYK<2|)f(`X@zhHgR0V2I zxmz9?+A_tJ@KajaCxvp63=D_L899V2sZ(ue9KD61PtHdgc>jWdA^FD>|7sXfWuAe% zO5g}C3gE}^VuT&fm8??JOgy)blJ^arDQfVN+Au0P;tpAp>-daP!kLCqbE-`-{R6u4 zC7p|-j}h;Zl_azgK8~MGRLP5C|LBf2EK?O*-^j5{aF*xIxzMT-+ybteGxY>mOTn#M z)@7eqofr>>b>J-xthr+57*&8jn=S9EnqL|ELkdkI8xGv~*Lb7YQ60mNtV+0Q;(3SM zp`z8ipA1^f4OF%6TY)74rK}NJjCic6khXlqvaHlSnXmn5(l_)c2KL-7Qo!GKbYB40V`fKYXed<4D*;Ks1hx4&ERe3ZaX32)R{ z+9E1m&wW?9-HhY|W%ZIgx@4fL$rS<0vPTr$`~bx8K?Fxe2>g}z1rS#?9>q$bJg>YW zugh1<2@Q5YFIM-G+2LE5zXond{DBlK;=3_jHeTl}LH7VpthIZ1$N;g2#v|;eyWDZqCB~w($Oow8)1Y1VMssD%5oy zTn_Obq5Mvn`q3bKF@PZ{2ae~KHa)E#gQpE^SxeQX&l(MF05rEw#QC^XE$uzQ2l{zE1bbMVCzY8wR1DJMp|Nwt_A&jS*Uz%ytKOz;^0t0V z+)zvif45+J3I<`jmMPi3MEIc+C3{v3y${}1kk+2YaMY_U*r-qgA7%)2!2wbmFxNFq zEWz9)fNz(3Ydw|r5WZOo3C^hkRP|L$U0jMdch%b(_;ui^j$CHxFhn-uzx#Ri@YLqt G%zpu4Rqjmy diff --git a/client/resources/hardnested_tables/bitflip_1_2c6_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_2c6_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..08c31153365ebdaf62319aaec612c7c2448f20a8 GIT binary patch literal 26933 zcmeH~-)|gO701t=Upu=qbI%@s`XOqQtX_Pwc&;}?J6IYbVs7bX&JOnkN zE7AuGNExIGDuK}Qg7U@|gj6+=@C%|yAnhN3kYCWI5|aG@5-*fZLo`*>_VOJ&DV?Dp zK!A8SE7>z==l(e7d(P+FS!a4>{0r@$Pk)iS#6l5Q#fsa>x;k}VMGmZfi6 zxSQafRYi!zFIqLdnSC|Hzjr>KxgIpt)BV)+w+uqA()3hXr(-Fk8E+W)HP_$jQMsCl z)GT)>Bnz9l+$0-U2cgbma6-qqs{$r(394MtJ-0%Rj%|E#GV`&Pl5>x)E3AJPC*DVx zeDftHcQu>qu5r(^;9bOt1tq=Ha4Uf9@yOPPX>7~M+}fvGAvWA!GfgVNmzaB0vWC?} z_P9es)+oWJviCA^i^`B#`L(n=s<_8<+*aefSlLkP~@P`|=GhjBlTnM<6w4R}Aot5ljYT?fx?_!Bzku#|fM z8L<%3uwJwDWoYev0s$@Jda#-*Xc=VjgpXD@sVI0FjFg+?Z;-zu^3iCM!tGFRBlkU; ztU+53A&tVbWoUw^6ots&Fh8d-^$5dA9VQJSyHyVAf21I7 zHH;~2Qn*SHsw7qoDt?`? zWvR5eC+r2jH4zdt364Nctz%SEMXbLNBVH4M)o;{GI)&th(*7KXddV86e>);iu-9S_jTOYYlbGTa&qDvh8pu4Q{9+v zLE$SrV65=4?l$;iq;;pkt;KyDW8w3>{hX(`%9zFVVCLSek1lMK}`j1{+@ zo=0h;s&_TIfneV_m~Q#Bua8bm{+QdOfc&8}p@aSY;56phRze8W_vkX&1J|1+>v%R4 z#j|$-Ee1YMpcj4W5GQ-rxmSX^bYBh2VHYQ&U!yL`?OIVQD?-oDh<7$Dl@*ht?%hha zUWdc>ooeJbh=OZ&*v1x4ghU;^-2x&PEHop>%~&~Ivd}1Y8nc(s4kd25)1J5WXpmUp zhKg3Pfp;>zX1NI5&MNN>-OdGx8H zT1jpv@!!6ni`^-NJ8Qhnw8sp%zF6j#hi1Jn!<~x($2#J{$bC9~2tpn@W(=KsVi%ou zc|TVxX8^$+CmlFh-(3$*?&cKcO>TY#kS>qwCS-gO8951>Y-1L8Eo*+pWaMe1oZlUAOpv4OLhHy zfHS?_;djv@mYK{4VBNd)U%{H`O?Yt;J#%rmg8EJV%(T8&)0^P4f``!meS9+A@-_M+ zy>a{th;D3)sAM8oc1(+Tn%F5eV3XbhCnpAhPo|ilaji z5k%g5O_WpQZ{OAg5jjQVMN3|^WukO?y;j{L{5AOX7OMFS? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_2d2_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_2d2_states.bin.bz2 deleted file mode 100644 index fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4981 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 diff --git a/client/resources/hardnested_tables/bitflip_1_2d2_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_2d2_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..b315cfd6097ff70103efe6f78b2789a1d8e17d90 GIT binary patch literal 29127 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 diff --git a/client/resources/hardnested_tables/bitflip_1_2d6_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_2d6_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..c7380444ac75b1e664e239b7bc16c474037613bd GIT binary patch literal 18288 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 PB=Gkpjy`|=@F4sbDYe8t literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_388_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_388_states.bin.bz2 deleted file mode 100644 index b01f02208ef4ca4c78fc6566fd6e0c556e11ab30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5424 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 PB=Gkpjy`|=@F4sbDYe8t literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_3a0_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_3a0_states.bin.bz2 deleted file mode 100644 index fe85775bfe7cdafa269bb9b1c2202af269e763c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1680 zcmWO5e^8o-83*w9ec=Ve8^|jPD%aUJ78UUa%3)KRHojOO_%ld&K{=}?!<3NQW_r0* zW4gTA}og^VM8$|r|q6R(OnWR~`{MaGgcHl}b^VXfZWHZ*Jjcv2EG1<81`Q!QL zd-ptdpQplTE-R5Y<{WH1O#7h;Xu0$8z$+6;(&;#z4$uJ`fC5R0VTJKeW)uJbu2`3K zTGh+I%^Gve6K1p60$B#=m5-=SW3m+O0Iyv4Qhjp&M!!1MH{fek)$UqQmRG_574GLU z9NKv(Wa9L217-3uD7%qH!Ol|RsA8%+i1?7p@}DH}eU2&n!LOg*O-|D)%)a_FyC;-2 ztl#h|`MiS>F7}Y9(@0pXXHKc`64oeh(ilQgriHbcA#bo8}3Q33qDP=yD(kJnc{gUN3gp*s`(fOMkjF|?GFPfB5DfmV16UWA+Q06)>7 zC!GP3=AG8o;(=Uyj~*?u=b#1hVu7_qNq;bjZ-+j^E>Z!$M-Ms+Xy60`zlu_iD+apo zSuS71Cl@Qu4J!1gKTp(O1rH%{qKihmM*YY4Kn# z4U%m{gjx-7utT~7PiR=Cg^KnR;U<`(?yy$jPLJMsUQB(#Gcgj!%!~br6b)!)R@mB- z)8f!9xJCILR4W_!gHnEjSKYpcsG$J?rp3h;ad0!6(35eZV^SM{Uv7%M)#E{-;>8dW z;iXP%E6O$9Lvf9Dk>xOahqc%$E{W{H%K9(0>J6Lr5q1tO6zQVK_FdTIu02u<{3paY z^U*Wr4}%bZCIcu6pb!dR0FXioo+m^C9|NOMZw5`}7NnZP0$DgZqQYZisvd!q(JM`u z96VZkV97msqjEiUa{t8lGgBb$FyOMZo z)EsQ$K9$$7qcS)`nbpH&3=AWc3IkS(PlFb@0ec^B))aXX7(FsJX!S^0PtigR5k`oE zxDh6e6NEWC|KD;MesdXm2n7%uuhX73grJgA-B$OsT%VlCF~}f;{ET2tJ{U-l`i5!%*f1sTvwU9z)KQ&*YS>}lYH=IDLV618g; zifLJE415lD)#vDtp`Io@h+sz8DYH7I3_O~Vcvx=ThElIXygOXbtrXD5`%#zT(wtsL zuI;dTjPgbr)<^>R(}s6*IORbQlc1MosNxKc}Xct+CW!$B71VldVm?N)S#y4b8Xl{?R>8 zUtmz9tqAZ4h^COOGG>Hs_NGNyVdeq{{FZFzI5T+i38IiNLZNi3fccdR1$0(NXTpsnsm+>nEI}GLbbrs?7fum3)(2ciCq2>N>jB8@jv`&T0js z<2B(o$3*$U$gz?pA=3jGuLR2f>_h?54v-{3q9mBmcL6Y5LI+YsF{kY4fLC?aI#SaM z4UQhTTU)MsbL0!KQZY703U+O@to@H@FUdIa_Q;0|Lwj!*{7h9EzwZwo7F0!M5gN8+ z@k^GKUsKx0@wE=Yd3{~(?aW+v@z$Qsw_;_7+HcJmr%Re{bObjy?j1XpS?^lBaL-*R ze(|^Z=Y5Rf{A+s~u76|<&QF()=e2c_!|v?9p(`Kcelp_d`nhA@=aOkv>6X7>M%ej* ze)9eF5f?cu{X8|W&{x!a6sQ>Q)+x~E9I?dj8w6uN4$Czf zaBAX=yTZs+nnx<(sf1m5Dz?Ve)3QA z9gfIx6YKM=QE+!)8i=$)j+nVLqr!NCPC(xqj!Tb!gsQ!2LaokO*UED}n2-;LXgCc2 z3Be!7%PaySAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wVBF N1v(9kpXaZ)+&Az7G@$?h literal 0 HcmV?d00001 diff --git a/client/src/cmdhfmfhard.c b/client/src/cmdhfmfhard.c index be7b3a4c3..9c487a50d 100644 --- a/client/src/cmdhfmfhard.c +++ b/client/src/cmdhfmfhard.c @@ -30,6 +30,7 @@ #include #include #include // MingW +#include #include #include "commonutil.h" // ARRAYLEN @@ -51,8 +52,9 @@ #define IGNORE_BITFLIP_THRESHOLD 0.9901 #define STATE_FILES_DIRECTORY "hardnested_tables/" -#define STATE_FILE_TEMPLATE "bitflip_%d_%03" PRIx16 "_states.bin.bz2" #define STATE_FILE_TEMPLATE_RAW "bitflip_%d_%03" PRIx16 "_states.bin" +#define STATE_FILE_TEMPLATE_LZ4 "bitflip_%d_%03" PRIx16 "_states.bin.lz4" +#define STATE_FILE_TEMPLATE_BZ2 "bitflip_%d_%03" PRIx16 "_states.bin.bz2" #define DEBUG_KEY_ELIMINATION // #define DEBUG_REDUCTION @@ -135,7 +137,7 @@ static void print_progress_header(void) { void hardnested_print_progress(uint32_t nonces, const char *activity, float brute_force, uint64_t min_diff_print_time) { static uint64_t last_print_time = 0; - if (msclock() - last_print_time > min_diff_print_time) { + if (msclock() - last_print_time >= min_diff_print_time) { last_print_time = msclock(); uint64_t total_time = msclock() - start_time; float brute_force_time = brute_force / brute_force_per_second; @@ -256,34 +258,42 @@ static void init_bitflip_bitarrays(void) { #if defined (DEBUG_REDUCTION) uint8_t line = 0; #endif + uint64_t init_bitflip_bitarrays_starttime = msclock(); - bz_stream compressed_stream; - - char state_files_path[strlen(get_my_executable_directory()) + strlen(STATE_FILES_DIRECTORY) + strlen(STATE_FILE_TEMPLATE) + 1]; - char state_file_name[strlen(STATE_FILE_TEMPLATE) + 1]; - char state_file_raw_name[strlen(STATE_FILE_TEMPLATE_RAW) + 1]; - + char state_file_name[MAX(strlen(STATE_FILE_TEMPLATE_RAW), MAX(strlen(STATE_FILE_TEMPLATE_LZ4), strlen(STATE_FILE_TEMPLATE_BZ2))) + 1]; + char state_files_path[strlen(get_my_executable_directory()) + strlen(STATE_FILES_DIRECTORY) + sizeof(state_file_name)]; + uint16_t nraw = 0, nlz4 = 0, nbz2 = 0; for (odd_even_t odd_even = EVEN_STATE; odd_even <= ODD_STATE; odd_even++) { num_effective_bitflips[odd_even] = 0; for (uint16_t bitflip = 0x001; bitflip < 0x400; bitflip++) { bool open_uncompressed = false; + bool open_lz4compressed = false; + bool open_bz2compressed = false; bitflip_bitarrays[odd_even][bitflip] = NULL; count_bitflip_bitarrays[odd_even][bitflip] = 1 << 24; - snprintf(state_file_name, sizeof(state_file_name), STATE_FILE_TEMPLATE, odd_even, bitflip); + char *path; + snprintf(state_file_name, sizeof(state_file_name), STATE_FILE_TEMPLATE_RAW, odd_even, bitflip); strncpy(state_files_path, STATE_FILES_DIRECTORY, sizeof(state_files_path) - 1); strncat(state_files_path, state_file_name, sizeof(state_files_path) - (strlen(STATE_FILES_DIRECTORY) + 1)); - - char *path; - if (searchFile(&path, RESOURCES_SUBDIR, state_files_path, "", true) != PM3_SUCCESS) { - snprintf(state_file_raw_name, sizeof(state_file_raw_name), STATE_FILE_TEMPLATE_RAW, odd_even, bitflip); + if (searchFile(&path, RESOURCES_SUBDIR, state_files_path, "", true) == PM3_SUCCESS) { + open_uncompressed = true; + } else { + snprintf(state_file_name, sizeof(state_file_name), STATE_FILE_TEMPLATE_LZ4, odd_even, bitflip); strncpy(state_files_path, STATE_FILES_DIRECTORY, sizeof(state_files_path) - 1); - strncat(state_files_path, state_file_raw_name, sizeof(state_files_path) - (strlen(STATE_FILES_DIRECTORY) + 1)); + strncat(state_files_path, state_file_name, sizeof(state_files_path) - (strlen(STATE_FILES_DIRECTORY) + 1)); if (searchFile(&path, RESOURCES_SUBDIR, state_files_path, "", true) == PM3_SUCCESS) { - open_uncompressed = true; + open_lz4compressed = true; } else { - continue; + snprintf(state_file_name, sizeof(state_file_name), STATE_FILE_TEMPLATE_BZ2, odd_even, bitflip); + strncpy(state_files_path, STATE_FILES_DIRECTORY, sizeof(state_files_path) - 1); + strncat(state_files_path, state_file_name, sizeof(state_files_path) - (strlen(STATE_FILES_DIRECTORY) + 1)); + if (searchFile(&path, RESOURCES_SUBDIR, state_files_path, "", true) == PM3_SUCCESS) { + open_bz2compressed = true; + } else { + continue; + } } } @@ -291,7 +301,138 @@ static void init_bitflip_bitarrays(void) { free(path); if (statesfile == NULL) { continue; - } else if (!open_uncompressed) { + } else if (open_uncompressed) { + fseek(statesfile, 0, SEEK_END); + int fsize = ftell(statesfile); + if (fsize == -1) { + PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); + fclose(statesfile); + exit(5); + } + uint32_t filesize = (uint32_t)fsize; + rewind(statesfile); + + uint32_t count = 0; + size_t bytesread = fread(&count, 1, sizeof(count), statesfile); + if (bytesread != 4) { + PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); + fclose(statesfile); + exit(5); + } + + if ((float)count / (1 << 24) < IGNORE_BITFLIP_THRESHOLD) { + uint32_t *bitset = (uint32_t *)malloc_bitarray(sizeof(uint32_t) * (1 << 19)); + if (bitset == NULL) { + PrintAndLogEx(ERR, "Out of memory error in init_bitflip_statelists(). Aborting...\n"); + fclose(statesfile); + exit(4); + } + + bytesread = fread(bitset, 1, filesize - sizeof(count), statesfile); + if (bytesread != filesize - sizeof(count)) { + PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); + fclose(statesfile); + exit(5); + } + + effective_bitflip[odd_even][num_effective_bitflips[odd_even]++] = bitflip; + bitflip_bitarrays[odd_even][bitflip] = bitset; + count_bitflip_bitarrays[odd_even][bitflip] = count; +#if defined (DEBUG_REDUCTION) + PrintAndLogEx(INFO, "(%03" PRIx16 " %s:%5.1f%%) ", bitflip, odd_even ? "odd " : "even", (float)count / (1 << 24) * 100.0); + line++; + if (line == 8) { + PrintAndLogEx(NORMAL, ""); + line = 0; + } +#endif + } + nraw++; + } else if (open_lz4compressed) { + + fseek(statesfile, 0, SEEK_END); + int fsize = ftell(statesfile); + if (fsize == -1) { + PrintAndLogEx(ERR, "File read error with %s (1). Aborting...\n", state_file_name); + fclose(statesfile); + exit(5); + } + uint32_t filesize = (uint32_t)fsize; + rewind(statesfile); + char *compressed_data = malloc(filesize); + if (compressed_data == NULL) { + PrintAndLogEx(ERR, "Out of memory error in init_bitflip_statelists(). Aborting...\n"); + fclose(statesfile); + exit(4); + } + size_t bytesread = fread(compressed_data, 1, filesize, statesfile); + if (bytesread != filesize) { + PrintAndLogEx(ERR, "File read error with %s (2). Aborting...\n", state_file_name); + free(compressed_data); + fclose(statesfile); + exit(5); + } + char *uncompressed_data = malloc((sizeof(uint32_t) * (1 << 19)) + sizeof(uint32_t)); + if (uncompressed_data == NULL) { + PrintAndLogEx(ERR, "Out of memory error in init_bitflip_statelists(). Aborting...\n"); + free(compressed_data); + fclose(statesfile); + exit(4); + } + LZ4F_decompressionContext_t ctx; + LZ4F_errorCode_t result = LZ4F_createDecompressionContext(&ctx, LZ4F_VERSION); + if (LZ4F_isError(result)) { + PrintAndLogEx(ERR, "File read error with %s (3) Failed to create decompression context: %s. Aborting...\n", state_file_name, LZ4F_getErrorName(result)); + free(compressed_data); + free(uncompressed_data); + fclose(statesfile); + exit(5); + } + size_t expected_output_size = (sizeof(uint32_t) * (1 << 19)) + sizeof(uint32_t); + size_t consumed_input_size = filesize; + size_t generated_output_size = expected_output_size; + result = LZ4F_decompress(ctx, uncompressed_data, &generated_output_size, compressed_data, &consumed_input_size, NULL); + LZ4F_freeDecompressionContext(ctx); + free(compressed_data); + if (LZ4F_isError(result)) { + PrintAndLogEx(ERR, "File read error with %s (3) %s. Aborting...\n", state_file_name, LZ4F_getErrorName(result)); + free(uncompressed_data); + fclose(statesfile); + exit(5); + } + if (generated_output_size != expected_output_size) { + PrintAndLogEx(ERR, "File read error with %s (3) got %lu instead of %lu bytes. Aborting...\n", state_file_name, generated_output_size, expected_output_size); + free(uncompressed_data); + fclose(statesfile); + exit(5); + } + uint32_t count = ((uint32_t *)uncompressed_data)[0]; + if ((float)count / (1 << 24) < IGNORE_BITFLIP_THRESHOLD) { + uint32_t *bitset = (uint32_t *)malloc_bitarray(sizeof(uint32_t) * (1 << 19)); + if (bitset == NULL) { + PrintAndLogEx(ERR, "Out of memory error in init_bitflip_statelists(). Aborting...\n"); + free(uncompressed_data); + fclose(statesfile); + exit(4); + } + memcpy(bitset, uncompressed_data + 1, sizeof(uint32_t) * (1 << 19)); + effective_bitflip[odd_even][num_effective_bitflips[odd_even]++] = bitflip; + bitflip_bitarrays[odd_even][bitflip] = bitset; + count_bitflip_bitarrays[odd_even][bitflip] = count; +#if defined (DEBUG_REDUCTION) + PrintAndLogEx(INFO, "(%03" PRIx16 " %s:%5.1f%%) ", bitflip, odd_even ? "odd " : "even", (float)count / (1 << 24) * 100.0); + line++; + if (line == 8) { + PrintAndLogEx(NORMAL, ""); + line = 0; + } +#endif + } + free(uncompressed_data); + nlz4++; + continue; + } else if (open_bz2compressed) { + bz_stream compressed_stream; fseek(statesfile, 0, SEEK_END); int fsize = ftell(statesfile); if (fsize == -1) { @@ -346,57 +487,16 @@ static void init_bitflip_bitarrays(void) { #endif } BZ2_bzDecompressEnd(&compressed_stream); - } else { - fseek(statesfile, 0, SEEK_END); - int fsize = ftell(statesfile); - if (fsize == -1) { - PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); - fclose(statesfile); - exit(5); - } - uint32_t filesize = (uint32_t)fsize; - rewind(statesfile); - - uint32_t count = 0; - size_t bytesread = fread(&count, 1, sizeof(count), statesfile); - if (bytesread != 4) { - PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); - fclose(statesfile); - exit(5); - } - - if ((float)count / (1 << 24) < IGNORE_BITFLIP_THRESHOLD) { - uint32_t *bitset = (uint32_t *)malloc_bitarray(sizeof(uint32_t) * (1 << 19)); - if (bitset == NULL) { - PrintAndLogEx(ERR, "Out of memory error in init_bitflip_statelists(). Aborting...\n"); - fclose(statesfile); - exit(4); - } - - bytesread = fread(bitset, 1, filesize - sizeof(count), statesfile); - if (bytesread != filesize - sizeof(count)) { - PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); - fclose(statesfile); - exit(5); - } - - effective_bitflip[odd_even][num_effective_bitflips[odd_even]++] = bitflip; - bitflip_bitarrays[odd_even][bitflip] = bitset; - count_bitflip_bitarrays[odd_even][bitflip] = count; -#if defined (DEBUG_REDUCTION) - PrintAndLogEx(INFO, "(%03" PRIx16 " %s:%5.1f%%) ", bitflip, odd_even ? "odd " : "even", (float)count / (1 << 24) * 100.0); - line++; - if (line == 8) { - PrintAndLogEx(NORMAL, ""); - line = 0; - } -#endif - } + nbz2++; } } effective_bitflip[odd_even][num_effective_bitflips[odd_even]] = 0x400; // EndOfList marker } - + { + char progress_text[80]; + snprintf(progress_text, sizeof(progress_text), "Loaded %u RAW / %u LZ4 / %u BZ2 in %"PRIu64" ms", nraw, nlz4, nbz2, msclock() - init_bitflip_bitarrays_starttime); + hardnested_print_progress(0, progress_text, (float)(1LL << 47), 0); + } uint16_t i = 0; uint16_t j = 0; num_all_effective_bitflips = 0; @@ -431,9 +531,11 @@ static void init_bitflip_bitarrays(void) { PrintAndLogEx(INFO, "%03x ", all_effective_bitflip[i]); } #endif - char progress_text[80]; - snprintf(progress_text, sizeof(progress_text), "Using %d precalculated bitflip state tables", num_all_effective_bitflips); - hardnested_print_progress(0, progress_text, (float)(1LL << 47), 0); + { + char progress_text[80]; + snprintf(progress_text, sizeof(progress_text), "Using %d precalculated bitflip state tables", num_all_effective_bitflips); + hardnested_print_progress(0, progress_text, (float)(1LL << 47), 0); + } } static void free_bitflip_bitarrays(void) { diff --git a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md index e7fe580cd..455ad6254 100644 --- a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md @@ -50,7 +50,7 @@ Install the requirements ```sh sudo apt-get install --no-install-recommends git ca-certificates build-essential pkg-config \ -libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev libbluetooth-dev libpython3-dev libssl-dev +libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev libssl-dev ``` If you don't need the native Bluetooth support in the client, you can skip the installation of `libbluetooth-dev`. @@ -91,7 +91,7 @@ If you don't need support for Python3 scripts in the Proxmark3 client, you can s ^[Top](#top) ```sh -sudo zypper install git patterns-devel-base-devel_basis gcc-c++ readline-devel libbz2-devel cross-arm-none-gcc9 cross-arm-none-newlib-devel python3-devel libqt5-qtbase-devel libopenssl-devel +sudo zypper install git patterns-devel-base-devel_basis gcc-c++ readline-devel libbz2-devel liblz4-devel cross-arm-none-gcc9 cross-arm-none-newlib-devel python3-devel libqt5-qtbase-devel libopenssl-devel ``` Note that Bluez is not available on openSUSE so the native Bluetooth support won't be available in the client. diff --git a/doc/md/Installation_Instructions/Windows-Installation-Instructions.md b/doc/md/Installation_Instructions/Windows-Installation-Instructions.md index 6ac9e53b3..bc29aba6a 100644 --- a/doc/md/Installation_Instructions/Windows-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Windows-Installation-Instructions.md @@ -168,7 +168,7 @@ Install dependencies: ```sh sudo apt-get install --no-install-recommends git ca-certificates build-essential pkg-config \ -libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev libpython3-dev qtbase5-dev libssl-dev +libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev liblz4-dev libpython3-dev qtbase5-dev libssl-dev ``` _note_ If you don't need the graphical components of the Proxmark3 client, you can skip the installation of `qtbase5-dev`. diff --git a/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md b/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md index 9519b4849..21cb8048c 100644 --- a/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md @@ -108,7 +108,7 @@ then, install proxmark dependencies: sudo apt-get install --no-install-recommends \ git ca-certificates build-essential pkg-config \ libreadline-dev gcc-arm-none-eabi libnewlib-dev \ - libbz2-dev libpython3-dev qtbase5-dev libssl-dev + libbz2-dev liblz4-dev libpython3-dev qtbase5-dev libssl-dev ``` _note_ diff --git a/docker/debian-bullseye/Dockerfile b/docker/debian-bullseye/Dockerfile index ff456b558..46cac1b2d 100644 --- a/docker/debian-bullseye/Dockerfile +++ b/docker/debian-bullseye/Dockerfile @@ -6,7 +6,7 @@ ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && \ apt-get upgrade -y && \ apt-get dist-upgrade -y && \ - apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ + apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ apt-get clean RUN apt-get install -y python3-minimal && \ diff --git a/docker/kali/Dockerfile b/docker/kali/Dockerfile index 79d4bb9a6..0cf70c603 100644 --- a/docker/kali/Dockerfile +++ b/docker/kali/Dockerfile @@ -6,7 +6,7 @@ ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && \ apt-get upgrade -y && \ apt-get dist-upgrade -y && \ - apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ + apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ apt-get clean RUN apt-get install -y python3-minimal && \ diff --git a/docker/opensuse-leap/Dockerfile b/docker/opensuse-leap/Dockerfile index 1af777d23..7e82c5f61 100644 --- a/docker/opensuse-leap/Dockerfile +++ b/docker/opensuse-leap/Dockerfile @@ -2,7 +2,7 @@ FROM opensuse/leap ENV LANG C # libqt5-qtbase-devel skipped -RUN zypper --non-interactive install --no-recommends shadow sudo git patterns-devel-base-devel_basis gcc-c++ readline-devel libbz2-devel bluez-devel python3-devel libopenssl-devel +RUN zypper --non-interactive install --no-recommends shadow sudo git patterns-devel-base-devel_basis gcc-c++ readline-devel libbz2-devel liblz4-devel bluez-devel python3-devel libopenssl-devel RUN zypper addrepo https://download.opensuse.org/repositories/home:wkazubski/15.4/home:wkazubski.repo && \ zypper --gpg-auto-import-keys refresh && \ diff --git a/docker/opensuse-tumbleweed/Dockerfile b/docker/opensuse-tumbleweed/Dockerfile index 169d087c3..04aaff64c 100644 --- a/docker/opensuse-tumbleweed/Dockerfile +++ b/docker/opensuse-tumbleweed/Dockerfile @@ -2,7 +2,7 @@ FROM opensuse/tumbleweed ENV LANG C # libqt5-qtbase-devel skipped -RUN zypper --non-interactive install --no-recommends shadow sudo git patterns-devel-base-devel_basis gcc-c++ readline-devel libbz2-devel bluez-devel python3-devel libopenssl-devel cross-arm-none-gcc12 cross-arm-none-newlib-devel +RUN zypper --non-interactive install --no-recommends shadow sudo git patterns-devel-base-devel_basis gcc-c++ readline-devel libbz2-devel liblz4-devel bluez-devel python3-devel libopenssl-devel cross-arm-none-gcc12 cross-arm-none-newlib-devel #RUN zypper addrepo https://download.opensuse.org/repositories/home:wkazubski/openSUSE_Tumbleweed/home:wkazubski.repo && \ # zypper --gpg-auto-import-keys refresh && \ diff --git a/docker/parrot-core-latest/Dockerfile b/docker/parrot-core-latest/Dockerfile index a33af1d4c..557ca4d17 100644 --- a/docker/parrot-core-latest/Dockerfile +++ b/docker/parrot-core-latest/Dockerfile @@ -6,7 +6,7 @@ ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && \ apt-get upgrade -y && \ apt-get dist-upgrade -y && \ - apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ + apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ apt-get clean RUN apt-get install -y python3-minimal && \ diff --git a/docker/ubuntu-18.04/Dockerfile b/docker/ubuntu-18.04/Dockerfile index 29c958a4d..f2747bc33 100644 --- a/docker/ubuntu-18.04/Dockerfile +++ b/docker/ubuntu-18.04/Dockerfile @@ -7,7 +7,7 @@ ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && \ apt-get upgrade -y && \ apt-get dist-upgrade -y && \ - apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev libbluetooth-dev libssl-dev sudo && \ + apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev liblz4-dev libbluetooth-dev libssl-dev sudo && \ apt-get clean RUN apt-get install -y python3-minimal && \ diff --git a/docker/ubuntu-20.04/Dockerfile b/docker/ubuntu-20.04/Dockerfile index 72f6ec6cf..8a1cf03ef 100644 --- a/docker/ubuntu-20.04/Dockerfile +++ b/docker/ubuntu-20.04/Dockerfile @@ -6,7 +6,7 @@ ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && \ apt-get upgrade -y && \ apt-get dist-upgrade -y && \ - apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ + apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ apt-get clean RUN apt-get install -y python3-minimal && \ diff --git a/docker/ubuntu-22.04/Dockerfile b/docker/ubuntu-22.04/Dockerfile index 9d867e785..e2d93c665 100644 --- a/docker/ubuntu-22.04/Dockerfile +++ b/docker/ubuntu-22.04/Dockerfile @@ -6,7 +6,7 @@ ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && \ apt-get upgrade -y && \ apt-get dist-upgrade -y && \ - apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ + apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ apt-get clean RUN apt-get install -y python3-minimal && \ From 16812fe32b321e50437583873d21cf6ccd9cb2a1 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sat, 15 Jul 2023 23:15:25 +0200 Subject: [PATCH 016/299] add LZ4 to the lin & win CI --- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/ubuntu.yml | 6 +++--- .github/workflows/windows.yml | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 0ec56e054..e035578b4 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -41,7 +41,7 @@ jobs: run: sudo apt-get update - name: Install dependencies - run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.2-dev liblua5.2-0 lua5.2 sed libssl-dev + run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.2-dev liblua5.2-0 lua5.2 sed libssl-dev - name: Install Python dependencies run: | diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index acce10e3a..9887be49f 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -26,7 +26,7 @@ jobs: run: sudo apt-get update - name: Install dependencies - run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.2-dev liblua5.2-0 lua5.2 sed libssl-dev + run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.2-dev liblua5.2-0 lua5.2 sed libssl-dev - name: Install Python dependencies run: | @@ -58,7 +58,7 @@ jobs: run: sudo apt-get update - name: Install dependencies - run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.2-dev liblua5.2-0 lua5.2 sed libssl-dev + run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.2-dev liblua5.2-0 lua5.2 sed libssl-dev - name: Install Python dependencies run: | @@ -91,7 +91,7 @@ jobs: run: sudo apt-get update - name: Install dependencies - run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.2-dev liblua5.2-0 lua5.2 sed libssl-dev + run: sudo apt-get install -yqq make autoconf build-essential ca-certificates pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev python3 python3-dev libpython3-all-dev liblua5.2-dev liblua5.2-0 lua5.2 sed libssl-dev - name: Install Python dependencies run: | diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 77c3dc70c..3c093f96b 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -110,6 +110,7 @@ jobs: gcc-arm-none-eabi libnewlib-dev libbz2-dev + liblz4-dev qtbase5-dev cmake libpython3-dev From 8c4404134da3749269ec8ffd6cb4963328d7d6a7 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sat, 15 Jul 2023 23:20:15 +0200 Subject: [PATCH 017/299] fix test and add changelog --- CHANGELOG.md | 1 + tools/pm3_tests.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 463a379a6..0c84a9e65 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added support for LZ4 compressed hadnested tables (@doegox) - Changed `emv reader -v` - now tries to print found transactions logs (@iceman1001) - Added ISO4217 currency lookup (@iceman1001) - Fixed bad free in loadfilebinarykey fct. Thanks to @gentilkiwi diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index 3a69dd5bc..ad50121f5 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -235,7 +235,7 @@ fi while true; do if $TESTALL || $TESTCOMMON; then echo -e "\n${C_BLUE}Testing common:${C_NC}" - if ! CheckFileExist "hardnested tables exists" "$RESOURCEPATH/hardnested_tables/bitflip_0_001_states.bin.bz2"; then break; fi + if ! CheckFileExist "hardnested tables exists" "$RESOURCEPATH/hardnested_tables/bitflip_0_001_states.bin.lz4"; then break; fi if ! CheckFileExist "simmodule fw file exists" "$RESOURCEPATH/sim013.bin"; then break; fi if ! CheckFileExist "iCLASS dictionary exists" "$DICPATH/iclass_default_keys.dic"; then break; fi if ! CheckFileExist "MFC dictionary exists" "$DICPATH/mfc_default_keys.dic"; then break; fi From b36d5fa04da2ef81763c9a8d808a640d5370fe4f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 16 Jul 2023 09:45:35 +0200 Subject: [PATCH 018/299] fix wrong memcpy offset --- client/src/cmdhfmfhard.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/client/src/cmdhfmfhard.c b/client/src/cmdhfmfhard.c index 9c487a50d..e6581d830 100644 --- a/client/src/cmdhfmfhard.c +++ b/client/src/cmdhfmfhard.c @@ -359,7 +359,7 @@ static void init_bitflip_bitarrays(void) { } uint32_t filesize = (uint32_t)fsize; rewind(statesfile); - char *compressed_data = malloc(filesize); + char *compressed_data = calloc(filesize, sizeof(uint8_t)); if (compressed_data == NULL) { PrintAndLogEx(ERR, "Out of memory error in init_bitflip_statelists(). Aborting...\n"); fclose(statesfile); @@ -372,50 +372,53 @@ static void init_bitflip_bitarrays(void) { fclose(statesfile); exit(5); } - char *uncompressed_data = malloc((sizeof(uint32_t) * (1 << 19)) + sizeof(uint32_t)); + fclose(statesfile); + + char *uncompressed_data = calloc((sizeof(uint32_t) * (1 << 19)) + sizeof(uint32_t), sizeof(uint8_t)); if (uncompressed_data == NULL) { - PrintAndLogEx(ERR, "Out of memory error in init_bitflip_statelists(). Aborting...\n"); + PrintAndLogEx(ERR, "Out of memory error in init_bitflip_statelists(). Aborting...\n"); free(compressed_data); - fclose(statesfile); exit(4); } + LZ4F_decompressionContext_t ctx; LZ4F_errorCode_t result = LZ4F_createDecompressionContext(&ctx, LZ4F_VERSION); if (LZ4F_isError(result)) { PrintAndLogEx(ERR, "File read error with %s (3) Failed to create decompression context: %s. Aborting...\n", state_file_name, LZ4F_getErrorName(result)); free(compressed_data); free(uncompressed_data); - fclose(statesfile); exit(5); } + size_t expected_output_size = (sizeof(uint32_t) * (1 << 19)) + sizeof(uint32_t); size_t consumed_input_size = filesize; size_t generated_output_size = expected_output_size; result = LZ4F_decompress(ctx, uncompressed_data, &generated_output_size, compressed_data, &consumed_input_size, NULL); + LZ4F_freeDecompressionContext(ctx); free(compressed_data); + if (LZ4F_isError(result)) { PrintAndLogEx(ERR, "File read error with %s (3) %s. Aborting...\n", state_file_name, LZ4F_getErrorName(result)); free(uncompressed_data); - fclose(statesfile); exit(5); } if (generated_output_size != expected_output_size) { PrintAndLogEx(ERR, "File read error with %s (3) got %lu instead of %lu bytes. Aborting...\n", state_file_name, generated_output_size, expected_output_size); free(uncompressed_data); - fclose(statesfile); exit(5); } + uint32_t count = ((uint32_t *)uncompressed_data)[0]; + if ((float)count / (1 << 24) < IGNORE_BITFLIP_THRESHOLD) { uint32_t *bitset = (uint32_t *)malloc_bitarray(sizeof(uint32_t) * (1 << 19)); if (bitset == NULL) { PrintAndLogEx(ERR, "Out of memory error in init_bitflip_statelists(). Aborting...\n"); free(uncompressed_data); - fclose(statesfile); exit(4); } - memcpy(bitset, uncompressed_data + 1, sizeof(uint32_t) * (1 << 19)); + memcpy(bitset, uncompressed_data + sizeof(uint32_t), sizeof(uint32_t) * (1 << 19)); effective_bitflip[odd_even][num_effective_bitflips[odd_even]++] = bitflip; bitflip_bitarrays[odd_even][bitflip] = bitset; count_bitflip_bitarrays[odd_even][bitflip] = count; @@ -432,7 +435,7 @@ static void init_bitflip_bitarrays(void) { nlz4++; continue; } else if (open_bz2compressed) { - bz_stream compressed_stream; + fseek(statesfile, 0, SEEK_END); int fsize = ftell(statesfile); if (fsize == -1) { @@ -447,11 +450,12 @@ static void init_bitflip_bitarrays(void) { if (bytesread != filesize) { PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); fclose(statesfile); - //BZ2_bzDecompressEnd(&compressed_stream); exit(5); } fclose(statesfile); + uint32_t count = 0; + bz_stream compressed_stream; init_bunzip2(&compressed_stream, input_buffer, filesize, (char *)&count, sizeof(count)); int res = BZ2_bzDecompress(&compressed_stream); if (res != BZ_OK) { From 0094318515d7769d12ffb77e3c60681b01a3b28c Mon Sep 17 00:00:00 2001 From: kormax Date: Sun, 16 Jul 2023 14:46:30 +0300 Subject: [PATCH 019/299] Make ISO14443-A polling method more flexible --- armsrc/iso14443a.c | 138 +++++++++++++++++++++++----------- armsrc/iso14443a.h | 19 +++++ client/resources/ecplist.json | 2 +- 3 files changed, 116 insertions(+), 43 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 5416f2917..26a743114 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -142,6 +142,66 @@ Default HF 14a config is set to: */ static hf14a_config hf14aconfig = { 0, 0, 0, 0, 0 } ; + +// Polling frames and configurations + +/*static iso14a_polling_frame REQA_FRAME = { + { 0x26 }, 1, 7, 0 +};*/ + +static const iso14a_polling_frame WUPA_FRAME = { + { 0x52 }, 1, 7, 0, +}; + +static const iso14a_polling_frame MAGWUPA1_FRAME = { + { 0x7A }, 1, 7, 0 +}; + +static const iso14a_polling_frame MAGWUPA2_FRAME = { + { 0x7B }, 1, 7, 0 +}; + +static const iso14a_polling_frame MAGWUPA3_FRAME = { + { 0x7C }, 1, 7, 0 +}; + +static const iso14a_polling_frame MAGWUPA4_FRAME = { + { 0x7D }, 1, 7, 0 +}; + +static const iso14a_polling_frame ECP_FRAME = { + .frame={ 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, + .frame_length=15, + .last_byte_bits=8, + .extra_delay=0 +}; + +static iso14a_polling_parameters WUPA_POLLING_PARAMETERS = { + .frames={ WUPA_FRAME }, + .frame_count=1, + .extra_timeout=0, +}; + +static iso14a_polling_parameters MAGSAFE_POLLING_PARAMETERS = { + .frames={ WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count=5, + .extra_timeout=0 +}; + +// Extra 100ms give enough time for Apple devices to proccess field info and make a decision +static iso14a_polling_parameters ECP_POLLING_PARAMETERS = { + .frames={ WUPA_FRAME, ECP_FRAME }, + .frame_count=2, + .extra_timeout=100 +}; + +static iso14a_polling_parameters FULL_POLLING_PARAMETERS = { + .frames={ WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count=6, + .extra_timeout=100 +}; + + void printHf14aConfig(void) { DbpString(_CYAN_("HF 14a config")); Dbprintf(" [a] Anticol override.... %s%s%s", @@ -2508,57 +2568,34 @@ static void iso14a_set_ATS_times(const uint8_t *ats) { } } -static int GetATQA(uint8_t *resp, uint8_t *resp_par, bool use_ecp, bool use_magsafe) { -#define ECP_DELAY 10 -#define ECP_RETRY_TIMEOUT 100 -#define WUPA_RETRY_TIMEOUT 10 // 10ms - - - // 0x26 - REQA - // 0x52 - WAKE-UP - // 0x7A - MAGESAFE WAKE UP - uint8_t wupa[] = { ISO14443A_CMD_WUPA }; - - // if magsafe, set it outofbounds - if (use_magsafe) { - wupa[0] = MAGSAFE_CMD_WUPA_4; - } - - if (use_ecp) { - // In case a device was already selected, we send a S-BLOCK deselect to bring it into an idle state so it can be selected again - uint8_t deselect_cmd[] = {0xc2, 0xe0, 0xb4}; - ReaderTransmit(deselect_cmd, sizeof(deselect_cmd), NULL); - // Read response if present - (void) ReaderReceive(resp, resp_par); - } +static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters parameters) { + #define WUPA_RETRY_TIMEOUT 10 uint32_t save_iso14a_timeout = iso14a_get_timeout(); iso14a_set_timeout(1236 / 128 + 1); // response to WUPA is expected at exactly 1236/fc. No need to wait longer. bool first_try = true; - uint32_t retry_timeout = use_ecp ? ECP_RETRY_TIMEOUT : WUPA_RETRY_TIMEOUT; + uint32_t retry_timeout = WUPA_RETRY_TIMEOUT * parameters.frame_count + parameters.extra_timeout; uint32_t start_time; int len; - // we may need several tries if we did send an unknown command or a wrong authentication before... + uint8_t current_frame = 0; + do { - if (use_ecp && !first_try) { - uint8_t ecp[] = { 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}; - ReaderTransmit(ecp, sizeof(ecp), NULL); - SpinDelay(ECP_DELAY); + iso14a_polling_frame frame_parameters = parameters.frames[current_frame]; + + if (frame_parameters.last_byte_bits == 8) { + ReaderTransmit(frame_parameters.frame, frame_parameters.frame_length, NULL); + + } else { + ReaderTransmitBitsPar(frame_parameters.frame, frame_parameters.last_byte_bits, NULL, NULL); } - if (use_magsafe) { - if (wupa[0] == MAGSAFE_CMD_WUPA_4) { - wupa[0] = MAGSAFE_CMD_WUPA_1; - } else { - wupa[0]++; - } + if (frame_parameters.extra_delay) { + SpinDelay(frame_parameters.extra_delay); } - - // Broadcast for a card, WUPA (0x52) will force response from all cards in the field - ReaderTransmitBitsPar(wupa, 7, NULL, NULL); + // Receive the ATQA len = ReaderReceive(resp, resp_par); @@ -2568,16 +2605,33 @@ static int GetATQA(uint8_t *resp, uint8_t *resp_par, bool use_ecp, bool use_mags } first_try = false; + + // Go over frame configurations + current_frame = current_frame < (parameters.frame_count - 1) ? current_frame + 1 : 0; } while (len == 0 && GetTickCountDelta(start_time) <= retry_timeout); iso14a_set_timeout(save_iso14a_timeout); return len; } + int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats) { return iso14443a_select_cardEx(uid_ptr, p_card, cuid_ptr, anticollision, num_cascades, no_rats, false, false); } + +// This method is temporary. Main intention is to move "special" polling frame configuration to the client +iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe) { + if (use_ecp && use_magsafe) { + return FULL_POLLING_PARAMETERS; + } else if (use_ecp) { + return ECP_POLLING_PARAMETERS; + } else if (use_magsafe) { + return MAGSAFE_POLLING_PARAMETERS; + } + return WUPA_POLLING_PARAMETERS; +} + // performs iso14443a anticollision (optional) and card select procedure // fills the uid and cuid pointer unless NULL // fills the card info record unless NULL @@ -2599,7 +2653,7 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint p_card->ats_len = 0; } - if (GetATQA(resp, resp_par, use_ecp, use_magsafe) == false) { + if (GetATQA(resp, resp_par, iso14a_get_polling_parameters(use_ecp, use_magsafe)) == false) { return 0; } @@ -2624,11 +2678,11 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint memcpy(p_card->uid, resp, 4); // select again? - if (GetATQA(resp, resp_par, false, false) == false) { + if (GetATQA(resp, resp_par, WUPA_POLLING_PARAMETERS) == false) { return 0; } - if (GetATQA(resp, resp_par, false, false) == false) { + if (GetATQA(resp, resp_par, WUPA_POLLING_PARAMETERS) == false) { return 0; } @@ -2827,7 +2881,7 @@ int iso14443a_fast_select_card(uint8_t *uid_ptr, uint8_t num_cascades) { uint8_t sak = 0x04; // cascade uid int cascade_level = 0; - if (!GetATQA(resp, resp_par, false, false)) { + if (!GetATQA(resp, resp_par, WUPA_POLLING_PARAMETERS)) { return 0; } diff --git a/armsrc/iso14443a.h b/armsrc/iso14443a.h index 104d6b680..186bebfb4 100644 --- a/armsrc/iso14443a.h +++ b/armsrc/iso14443a.h @@ -108,6 +108,24 @@ typedef enum { RESP_INDEX_PACK, } resp_index_t; +// Defines a frame that will be used in a polling sequence +// ECP Frames are up to (7 + 16) bytes long, this config should cover future and other cases +typedef struct { + uint8_t frame[32]; + uint8_t frame_length; + uint8_t last_byte_bits; + uint16_t extra_delay; +} iso14a_polling_frame; + +// Defines polling sequence configuration +// 4 magsafe, 1 wupa, 1 reqa, 1 ecp, 1 extra +typedef struct { + iso14a_polling_frame frames[8]; + uint8_t frame_count; + uint16_t extra_timeout; +} iso14a_polling_parameters; + + #ifndef AddCrc14A # define AddCrc14A(data, len) compute_crc(CRC_14443_A, (data), (len), (data)+(len), (data)+(len)+1) #endif @@ -148,6 +166,7 @@ void ReaderTransmitBitsPar(uint8_t *frame, uint16_t bits, uint8_t *par, uint32_t void ReaderTransmitPar(uint8_t *frame, uint16_t len, uint8_t *par, uint32_t *timing); uint16_t ReaderReceive(uint8_t *receivedAnswer, uint8_t *par); +iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe); void iso14443a_setup(uint8_t fpga_minor_mode); int iso14_apdu(uint8_t *cmd, uint16_t cmd_len, bool send_chaining, void *data, uint8_t *res); int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats); diff --git a/client/resources/ecplist.json b/client/resources/ecplist.json index 3902e2f2d..991f79f2b 100644 --- a/client/resources/ecplist.json +++ b/client/resources/ecplist.json @@ -58,7 +58,7 @@ }, { - "value": "6a02c3020602ffff", + "value": "6a02c3020002ffff", "name": "Access: Hotel: Hilton", "description": "TCI might be a wildcard before a reservation is made" }, From ad5b58436f163c4fd7d13043a87ecd7a9c0ddbb2 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 16 Jul 2023 15:22:24 +0200 Subject: [PATCH 020/299] text --- client/src/cmdhftexkom.c | 98 ++++++++++++++++++++++------------------ 1 file changed, 54 insertions(+), 44 deletions(-) diff --git a/client/src/cmdhftexkom.c b/client/src/cmdhftexkom.c index 2b54480ca..4164060f7 100644 --- a/client/src/cmdhftexkom.c +++ b/client/src/cmdhftexkom.c @@ -253,7 +253,7 @@ static bool TexcomTK13Decode(uint32_t *implengths, uint32_t implengthslen, char return false; if (verbose) - PrintAndLogEx(INFO, "raw bit string [%zu]: %s", strlen(bitstring), bitstring); + PrintAndLogEx(INFO, "raw bit string [%3zu]... %s", strlen(bitstring), bitstring); // add trailing impulse (some tags just ignore it) if (strlen(bitstring) % 2 != 0) { @@ -280,7 +280,7 @@ static bool TexcomTK13Decode(uint32_t *implengths, uint32_t implengthslen, char return false; if (verbose) - PrintAndLogEx(INFO, "bit string [%zu]: %s", strlen(cbitstring), cbitstring); + PrintAndLogEx(INFO, "bit string [%3zu].... %s", strlen(cbitstring), cbitstring); return ((strlen(cbitstring) == 64) && (strncmp(cbitstring, "1111111111111111", 16) == 0)); } @@ -324,8 +324,8 @@ static bool TexcomTK15Decode(uint32_t *implengths, uint32_t implengthslen, char return false; if (verbose) { - PrintAndLogEx(INFO, "raw bit string [%zu]: %s", strlen(bitstring), bitstring); - PrintAndLogEx(INFO, "bit string [%zu]: %s", strlen(cbitstring), cbitstring); + PrintAndLogEx(INFO, "raw bit string [%3zu]... %s", strlen(bitstring), bitstring); + PrintAndLogEx(INFO, "bit string [%3zu]....... %s", strlen(cbitstring), cbitstring); } return ((strlen(cbitstring) == 64) && (strncmp(cbitstring, "1111111111111111", 16) == 0)); @@ -420,7 +420,7 @@ static bool TexcomGeneralDecode(uint32_t *implengths, uint32_t implengthslen, ch } } if (verbose) - PrintAndLogEx(INFO, "General raw bit string [%zu]: %s", strlen(bitstring), bitstring); + PrintAndLogEx(INFO, "General raw bit string [%zu]... %s", strlen(bitstring), bitstring); return (!biterror && strlen(bitstring) > 0); } @@ -588,30 +588,38 @@ int read_texkom_uid(bool loop, bool verbose) { } bool crc = (TexcomTK13CRC(&card.tcode[3]) == card.tcode[7]); + bool printed = false; if (card.tcode[2] == 0x63) { - PrintAndLogEx(INFO, "TYPE..... TK13"); + PrintAndLogEx(INFO, "TYPE..... " _YELLOW_("TK13")); PrintAndLogEx(INFO, "UID...... " _GREEN_("%s"), sprint_hex(&card.tcode[3], 4)); if (verbose) { PrintAndLogEx(INFO, "CRC...... %s", (crc) ? _GREEN_("ok") : _RED_("fail")); } + printed = true; } else if (card.tcode[2] == 0xCA) { - PrintAndLogEx(INFO, "TYPE..... TK17"); + PrintAndLogEx(INFO, "TYPE..... " _YELLOW_("TK17")); PrintAndLogEx(INFO, "UID...... " _GREEN_("%s"), sprint_hex(&card.tcode[3], 4)); if (verbose) { PrintAndLogEx(INFO, "CRC...... %s", (crc) ? _GREEN_("ok") : _RED_("fail")); } + printed = true; } else if (card.tcode[2] == 0xFF && card.tcode[3] == 0xFF) { - PrintAndLogEx(INFO, "TYPE..... MMBIT"); + PrintAndLogEx(INFO, "TYPE..... " _YELLOW_("MMBIT")); PrintAndLogEx(INFO, "UID...... " _GREEN_("%s"), sprint_hex(&card.tcode[4], 3)); - crc = (MMBITCRC(&card.tcode[4]) == card.tcode[7] >> 4); if (verbose) { + crc = (MMBITCRC(&card.tcode[4]) == card.tcode[7] >> 4); PrintAndLogEx(INFO, "CRC...... %s", (crc) ? _GREEN_("ok") : _RED_("fail")); } + printed = true; } + if (verbose) { - PrintAndLogEx(INFO, "Raw... %s", sprint_hex(card.tcode, 8)); - PrintAndLogEx(INFO, "Raw Reversed... %s", sprint_hex(card.rtcode, 8)); + PrintAndLogEx(INFO, "Raw....... " _YELLOW_("%s"), sprint_hex(card.tcode, 8)); + PrintAndLogEx(INFO, "Raw rev... " _YELLOW_("%s"), sprint_hex(card.rtcode, 8)); + } + if (printed && loop) { + PrintAndLogEx(NORMAL, ""); } } @@ -753,82 +761,84 @@ static int CmdHFTexkomReader(const char *Cmd) { TexcomReverseCode(tcode, 8, rtcode); if (verbose) { - PrintAndLogEx(INFO, "Hex code: %s", sprint_hex(tcode, 8)); - PrintAndLogEx(INFO, "Hex code reversed: %s", sprint_hex(rtcode, 8)); + PrintAndLogEx(INFO, "Hex code............ %s", sprint_hex(tcode, 8)); + PrintAndLogEx(INFO, "Hex code rev........ %s", sprint_hex(rtcode, 8)); } if (tcode[0] == 0xff && tcode[1] == 0xff) { // decoding code if (verbose == false) { - PrintAndLogEx(INFO, "Texkom: %s", sprint_hex(tcode, 8)); - PrintAndLogEx(INFO, "Texkom duplicator: %s", sprint_hex(rtcode, 8)); + PrintAndLogEx(SUCCESS, "Texkom.............. %s", sprint_hex(tcode, 8)); + PrintAndLogEx(SUCCESS, "Texkom duplicator... %s", sprint_hex(rtcode, 8)); } if (codefound == TexkomModTK13) - PrintAndLogEx(INFO, "modulation: TK13"); + PrintAndLogEx(SUCCESS, "Modulation.......... " _YELLOW_("TK13")); else if (codefound == TexkomModTK15) - PrintAndLogEx(INFO, "modulation: TK15"); + PrintAndLogEx(SUCCESS, "Modulation.......... " _YELLOW_("TK15")); else if (codefound == TexkomModTK17) - PrintAndLogEx(INFO, "modulation: TK17"); + PrintAndLogEx(SUCCESS, "Modulation.......... " _YELLOW_("TK17")); else - PrintAndLogEx(INFO, "modulation: unknown"); + PrintAndLogEx(INFO, "Modulation.......... " _YELLOW_("unknown")); if (tcode[2] == 0x63) { // TK13 and TK15. differs only by timings. TK15 has impulse 0 and 1 lengths very close to each other. if (codefound == TexkomModTK13) - PrintAndLogEx(INFO, "type : TK13"); + PrintAndLogEx(SUCCESS, "Type................ " _YELLOW_("TK13")); else if (codefound == TexkomModTK15) - PrintAndLogEx(INFO, "type : TK15"); + PrintAndLogEx(SUCCESS, "Type................ " _YELLOW_("TK15")); else - PrintAndLogEx(WARNING, " mod type: WRONG"); - - PrintAndLogEx(INFO, "uid : %s", sprint_hex(&tcode[3], 4)); + PrintAndLogEx(WARNING, "Type................ " _RED_("fail")); + PrintAndLogEx(SUCCESS, "UID................. " _YELLOW_("%s"), sprint_hex(&tcode[3], 4)); + PrintAndLogEx(INFO, "CRC................ " NOLF); if (TexcomTK13CRC(&tcode[3]) == tcode[7]) - PrintAndLogEx(INFO, "crc : OK"); + PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); else - PrintAndLogEx(WARNING, "crc : WRONG"); + PrintAndLogEx(NORMAL, "( " _RED_("fail") " )"); } else if (tcode[2] == 0xFF && tcode[3] == 0xFF) { // MMBIT if (codefound != TexkomModTK13 && codefound != TexkomModTK15) { - PrintAndLogEx(WARNING, " mod type: WRONG"); + PrintAndLogEx(WARNING, "Mod type............ " _RED_("fail")); } - PrintAndLogEx(INFO, "type : MMBIT"); - PrintAndLogEx(INFO, "uid : %s", sprint_hex(&tcode[4], 3)); - + PrintAndLogEx(SUCCESS, "Type................ " _YELLOW_("MMBIT")); + PrintAndLogEx(SUCCESS, "UID................. " _YELLOW_("%s"), sprint_hex(&tcode[4], 3)); + PrintAndLogEx(INFO, "CRC................ " NOLF); if (MMBITCRC(&tcode[4]) == tcode[7] >> 4) - PrintAndLogEx(INFO, "crc : OK"); + PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); else - PrintAndLogEx(WARNING, "crc : WRONG"); + PrintAndLogEx(NORMAL, "( " _RED_("fail") " )"); + + } else if (tcode[2] == 0xCA) { // TK17 if (codefound != TexkomModTK17) { - PrintAndLogEx(WARNING, " mod type: WRONG"); + PrintAndLogEx(WARNING, "Mod type............ " _RED_("fail")); } - PrintAndLogEx(INFO, "type : TK17"); - PrintAndLogEx(INFO, "uid : %s", sprint_hex(&tcode[3], 4)); - + PrintAndLogEx(SUCCESS, "Type............... " _YELLOW_("TK17")); + PrintAndLogEx(SUCCESS, "UID................ " _YELLOW_("%s"), sprint_hex(&tcode[3], 4)); + PrintAndLogEx(INFO, "CRC................ " NOLF); if (TexcomTK17CRC(&tcode[3]) == tcode[7]) - PrintAndLogEx(INFO, "crc : OK"); + PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); else - PrintAndLogEx(WARNING, "crc : WRONG"); + PrintAndLogEx(NORMAL, "( " _RED_("fail") " )"); } else { - PrintAndLogEx(INFO, "type : unknown"); - PrintAndLogEx(INFO, "uid : %s (maybe)", sprint_hex(&tcode[3], 4)); + PrintAndLogEx(INFO, "Type............... unknown"); + PrintAndLogEx(INFO, "UID................ %s (maybe)", sprint_hex(&tcode[3], 4)); } } else { - PrintAndLogEx(ERR, "Code have no preamble FFFF: %s", sprint_hex(tcode, 8)); + PrintAndLogEx(ERR, "Code have no preamble FFFF... %s", sprint_hex(tcode, 8)); } } else { if (strlen(genbitstring) > 0) - PrintAndLogEx(INFO, "General decoding bitstring: %s", genbitstring); + PrintAndLogEx(INFO, "General decoding bitstring... %s", genbitstring); if (strlen(bitstring) > 0) - PrintAndLogEx(INFO, "last raw bit string [%zu]: %s", strlen(bitstring), bitstring); + PrintAndLogEx(INFO, "last raw bit string [%zu].... %s", strlen(bitstring), bitstring); if (strlen(cbitstring) > 0) - PrintAndLogEx(INFO, "last bit string [%zu]: %s", strlen(cbitstring), cbitstring); + PrintAndLogEx(INFO, "last bit string [%zu]........ %s", strlen(cbitstring), cbitstring); PrintAndLogEx(ERR, "Texkom card is not found"); } From 8fc05ad2a5bc01cf5bd00000fff297c19405f65d Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 16 Jul 2023 15:30:43 +0200 Subject: [PATCH 021/299] style --- armsrc/iso14443a.c | 66 +++++++++++++++++++++++----------------------- armsrc/iso14443a.h | 6 ++--- doc/commands.json | 4 +-- 3 files changed, 38 insertions(+), 38 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 26a743114..da1bfbc2f 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -143,62 +143,62 @@ Default HF 14a config is set to: static hf14a_config hf14aconfig = { 0, 0, 0, 0, 0 } ; -// Polling frames and configurations +// Polling frames and configurations -/*static iso14a_polling_frame REQA_FRAME = { - { 0x26 }, 1, 7, 0 +/*static iso14a_polling_frame REQA_FRAME = { + { 0x26 }, 1, 7, 0 };*/ -static const iso14a_polling_frame WUPA_FRAME = { +static const iso14a_polling_frame WUPA_FRAME = { { 0x52 }, 1, 7, 0, }; -static const iso14a_polling_frame MAGWUPA1_FRAME = { - { 0x7A }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA1_FRAME = { + { 0x7A }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA2_FRAME = { - { 0x7B }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA2_FRAME = { + { 0x7B }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA3_FRAME = { - { 0x7C }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA3_FRAME = { + { 0x7C }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA4_FRAME = { - { 0x7D }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA4_FRAME = { + { 0x7D }, 1, 7, 0 }; -static const iso14a_polling_frame ECP_FRAME = { - .frame={ 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, - .frame_length=15, - .last_byte_bits=8, - .extra_delay=0 +static const iso14a_polling_frame ECP_FRAME = { + .frame = { 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, + .frame_length = 15, + .last_byte_bits = 8, + .extra_delay = 0 }; static iso14a_polling_parameters WUPA_POLLING_PARAMETERS = { - .frames={ WUPA_FRAME }, - .frame_count=1, - .extra_timeout=0, + .frames = { WUPA_FRAME }, + .frame_count = 1, + .extra_timeout = 0, }; static iso14a_polling_parameters MAGSAFE_POLLING_PARAMETERS = { - .frames={ WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, - .frame_count=5, - .extra_timeout=0 + .frames = { WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count = 5, + .extra_timeout = 0 }; // Extra 100ms give enough time for Apple devices to proccess field info and make a decision static iso14a_polling_parameters ECP_POLLING_PARAMETERS = { - .frames={ WUPA_FRAME, ECP_FRAME }, - .frame_count=2, - .extra_timeout=100 + .frames = { WUPA_FRAME, ECP_FRAME }, + .frame_count = 2, + .extra_timeout = 100 }; static iso14a_polling_parameters FULL_POLLING_PARAMETERS = { - .frames={ WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, - .frame_count=6, - .extra_timeout=100 + .frames = { WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count = 6, + .extra_timeout = 100 }; @@ -2570,7 +2570,7 @@ static void iso14a_set_ATS_times(const uint8_t *ats) { static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters parameters) { - #define WUPA_RETRY_TIMEOUT 10 +#define WUPA_RETRY_TIMEOUT 10 uint32_t save_iso14a_timeout = iso14a_get_timeout(); iso14a_set_timeout(1236 / 128 + 1); // response to WUPA is expected at exactly 1236/fc. No need to wait longer. @@ -2587,7 +2587,7 @@ static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters p if (frame_parameters.last_byte_bits == 8) { ReaderTransmit(frame_parameters.frame, frame_parameters.frame_length, NULL); - + } else { ReaderTransmitBitsPar(frame_parameters.frame, frame_parameters.last_byte_bits, NULL, NULL); } @@ -2595,7 +2595,7 @@ static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters p if (frame_parameters.extra_delay) { SpinDelay(frame_parameters.extra_delay); } - + // Receive the ATQA len = ReaderReceive(resp, resp_par); @@ -2628,7 +2628,7 @@ iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_m return ECP_POLLING_PARAMETERS; } else if (use_magsafe) { return MAGSAFE_POLLING_PARAMETERS; - } + } return WUPA_POLLING_PARAMETERS; } diff --git a/armsrc/iso14443a.h b/armsrc/iso14443a.h index 186bebfb4..80a223379 100644 --- a/armsrc/iso14443a.h +++ b/armsrc/iso14443a.h @@ -120,9 +120,9 @@ typedef struct { // Defines polling sequence configuration // 4 magsafe, 1 wupa, 1 reqa, 1 ecp, 1 extra typedef struct { - iso14a_polling_frame frames[8]; - uint8_t frame_count; - uint16_t extra_timeout; + iso14a_polling_frame frames[8]; + uint8_t frame_count; + uint16_t extra_timeout; } iso14a_polling_parameters; diff --git a/doc/commands.json b/doc/commands.json index 40ae8cbc9..775087e22 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -4806,7 +4806,7 @@ }, "hf mf staticnested": { "command": "hf mf staticnested", - "description": "Execute Nested attack against MIFARE Classic card with static nonce for key recovery. Supply a known key from one block to recover all keys", + "description": "Execute static nested attack against MIFARE Classic card with static nonce for key recovery. Supply a known key from one block to recover all keys", "notes": [ "hf mf staticnested --mini --blk 0 -a -k FFFFFFFFFFFF", "hf mf staticnested --1k --blk 0 -a -k FFFFFFFFFFFF", @@ -11689,6 +11689,6 @@ "metadata": { "commands_extracted": 679, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-07-14T16:33:40" + "extracted_on": "2023-07-16T13:30:30" } } \ No newline at end of file From c4f1b0768dd290026b91dfb4d9a77242fabd48a5 Mon Sep 17 00:00:00 2001 From: kormax Date: Sun, 16 Jul 2023 16:49:31 +0300 Subject: [PATCH 022/299] Pass polling config via pointer instead of by-value, thus saving RAM --- armsrc/iso14443a.c | 100 ++++++++++++++++++++++----------------------- armsrc/iso14443a.h | 8 ++-- 2 files changed, 54 insertions(+), 54 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index da1bfbc2f..8cab781e4 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -143,62 +143,62 @@ Default HF 14a config is set to: static hf14a_config hf14aconfig = { 0, 0, 0, 0, 0 } ; -// Polling frames and configurations +// Polling frames and configurations -/*static iso14a_polling_frame REQA_FRAME = { - { 0x26 }, 1, 7, 0 +/*static iso14a_polling_frame REQA_FRAME = { + { 0x26 }, 1, 7, 0 };*/ -static const iso14a_polling_frame WUPA_FRAME = { +static const iso14a_polling_frame WUPA_FRAME = { { 0x52 }, 1, 7, 0, }; -static const iso14a_polling_frame MAGWUPA1_FRAME = { - { 0x7A }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA1_FRAME = { + { 0x7A }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA2_FRAME = { - { 0x7B }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA2_FRAME = { + { 0x7B }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA3_FRAME = { - { 0x7C }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA3_FRAME = { + { 0x7C }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA4_FRAME = { - { 0x7D }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA4_FRAME = { + { 0x7D }, 1, 7, 0 }; -static const iso14a_polling_frame ECP_FRAME = { - .frame = { 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, - .frame_length = 15, - .last_byte_bits = 8, - .extra_delay = 0 +static const iso14a_polling_frame ECP_FRAME = { + .frame={ 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, + .frame_length=15, + .last_byte_bits=8, + .extra_delay=0 }; static iso14a_polling_parameters WUPA_POLLING_PARAMETERS = { - .frames = { WUPA_FRAME }, - .frame_count = 1, - .extra_timeout = 0, + .frames={ WUPA_FRAME }, + .frame_count=1, + .extra_timeout=0, }; static iso14a_polling_parameters MAGSAFE_POLLING_PARAMETERS = { - .frames = { WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, - .frame_count = 5, - .extra_timeout = 0 + .frames={ WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count=5, + .extra_timeout=0 }; // Extra 100ms give enough time for Apple devices to proccess field info and make a decision static iso14a_polling_parameters ECP_POLLING_PARAMETERS = { - .frames = { WUPA_FRAME, ECP_FRAME }, - .frame_count = 2, - .extra_timeout = 100 + .frames={ WUPA_FRAME, ECP_FRAME }, + .frame_count=2, + .extra_timeout=100 }; static iso14a_polling_parameters FULL_POLLING_PARAMETERS = { - .frames = { WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, - .frame_count = 6, - .extra_timeout = 100 + .frames={ WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count=6, + .extra_timeout=100 }; @@ -2569,33 +2569,32 @@ static void iso14a_set_ATS_times(const uint8_t *ats) { } -static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters parameters) { -#define WUPA_RETRY_TIMEOUT 10 +static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters *polling_parameters) { + #define WUPA_RETRY_TIMEOUT 10 uint32_t save_iso14a_timeout = iso14a_get_timeout(); iso14a_set_timeout(1236 / 128 + 1); // response to WUPA is expected at exactly 1236/fc. No need to wait longer. bool first_try = true; - uint32_t retry_timeout = WUPA_RETRY_TIMEOUT * parameters.frame_count + parameters.extra_timeout; + uint32_t retry_timeout = WUPA_RETRY_TIMEOUT * polling_parameters->frame_count + polling_parameters->extra_timeout; uint32_t start_time; int len; uint8_t current_frame = 0; do { - iso14a_polling_frame frame_parameters = parameters.frames[current_frame]; - - if (frame_parameters.last_byte_bits == 8) { - ReaderTransmit(frame_parameters.frame, frame_parameters.frame_length, NULL); + iso14a_polling_frame *frame_parameters = &polling_parameters->frames[current_frame]; + if (frame_parameters->last_byte_bits == 8) { + ReaderTransmit(frame_parameters->frame, frame_parameters->frame_length, NULL); } else { - ReaderTransmitBitsPar(frame_parameters.frame, frame_parameters.last_byte_bits, NULL, NULL); + ReaderTransmitBitsPar(frame_parameters->frame, frame_parameters->last_byte_bits, NULL, NULL); } - if (frame_parameters.extra_delay) { - SpinDelay(frame_parameters.extra_delay); + if (frame_parameters->extra_delay) { + SpinDelay(frame_parameters->extra_delay); } - + // Receive the ATQA len = ReaderReceive(resp, resp_par); @@ -2606,8 +2605,8 @@ static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters p first_try = false; - // Go over frame configurations - current_frame = current_frame < (parameters.frame_count - 1) ? current_frame + 1 : 0; + // Go over frame configurations, loop back when we reach the end + current_frame = current_frame < (polling_parameters->frame_count - 1) ? current_frame + 1 : 0; } while (len == 0 && GetTickCountDelta(start_time) <= retry_timeout); iso14a_set_timeout(save_iso14a_timeout); @@ -2616,7 +2615,7 @@ static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters p int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats) { - return iso14443a_select_cardEx(uid_ptr, p_card, cuid_ptr, anticollision, num_cascades, no_rats, false, false); + return iso14443a_select_cardEx(uid_ptr, p_card, cuid_ptr, anticollision, num_cascades, no_rats, &WUPA_POLLING_PARAMETERS); } @@ -2628,7 +2627,7 @@ iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_m return ECP_POLLING_PARAMETERS; } else if (use_magsafe) { return MAGSAFE_POLLING_PARAMETERS; - } + } return WUPA_POLLING_PARAMETERS; } @@ -2638,7 +2637,7 @@ iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_m // if anticollision is false, then the UID must be provided in uid_ptr[] // and num_cascades must be set (1: 4 Byte UID, 2: 7 Byte UID, 3: 10 Byte UID) // requests ATS unless no_rats is true -int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats, bool use_ecp, bool use_magsafe) { +int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats, iso14a_polling_parameters *polling_parameters) { uint8_t resp[MAX_FRAME_SIZE] = {0}; // theoretically. A usual RATS will be much smaller uint8_t resp_par[MAX_PARITY_SIZE] = {0}; @@ -2653,7 +2652,7 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint p_card->ats_len = 0; } - if (GetATQA(resp, resp_par, iso14a_get_polling_parameters(use_ecp, use_magsafe)) == false) { + if (GetATQA(resp, resp_par, polling_parameters) == false) { return 0; } @@ -2678,11 +2677,11 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint memcpy(p_card->uid, resp, 4); // select again? - if (GetATQA(resp, resp_par, WUPA_POLLING_PARAMETERS) == false) { + if (GetATQA(resp, resp_par, &WUPA_POLLING_PARAMETERS) == false) { return 0; } - if (GetATQA(resp, resp_par, WUPA_POLLING_PARAMETERS) == false) { + if (GetATQA(resp, resp_par, &WUPA_POLLING_PARAMETERS) == false) { return 0; } @@ -2881,7 +2880,7 @@ int iso14443a_fast_select_card(uint8_t *uid_ptr, uint8_t num_cascades) { uint8_t sak = 0x04; // cascade uid int cascade_level = 0; - if (!GetATQA(resp, resp_par, WUPA_POLLING_PARAMETERS)) { + if (!GetATQA(resp, resp_par, &WUPA_POLLING_PARAMETERS)) { return 0; } @@ -3089,7 +3088,8 @@ void ReaderIso14443a(PacketCommandNG *c) { // if failed selecting, turn off antenna and quite. if (!(param & ISO14A_NO_SELECT)) { iso14a_card_select_t *card = (iso14a_card_select_t *)buf; - arg0 = iso14443a_select_cardEx(NULL, card, NULL, true, 0, (param & ISO14A_NO_RATS), (param & ISO14A_USE_ECP), (param & ISO14A_USE_MAGSAFE)); + iso14a_polling_parameters polling_parameters = iso14a_get_polling_parameters(param & ISO14A_USE_ECP, param & ISO14A_USE_MAGSAFE); + arg0 = iso14443a_select_cardEx(NULL, card, NULL, true, 0, (param & ISO14A_NO_RATS), &polling_parameters); FpgaDisableTracing(); reply_mix(CMD_ACK, arg0, card->uidlen, 0, buf, sizeof(iso14a_card_select_t)); diff --git a/armsrc/iso14443a.h b/armsrc/iso14443a.h index 80a223379..98793a02f 100644 --- a/armsrc/iso14443a.h +++ b/armsrc/iso14443a.h @@ -120,9 +120,9 @@ typedef struct { // Defines polling sequence configuration // 4 magsafe, 1 wupa, 1 reqa, 1 ecp, 1 extra typedef struct { - iso14a_polling_frame frames[8]; - uint8_t frame_count; - uint16_t extra_timeout; + iso14a_polling_frame frames[8]; + uint8_t frame_count; + uint16_t extra_timeout; } iso14a_polling_parameters; @@ -170,7 +170,7 @@ iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_m void iso14443a_setup(uint8_t fpga_minor_mode); int iso14_apdu(uint8_t *cmd, uint16_t cmd_len, bool send_chaining, void *data, uint8_t *res); int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats); -int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats, bool use_ecp, bool use_magsafe); +int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats, iso14a_polling_parameters *polling_parameters); int iso14443a_fast_select_card(uint8_t *uid_ptr, uint8_t num_cascades); void iso14a_set_trigger(bool enable); From 45ca9ab4d6e7f492ea8d0880231e80a8a33fa6e0 Mon Sep 17 00:00:00 2001 From: kormax Date: Sun, 16 Jul 2023 16:56:07 +0300 Subject: [PATCH 023/299] Reduce struct memory footprint by reducing array sizes --- armsrc/iso14443a.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/armsrc/iso14443a.h b/armsrc/iso14443a.h index 98793a02f..abe04ac46 100644 --- a/armsrc/iso14443a.h +++ b/armsrc/iso14443a.h @@ -109,18 +109,18 @@ typedef enum { } resp_index_t; // Defines a frame that will be used in a polling sequence -// ECP Frames are up to (7 + 16) bytes long, this config should cover future and other cases +// ECP Frames are up to (7 + 16) bytes long, 24 bytes should cover future and other cases typedef struct { - uint8_t frame[32]; + uint8_t frame[24]; uint8_t frame_length; uint8_t last_byte_bits; uint16_t extra_delay; } iso14a_polling_frame; // Defines polling sequence configuration -// 4 magsafe, 1 wupa, 1 reqa, 1 ecp, 1 extra +// 6 would be enough for 4 magsafe, 1 wupa, 1 ecp, typedef struct { - iso14a_polling_frame frames[8]; + iso14a_polling_frame frames[6]; uint8_t frame_count; uint16_t extra_timeout; } iso14a_polling_parameters; From a9cba025144419b8bf7b1ac784888ceca43b0722 Mon Sep 17 00:00:00 2001 From: kormax Date: Sun, 16 Jul 2023 17:39:32 +0300 Subject: [PATCH 024/299] Move custom polling frame generation logic to client --- armsrc/iso14443a.c | 65 ++++----------------------------- armsrc/iso14443a.h | 19 ---------- client/src/cmdhf14a.c | 83 +++++++++++++++++++++++++++++++++++++++---- client/src/cmdhf14a.h | 1 + include/mifare.h | 20 ++++++++++- 5 files changed, 102 insertions(+), 86 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 8cab781e4..3619155da 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -145,61 +145,16 @@ static hf14a_config hf14aconfig = { 0, 0, 0, 0, 0 } ; // Polling frames and configurations -/*static iso14a_polling_frame REQA_FRAME = { - { 0x26 }, 1, 7, 0 -};*/ - static const iso14a_polling_frame WUPA_FRAME = { { 0x52 }, 1, 7, 0, }; -static const iso14a_polling_frame MAGWUPA1_FRAME = { - { 0x7A }, 1, 7, 0 -}; - -static const iso14a_polling_frame MAGWUPA2_FRAME = { - { 0x7B }, 1, 7, 0 -}; - -static const iso14a_polling_frame MAGWUPA3_FRAME = { - { 0x7C }, 1, 7, 0 -}; - -static const iso14a_polling_frame MAGWUPA4_FRAME = { - { 0x7D }, 1, 7, 0 -}; - -static const iso14a_polling_frame ECP_FRAME = { - .frame={ 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, - .frame_length=15, - .last_byte_bits=8, - .extra_delay=0 -}; - static iso14a_polling_parameters WUPA_POLLING_PARAMETERS = { .frames={ WUPA_FRAME }, .frame_count=1, .extra_timeout=0, }; -static iso14a_polling_parameters MAGSAFE_POLLING_PARAMETERS = { - .frames={ WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, - .frame_count=5, - .extra_timeout=0 -}; - -// Extra 100ms give enough time for Apple devices to proccess field info and make a decision -static iso14a_polling_parameters ECP_POLLING_PARAMETERS = { - .frames={ WUPA_FRAME, ECP_FRAME }, - .frame_count=2, - .extra_timeout=100 -}; - -static iso14a_polling_parameters FULL_POLLING_PARAMETERS = { - .frames={ WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, - .frame_count=6, - .extra_timeout=100 -}; void printHf14aConfig(void) { @@ -2619,18 +2574,6 @@ int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32 } -// This method is temporary. Main intention is to move "special" polling frame configuration to the client -iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe) { - if (use_ecp && use_magsafe) { - return FULL_POLLING_PARAMETERS; - } else if (use_ecp) { - return ECP_POLLING_PARAMETERS; - } else if (use_magsafe) { - return MAGSAFE_POLLING_PARAMETERS; - } - return WUPA_POLLING_PARAMETERS; -} - // performs iso14443a anticollision (optional) and card select procedure // fills the uid and cuid pointer unless NULL // fills the card info record unless NULL @@ -3088,8 +3031,12 @@ void ReaderIso14443a(PacketCommandNG *c) { // if failed selecting, turn off antenna and quite. if (!(param & ISO14A_NO_SELECT)) { iso14a_card_select_t *card = (iso14a_card_select_t *)buf; - iso14a_polling_parameters polling_parameters = iso14a_get_polling_parameters(param & ISO14A_USE_ECP, param & ISO14A_USE_MAGSAFE); - arg0 = iso14443a_select_cardEx(NULL, card, NULL, true, 0, (param & ISO14A_NO_RATS), &polling_parameters); + + arg0 = iso14443a_select_cardEx( + NULL, card, NULL, true, 0, (param & ISO14A_NO_RATS), + (param & ISO14A_USE_CUSTOM_POLLING) ? (iso14a_polling_parameters *)cmd : &WUPA_POLLING_PARAMETER + ); + // This can be improved by adding a cmd parser pointer and moving it by struct length to allow combining data with polling params FpgaDisableTracing(); reply_mix(CMD_ACK, arg0, card->uidlen, 0, buf, sizeof(iso14a_card_select_t)); diff --git a/armsrc/iso14443a.h b/armsrc/iso14443a.h index abe04ac46..817ee7df4 100644 --- a/armsrc/iso14443a.h +++ b/armsrc/iso14443a.h @@ -108,24 +108,6 @@ typedef enum { RESP_INDEX_PACK, } resp_index_t; -// Defines a frame that will be used in a polling sequence -// ECP Frames are up to (7 + 16) bytes long, 24 bytes should cover future and other cases -typedef struct { - uint8_t frame[24]; - uint8_t frame_length; - uint8_t last_byte_bits; - uint16_t extra_delay; -} iso14a_polling_frame; - -// Defines polling sequence configuration -// 6 would be enough for 4 magsafe, 1 wupa, 1 ecp, -typedef struct { - iso14a_polling_frame frames[6]; - uint8_t frame_count; - uint16_t extra_timeout; -} iso14a_polling_parameters; - - #ifndef AddCrc14A # define AddCrc14A(data, len) compute_crc(CRC_14443_A, (data), (len), (data)+(len), (data)+(len)+1) #endif @@ -166,7 +148,6 @@ void ReaderTransmitBitsPar(uint8_t *frame, uint16_t bits, uint8_t *par, uint32_t void ReaderTransmitPar(uint8_t *frame, uint16_t len, uint8_t *par, uint32_t *timing); uint16_t ReaderReceive(uint8_t *receivedAnswer, uint8_t *par); -iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe); void iso14443a_setup(uint8_t fpga_minor_mode); int iso14_apdu(uint8_t *cmd, uint16_t cmd_len, bool send_chaining, void *data, uint8_t *res); int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats); diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index a8ec8a60d..61423cc48 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -434,6 +434,71 @@ int Hf14443_4aGetCardData(iso14a_card_select_t *card) { return 0; } +iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe) { + + iso14a_polling_frame WUPA_FRAME = { + { 0x52 }, 1, 7, 0, + }; + + iso14a_polling_frame MAGWUPA1_FRAME = { + { 0x7A }, 1, 7, 0 + }; + + iso14a_polling_frame MAGWUPA2_FRAME = { + { 0x7B }, 1, 7, 0 + }; + + iso14a_polling_frame MAGWUPA3_FRAME = { + { 0x7C }, 1, 7, 0 + }; + + iso14a_polling_frame MAGWUPA4_FRAME = { + { 0x7D }, 1, 7, 0 + }; + + iso14a_polling_frame ECP_FRAME = { + .frame={ 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, + .frame_length=15, + .last_byte_bits=8, + .extra_delay=0 + }; + + iso14a_polling_parameters WUPA_POLLING_PARAMETERS = { + .frames={ WUPA_FRAME }, + .frame_count=1, + .extra_timeout=0, + }; + + iso14a_polling_parameters MAGSAFE_POLLING_PARAMETERS = { + .frames={ WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count=5, + .extra_timeout=0 + }; + + // Extra 100ms give enough time for Apple devices to proccess field info and make a decision + iso14a_polling_parameters ECP_POLLING_PARAMETERS = { + .frames={ WUPA_FRAME, ECP_FRAME }, + .frame_count=2, + .extra_timeout=100 + }; + + iso14a_polling_parameters FULL_POLLING_PARAMETERS = { + .frames={ WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count=6, + .extra_timeout=100 + }; + + if (use_ecp && use_magsafe) { + return FULL_POLLING_PARAMETERS; + } else if (use_ecp) { + return ECP_POLLING_PARAMETERS; + } else if (use_magsafe) { + return MAGSAFE_POLLING_PARAMETERS; + } + return WUPA_POLLING_PARAMETERS; +} + + static int CmdHF14AReader(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf 14a reader", @@ -473,12 +538,10 @@ static int CmdHF14AReader(const char *Cmd) { cm |= ISO14A_NO_RATS; } - if (arg_get_lit(ctx, 5)) { - cm |= ISO14A_USE_ECP; - } - - if (arg_get_lit(ctx, 6)) { - cm |= ISO14A_USE_MAGSAFE; + iso14a_polling_parameters polling_parameters; + if (arg_get_lit(ctx, 5) || arg_get_lit(ctx, 6)) { + cm |= ISO14A_USE_CUSTOM_POLLING; + polling_parameters = iso14a_get_polling_parameters(arg_get_lit(ctx, 5), arg_get_lit(ctx, 6)); } bool continuous = arg_get_lit(ctx, 7); @@ -494,7 +557,13 @@ static int CmdHF14AReader(const char *Cmd) { } do { clearCommandBuffer(); - SendCommandMIX(CMD_HF_ISO14443A_READER, cm, 0, 0, NULL, 0); + + if (cm & ISO14A_USE_CUSTOM_POLLING) { + SendCommandMIX(CMD_HF_ISO14443A_READER, cm, 0, 0, (uint8_t *)&polling_parameters, sizeof(polling_parameters)); + } else { + SendCommandMIX(CMD_HF_ISO14443A_READER, cm, 0, 0, NULL, 0); + } + if (ISO14A_CONNECT & cm) { PacketResponseNG resp; diff --git a/client/src/cmdhf14a.h b/client/src/cmdhf14a.h index a811db66b..ff6d80318 100644 --- a/client/src/cmdhf14a.h +++ b/client/src/cmdhf14a.h @@ -52,6 +52,7 @@ int Hf14443_4aGetCardData(iso14a_card_select_t *card); int ExchangeAPDU14a(uint8_t *datain, int datainlen, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen); int ExchangeRAW14a(uint8_t *datain, int datainlen, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, bool silentMode); +iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe); int SelectCard14443A_4(bool disconnect, bool verbose, iso14a_card_select_t *card); bool Get_apdu_in_framing(void); diff --git a/include/mifare.h b/include/mifare.h index e66df50aa..cf3b51511 100644 --- a/include/mifare.h +++ b/include/mifare.h @@ -75,9 +75,27 @@ typedef enum ISO14A_COMMAND { ISO14A_NO_RATS = (1 << 9), ISO14A_SEND_CHAINING = (1 << 10), ISO14A_USE_ECP = (1 << 11), - ISO14A_USE_MAGSAFE = (1 << 12) + ISO14A_USE_MAGSAFE = (1 << 12), + ISO14A_USE_CUSTOM_POLLING = (1 << 13) } iso14a_command_t; +// Defines a frame that will be used in a polling sequence +// ECP Frames are up to (7 + 16) bytes long, 24 bytes should cover future and other cases +typedef struct { + uint8_t frame[24]; + uint8_t frame_length; + uint8_t last_byte_bits; + uint16_t extra_delay; +} iso14a_polling_frame; + +// Defines polling sequence configuration +// 6 would be enough for 4 magsafe, 1 wupa, 1 ecp, +typedef struct { + iso14a_polling_frame frames[6]; + uint8_t frame_count; + uint16_t extra_timeout; +} iso14a_polling_parameters; + typedef struct { uint8_t *response; uint8_t *modulation; From a54097e19cddf6ceee9dc9deccacb02d432cfd1e Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sun, 16 Jul 2023 17:25:43 +0200 Subject: [PATCH 025/299] fix archlinux and fedora dockers --- docker/archlinux/Dockerfile | 3 +-- docker/archlinux/README.md | 6 ++++++ docker/archlinux/run_tests.sh | 5 +++++ docker/fedora-36/Dockerfile | 2 +- docker/fedora-36/docker_rm.sh | 1 + docker/fedora-37/Dockerfile | 2 +- docker/fedora-37/docker_rm.sh | 1 + 7 files changed, 16 insertions(+), 4 deletions(-) diff --git a/docker/archlinux/Dockerfile b/docker/archlinux/Dockerfile index 93584c098..18f573cb2 100644 --- a/docker/archlinux/Dockerfile +++ b/docker/archlinux/Dockerfile @@ -5,10 +5,9 @@ RUN pacman -Syu --noconfirm RUN pacman-db-upgrade # qt5-base skipped # bluez skipped, can't be installed in docker -RUN pacman -S --noconfirm sudo git base-devel cmake libusb readline bzip2 arm-none-eabi-gcc arm-none-eabi-newlib python --needed +RUN pacman -S --noconfirm sudo git base-devel cmake libusb readline bzip2 lz4 arm-none-eabi-gcc arm-none-eabi-newlib python --needed RUN pacman -S --noconfirm python-pip -RUN python3 -m pip install ansicolors sslcrypto # OpenCL for hitag2crack RUN pacman -S --noconfirm ocl-icd diff --git a/docker/archlinux/README.md b/docker/archlinux/README.md index 872d46cb4..7c699e524 100644 --- a/docker/archlinux/README.md +++ b/docker/archlinux/README.md @@ -47,5 +47,11 @@ Or if you want to run single test, ``` make clean; make -j + +python3 -m venv /tmp/venv +source /tmp/venv/bin/activate +python3 -m pip install --use-pep517 pyaes +python3 -m pip install ansicolors sslcrypto tools/pm3_tests.sh --long +deactivate ``` diff --git a/docker/archlinux/run_tests.sh b/docker/archlinux/run_tests.sh index 53eeda9a3..67715f92f 100755 --- a/docker/archlinux/run_tests.sh +++ b/docker/archlinux/run_tests.sh @@ -39,4 +39,9 @@ pacman -Ss '^gcc$' # sudo pacman -S testing/gcc # sudo pacman -S gcc +python3 -m venv /tmp/venv +source /tmp/venv/bin/activate +python3 -m pip install --use-pep517 pyaes +python3 -m pip install ansicolors sslcrypto tools/release_tests.sh +deactivate diff --git a/docker/fedora-36/Dockerfile b/docker/fedora-36/Dockerfile index 007af68c3..3cb7b93c6 100644 --- a/docker/fedora-36/Dockerfile +++ b/docker/fedora-36/Dockerfile @@ -2,7 +2,7 @@ FROM fedora:36 ENV LANG C # qt5-qtbase-devel skipped -RUN dnf install -y passwd sudo git make gcc gcc-c++ arm-none-eabi-gcc-cs arm-none-eabi-newlib readline-devel bzip2-devel bluez-libs-devel python3-devel openssl-devel libatomic findutils +RUN dnf install -y passwd sudo git make gcc gcc-c++ arm-none-eabi-gcc-cs arm-none-eabi-newlib readline-devel bzip2-devel lz4-devel bluez-libs-devel python3-devel openssl-devel libatomic findutils RUN yum -y update RUN yum -y install cmake python-pip diff --git a/docker/fedora-36/docker_rm.sh b/docker/fedora-36/docker_rm.sh index ea2b28809..bcdd1d060 100644 --- a/docker/fedora-36/docker_rm.sh +++ b/docker/fedora-36/docker_rm.sh @@ -1,4 +1,5 @@ #!/bin/bash +docker rm $(docker ps -aq --filter ancestor=pm3-fedora-36:1.0) docker image rm pm3-fedora-36:1.0 docker image rm fedora:36 diff --git a/docker/fedora-37/Dockerfile b/docker/fedora-37/Dockerfile index 930767853..122834560 100644 --- a/docker/fedora-37/Dockerfile +++ b/docker/fedora-37/Dockerfile @@ -2,7 +2,7 @@ FROM fedora:37 ENV LANG C # qt5-qtbase-devel skipped -RUN dnf install -y passwd sudo git make gcc gcc-c++ arm-none-eabi-gcc-cs arm-none-eabi-newlib readline-devel bzip2-devel bluez-libs-devel python3-devel openssl-devel libatomic findutils +RUN dnf install -y passwd sudo git make gcc gcc-c++ arm-none-eabi-gcc-cs arm-none-eabi-newlib readline-devel bzip2-devel lz4-devel bluez-libs-devel python3-devel openssl-devel libatomic findutils RUN yum -y update RUN yum -y install cmake python-pip diff --git a/docker/fedora-37/docker_rm.sh b/docker/fedora-37/docker_rm.sh index a9359d0fd..896b5ac82 100644 --- a/docker/fedora-37/docker_rm.sh +++ b/docker/fedora-37/docker_rm.sh @@ -1,4 +1,5 @@ #!/bin/bash +docker rm $(docker ps -aq --filter ancestor=pm3-fedora-37:1.0) docker image rm pm3-fedora-37:1.0 docker image rm fedora:37 From 7f5e1c9657874b9de7fcad3d1ce87d60adc38cd8 Mon Sep 17 00:00:00 2001 From: kormax Date: Sun, 16 Jul 2023 19:27:38 +0300 Subject: [PATCH 026/299] Move custom polling frame generation logic to client --- armsrc/iso14443a.c | 12 +--- client/src/cmdhf14a.c | 151 ++++++++++++++++++++++-------------------- client/src/cmdhf14a.h | 1 + client/src/cmdhfvas.c | 28 ++++++-- include/mifare.h | 1 - 5 files changed, 105 insertions(+), 88 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 3619155da..4bb51f69b 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -144,19 +144,13 @@ static hf14a_config hf14aconfig = { 0, 0, 0, 0, 0 } ; // Polling frames and configurations - -static const iso14a_polling_frame WUPA_FRAME = { - { 0x52 }, 1, 7, 0, -}; - static iso14a_polling_parameters WUPA_POLLING_PARAMETERS = { - .frames={ WUPA_FRAME }, + .frames={ {{ 0x52 }, 1, 7, 0} }, .frame_count=1, .extra_timeout=0, }; - void printHf14aConfig(void) { DbpString(_CYAN_("HF 14a config")); Dbprintf(" [a] Anticol override.... %s%s%s", @@ -3034,9 +3028,9 @@ void ReaderIso14443a(PacketCommandNG *c) { arg0 = iso14443a_select_cardEx( NULL, card, NULL, true, 0, (param & ISO14A_NO_RATS), - (param & ISO14A_USE_CUSTOM_POLLING) ? (iso14a_polling_parameters *)cmd : &WUPA_POLLING_PARAMETER + (param & ISO14A_USE_CUSTOM_POLLING) ? (iso14a_polling_parameters *)cmd : &WUPA_POLLING_PARAMETERS ); - // This can be improved by adding a cmd parser pointer and moving it by struct length to allow combining data with polling params + // TODO: Improve by adding a cmd parser pointer and moving it by struct length to allow combining data with polling params FpgaDisableTracing(); reply_mix(CMD_ACK, arg0, card->uidlen, 0, buf, sizeof(iso14a_card_select_t)); diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 61423cc48..bf1ded102 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -54,6 +54,35 @@ void Set_apdu_in_framing(bool v) { static int CmdHelp(const char *Cmd); static int waitCmd(bool i_select, uint32_t timeout, bool verbose); + +static const iso14a_polling_frame WUPA_FRAME = { + { 0x52 }, 1, 7, 0, +}; + +static const iso14a_polling_frame MAGWUPA1_FRAME = { + { 0x7A }, 1, 7, 0 +}; + +static const iso14a_polling_frame MAGWUPA2_FRAME = { + { 0x7B }, 1, 7, 0 +}; + +static const iso14a_polling_frame MAGWUPA3_FRAME = { + { 0x7C }, 1, 7, 0 +}; + +static const iso14a_polling_frame MAGWUPA4_FRAME = { + { 0x7D }, 1, 7, 0 +}; + +static const iso14a_polling_frame ECP_FRAME = { + .frame={ 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, + .frame_length=15, + .last_byte_bits=8, + .extra_delay=0 +}; + + static const manufactureName_t manufactureMapping[] = { // ID, "Vendor Country" { 0x01, "Motorola UK" }, @@ -435,67 +464,37 @@ int Hf14443_4aGetCardData(iso14a_card_select_t *card) { } iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe) { + // Extra 100ms give enough time for Apple (ECP) devices to proccess field info and make a decision + + if (use_ecp && use_magsafe) { + iso14a_polling_parameters full_polling_parameters = { + .frames={ WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count=6, + .extra_timeout=100 + }; + return full_polling_parameters; + } else if (use_ecp) { + iso14a_polling_parameters ecp_polling_parameters = { + .frames={ WUPA_FRAME, ECP_FRAME }, + .frame_count=2, + .extra_timeout=100 + }; + return ecp_polling_parameters; + } else if (use_magsafe) { + iso14a_polling_parameters magsafe_polling_parameters = { + .frames={ WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count=5, + .extra_timeout=0 + }; + return magsafe_polling_parameters; + } - iso14a_polling_frame WUPA_FRAME = { - { 0x52 }, 1, 7, 0, - }; - - iso14a_polling_frame MAGWUPA1_FRAME = { - { 0x7A }, 1, 7, 0 - }; - - iso14a_polling_frame MAGWUPA2_FRAME = { - { 0x7B }, 1, 7, 0 - }; - - iso14a_polling_frame MAGWUPA3_FRAME = { - { 0x7C }, 1, 7, 0 - }; - - iso14a_polling_frame MAGWUPA4_FRAME = { - { 0x7D }, 1, 7, 0 - }; - - iso14a_polling_frame ECP_FRAME = { - .frame={ 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, - .frame_length=15, - .last_byte_bits=8, - .extra_delay=0 - }; - - iso14a_polling_parameters WUPA_POLLING_PARAMETERS = { + iso14a_polling_parameters wupa_polling_parameters = { .frames={ WUPA_FRAME }, .frame_count=1, .extra_timeout=0, }; - - iso14a_polling_parameters MAGSAFE_POLLING_PARAMETERS = { - .frames={ WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, - .frame_count=5, - .extra_timeout=0 - }; - - // Extra 100ms give enough time for Apple devices to proccess field info and make a decision - iso14a_polling_parameters ECP_POLLING_PARAMETERS = { - .frames={ WUPA_FRAME, ECP_FRAME }, - .frame_count=2, - .extra_timeout=100 - }; - - iso14a_polling_parameters FULL_POLLING_PARAMETERS = { - .frames={ WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, - .frame_count=6, - .extra_timeout=100 - }; - - if (use_ecp && use_magsafe) { - return FULL_POLLING_PARAMETERS; - } else if (use_ecp) { - return ECP_POLLING_PARAMETERS; - } else if (use_magsafe) { - return MAGSAFE_POLLING_PARAMETERS; - } - return WUPA_POLLING_PARAMETERS; + return wupa_polling_parameters; } @@ -538,10 +537,14 @@ static int CmdHF14AReader(const char *Cmd) { cm |= ISO14A_NO_RATS; } - iso14a_polling_parameters polling_parameters; - if (arg_get_lit(ctx, 5) || arg_get_lit(ctx, 6)) { + bool use_ecp = arg_get_lit(ctx, 5); + bool use_magsafe = arg_get_lit(ctx, 6); + + iso14a_polling_parameters * polling_parameters = NULL; + iso14a_polling_parameters parameters = iso14a_get_polling_parameters(use_ecp, use_magsafe); + if (use_ecp || use_magsafe) { cm |= ISO14A_USE_CUSTOM_POLLING; - polling_parameters = iso14a_get_polling_parameters(arg_get_lit(ctx, 5), arg_get_lit(ctx, 6)); + polling_parameters = ¶meters; } bool continuous = arg_get_lit(ctx, 7); @@ -559,7 +562,7 @@ static int CmdHF14AReader(const char *Cmd) { clearCommandBuffer(); if (cm & ISO14A_USE_CUSTOM_POLLING) { - SendCommandMIX(CMD_HF_ISO14443A_READER, cm, 0, 0, (uint8_t *)&polling_parameters, sizeof(polling_parameters)); + SendCommandMIX(CMD_HF_ISO14443A_READER, cm, 0, 0, (uint8_t *)polling_parameters, sizeof(iso14a_polling_parameters)); } else { SendCommandMIX(CMD_HF_ISO14443A_READER, cm, 0, 0, NULL, 0); } @@ -900,7 +903,6 @@ int CmdHF14ASniff(const char *Cmd) { } int ExchangeRAW14a(uint8_t *datain, int datainlen, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, bool silentMode) { - uint16_t cmdc = 0; *dataoutlen = 0; @@ -962,8 +964,7 @@ int ExchangeRAW14a(uint8_t *datain, int datainlen, bool activateField, bool leav return 0; } -int SelectCard14443A_4(bool disconnect, bool verbose, iso14a_card_select_t *card) { - +int SelectCard14443A_4_WithParameters(bool disconnect, bool verbose, iso14a_card_select_t *card, iso14a_polling_parameters *polling_parameters) { // global vars should be prefixed with g_ gs_frame_len = 0; gs_frames_num = 0; @@ -976,7 +977,12 @@ int SelectCard14443A_4(bool disconnect, bool verbose, iso14a_card_select_t *card // Anticollision + SELECT card PacketResponseNG resp; - SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_NO_DISCONNECT, 0, 0, NULL, 0); + if (polling_parameters != NULL) { + SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_NO_DISCONNECT | ISO14A_USE_CUSTOM_POLLING, 0, 0, (uint8_t *)polling_parameters, sizeof(iso14a_polling_parameters)); + } else { + SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_NO_DISCONNECT, 0, 0, NULL, 0); + } + if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) { PrintAndLogEx(WARNING, "Command execute timeout"); return PM3_ETIMEOUT; @@ -1042,6 +1048,10 @@ int SelectCard14443A_4(bool disconnect, bool verbose, iso14a_card_select_t *card return PM3_SUCCESS; } +int SelectCard14443A_4(bool disconnect, bool verbose, iso14a_card_select_t *card) { + return SelectCard14443A_4_WithParameters(disconnect, verbose, card, NULL); +} + static int CmdExchangeAPDU(bool chainingin, uint8_t *datain, int datainlen, bool activateField, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, bool *chainingout) { *chainingout = false; @@ -1423,14 +1433,13 @@ static int CmdHF14ACmdRaw(const char *Cmd) { flags |= ISO14A_NO_RATS; } - if (use_ecp) { - flags |= ISO14A_USE_ECP; + // TODO: allow to use reader command with both data and polling configuration + if (use_ecp | use_magsafe) { + PrintAndLogEx(WARNING, "ECP and Magsafe not supported with this command at this moment. Instead use 'hf 14a reader -sk --ecp/--mag'"); + // flags |= ISO14A_USE_MAGSAFE; + // flags |= ISO14A_USE_ECP; } - - if (use_magsafe) { - flags |= ISO14A_USE_MAGSAFE; - } - + // Max buffer is PM3_CMD_DATA_SIZE datalen = (datalen > PM3_CMD_DATA_SIZE) ? PM3_CMD_DATA_SIZE : datalen; diff --git a/client/src/cmdhf14a.h b/client/src/cmdhf14a.h index ff6d80318..8d0c1d8bc 100644 --- a/client/src/cmdhf14a.h +++ b/client/src/cmdhf14a.h @@ -54,6 +54,7 @@ int ExchangeRAW14a(uint8_t *datain, int datainlen, bool activateField, bool leav iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe); int SelectCard14443A_4(bool disconnect, bool verbose, iso14a_card_select_t *card); +int SelectCard14443A_4_WithParameters(bool disconnect, bool verbose, iso14a_card_select_t *card, iso14a_polling_parameters *polling_parameters); bool Get_apdu_in_framing(void); void Set_apdu_in_framing(bool v); diff --git a/client/src/cmdhfvas.c b/client/src/cmdhfvas.c index 2bb5c8341..1a0dca54e 100644 --- a/client/src/cmdhfvas.c +++ b/client/src/cmdhfvas.c @@ -41,7 +41,20 @@ #include "mbedtls/ecc_point_compression.h" #include "mbedtls/gcm.h" -uint8_t ecpData[] = { 0x6a, 0x01, 0x00, 0x00, 0x04 }; +static const iso14a_polling_frame WUPA_FRAME = { + .frame={ 0x52 }, + .frame_length=1, + .last_byte_bits=7, + .extra_delay=0, +}; + +static const iso14a_polling_frame ECP_VAS_ONLY_FRAME = { + .frame={0x6a, 0x01, 0x00, 0x00, 0x02, 0xe4, 0xd2}, + .frame_length=7, + .last_byte_bits=8, + .extra_delay=0, +}; + uint8_t aid[] = { 0x4f, 0x53, 0x45, 0x2e, 0x56, 0x41, 0x53, 0x2e, 0x30, 0x31 }; uint8_t getVasUrlOnlyP2 = 0x00; uint8_t getVasFullReqP2 = 0x01; @@ -336,12 +349,13 @@ static int DecryptVASCryptogram(uint8_t *pidHash, uint8_t *cryptogram, size_t cr static int VASReader(uint8_t *pidHash, const char *url, size_t urlLen, uint8_t *cryptogram, size_t *cryptogramLen, bool verbose) { clearCommandBuffer(); - uint16_t flags = ISO14A_RAW | ISO14A_CONNECT | ISO14A_NO_SELECT | ISO14A_APPEND_CRC | ISO14A_NO_DISCONNECT; - SendCommandMIX(CMD_HF_ISO14443A_READER, flags, sizeof(ecpData), 0, ecpData, sizeof(ecpData)); + iso14a_polling_parameters polling_parameters = { + .frames={ WUPA_FRAME, ECP_VAS_ONLY_FRAME }, + .frame_count=2, + .extra_timeout=250 + }; - msleep(160); - - if (SelectCard14443A_4(false, false, NULL) != PM3_SUCCESS) { + if (SelectCard14443A_4_WithParameters(false, false, NULL, &polling_parameters) != PM3_SUCCESS) { PrintAndLogEx(FAILED, "No card in field"); return PM3_ECARDEXCHANGE; } @@ -349,7 +363,7 @@ static int VASReader(uint8_t *pidHash, const char *url, size_t urlLen, uint8_t * uint16_t status = 0; size_t resLen = 0; uint8_t selectResponse[APDU_RES_LEN] = {0}; - Iso7816Select(CC_CONTACTLESS, true, true, aid, sizeof(aid), selectResponse, APDU_RES_LEN, &resLen, &status); + Iso7816Select(CC_CONTACTLESS, false, true, aid, sizeof(aid), selectResponse, APDU_RES_LEN, &resLen, &status); if (status != 0x9000) { PrintAndLogEx(FAILED, "Card doesn't support VAS"); diff --git a/include/mifare.h b/include/mifare.h index cf3b51511..3bb8c9ba8 100644 --- a/include/mifare.h +++ b/include/mifare.h @@ -155,5 +155,4 @@ typedef struct { } state; } PACKED nonces_t; - #endif // _MIFARE_H_ From aca547aa4f956d6fde848cdf318572ab829850f7 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Mon, 17 Jul 2023 03:10:11 +0200 Subject: [PATCH 027/299] update docker stuff --- docker/archlinux/docker_rm.sh | 4 +-- docker/build-all.sh | 2 +- .../Dockerfile | 0 .../README.md | 2 +- .../docker_build.sh | 0 docker/debian-11-bullseye/docker_rm.sh | 4 +++ .../docker_run.sh | 0 .../run_tests.sh | 2 +- docker/debian-12-bookworm/Dockerfile | 26 +++++++++++++++++++ docker/debian-12-bookworm/README.md | 26 +++++++++++++++++++ docker/debian-12-bookworm/docker_build.sh | 3 +++ docker/debian-12-bookworm/docker_rm.sh | 4 +++ docker/debian-12-bookworm/docker_run.sh | 3 +++ docker/debian-12-bookworm/run_tests.sh | 11 ++++++++ docker/debian-13-trixie/Dockerfile | 26 +++++++++++++++++++ docker/debian-13-trixie/README.md | 26 +++++++++++++++++++ docker/debian-13-trixie/docker_build.sh | 3 +++ docker/debian-13-trixie/docker_rm.sh | 4 +++ docker/debian-13-trixie/docker_run.sh | 3 +++ docker/debian-13-trixie/run_tests.sh | 11 ++++++++ docker/debian-bullseye/docker_rm.sh | 4 --- docker/fedora-36/docker_rm.sh | 1 - docker/fedora-37/docker_rm.sh | 1 - docker/homebrew/docker_rm.sh | 2 +- docker/kali/docker_rm.sh | 2 +- docker/opensuse-leap/docker_rm.sh | 2 +- docker/opensuse-tumbleweed/docker_rm.sh | 2 +- docker/parrot-core-latest/docker_rm.sh | 2 +- docker/ubuntu-18.04/docker_rm.sh | 2 +- docker/ubuntu-20.04/docker_rm.sh | 2 +- docker/ubuntu-22.04/docker_rm.sh | 2 +- 31 files changed, 162 insertions(+), 20 deletions(-) rename docker/{debian-bullseye => debian-11-bullseye}/Dockerfile (100%) rename docker/{debian-bullseye => debian-11-bullseye}/README.md (91%) rename docker/{debian-bullseye => debian-11-bullseye}/docker_build.sh (100%) create mode 100644 docker/debian-11-bullseye/docker_rm.sh rename docker/{debian-bullseye => debian-11-bullseye}/docker_run.sh (100%) rename docker/{debian-bullseye => debian-11-bullseye}/run_tests.sh (80%) create mode 100644 docker/debian-12-bookworm/Dockerfile create mode 100644 docker/debian-12-bookworm/README.md create mode 100755 docker/debian-12-bookworm/docker_build.sh create mode 100644 docker/debian-12-bookworm/docker_rm.sh create mode 100755 docker/debian-12-bookworm/docker_run.sh create mode 100755 docker/debian-12-bookworm/run_tests.sh create mode 100644 docker/debian-13-trixie/Dockerfile create mode 100644 docker/debian-13-trixie/README.md create mode 100755 docker/debian-13-trixie/docker_build.sh create mode 100644 docker/debian-13-trixie/docker_rm.sh create mode 100755 docker/debian-13-trixie/docker_run.sh create mode 100755 docker/debian-13-trixie/run_tests.sh delete mode 100644 docker/debian-bullseye/docker_rm.sh diff --git a/docker/archlinux/docker_rm.sh b/docker/archlinux/docker_rm.sh index b4d9e7738..0c2d24f4e 100644 --- a/docker/archlinux/docker_rm.sh +++ b/docker/archlinux/docker_rm.sh @@ -1,6 +1,4 @@ #!/bin/bash +docker rm $(docker ps -aq --filter ancestor=pm3-arch:1.0) docker image rm pm3-arch:1.0 -docker image rm archlinux:base -# old ref: -docker image rm archlinux/base diff --git a/docker/build-all.sh b/docker/build-all.sh index aba45382f..ed56a0972 100755 --- a/docker/build-all.sh +++ b/docker/build-all.sh @@ -1,5 +1,5 @@ #!/bin/bash -for os in archlinux debian-buster fedora-36 fedora-37 homebrew kali opensuse-leap opensuse-tumbleweed parrot-core-latest ubuntu-18.04 ubuntu-20.04 ubuntu-22.04; do +for os in archlinux debian-12-bookworm fedora-36 fedora-37 homebrew kali opensuse-leap opensuse-tumbleweed parrot-core-latest ubuntu-20.04 ubuntu-22.04; do ( cd $os && ./docker_build.sh ) done diff --git a/docker/debian-bullseye/Dockerfile b/docker/debian-11-bullseye/Dockerfile similarity index 100% rename from docker/debian-bullseye/Dockerfile rename to docker/debian-11-bullseye/Dockerfile diff --git a/docker/debian-bullseye/README.md b/docker/debian-11-bullseye/README.md similarity index 91% rename from docker/debian-bullseye/README.md rename to docker/debian-11-bullseye/README.md index e86881019..3a7775b7c 100644 --- a/docker/debian-bullseye/README.md +++ b/docker/debian-11-bullseye/README.md @@ -9,7 +9,7 @@ If all tests OK, the script will finish with PASS. The script is to be run in proxmark root folder inside the docker env. ``` -docker/debian-bullseye/run_tests.sh; +docker/debian-11-bullseye/run_tests.sh; ``` Or if you want to run single test, diff --git a/docker/debian-bullseye/docker_build.sh b/docker/debian-11-bullseye/docker_build.sh similarity index 100% rename from docker/debian-bullseye/docker_build.sh rename to docker/debian-11-bullseye/docker_build.sh diff --git a/docker/debian-11-bullseye/docker_rm.sh b/docker/debian-11-bullseye/docker_rm.sh new file mode 100644 index 000000000..b8ce5b834 --- /dev/null +++ b/docker/debian-11-bullseye/docker_rm.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +docker rm $(docker ps -aq --filter ancestor=pm3-debian-bullseye:1.0) +docker image rm pm3-debian-bullseye:1.0 diff --git a/docker/debian-bullseye/docker_run.sh b/docker/debian-11-bullseye/docker_run.sh similarity index 100% rename from docker/debian-bullseye/docker_run.sh rename to docker/debian-11-bullseye/docker_run.sh diff --git a/docker/debian-bullseye/run_tests.sh b/docker/debian-11-bullseye/run_tests.sh similarity index 80% rename from docker/debian-bullseye/run_tests.sh rename to docker/debian-11-bullseye/run_tests.sh index 25e6d2a21..9c7128942 100755 --- a/docker/debian-bullseye/run_tests.sh +++ b/docker/debian-11-bullseye/run_tests.sh @@ -2,7 +2,7 @@ # Iceman 2022 # # This script is to be run from proxmark root folder inside the docker env -# docker/debian-bullseye/run_tests.sh; +# docker/debian-11-bullseye/run_tests.sh; sudo apt update && sudo apt upgrade -y tools/release_tests.sh diff --git a/docker/debian-12-bookworm/Dockerfile b/docker/debian-12-bookworm/Dockerfile new file mode 100644 index 000000000..92527289c --- /dev/null +++ b/docker/debian-12-bookworm/Dockerfile @@ -0,0 +1,26 @@ +FROM debian:bookworm-slim + +ENV LANG C +ENV DEBIAN_FRONTEND noninteractive +# qtbase5-dev skipped +RUN apt-get update && \ + apt-get upgrade -y && \ + apt-get dist-upgrade -y && \ + apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ + apt-get clean + +RUN apt-get install -y --no-install-recommends python3-minimal python3-pip python3-venv && \ + apt-get clean + +RUN apt-get install -y opencl-dev && \ + apt-get clean + +# Create rrg user +RUN useradd -ms /bin/bash rrg +RUN passwd -d rrg +RUN printf 'rrg ALL=(ALL) ALL\n' | tee -a /etc/sudoers + +USER rrg +WORKDIR "/home/rrg" + +CMD ["/bin/bash"] diff --git a/docker/debian-12-bookworm/README.md b/docker/debian-12-bookworm/README.md new file mode 100644 index 000000000..67c0f6a8b --- /dev/null +++ b/docker/debian-12-bookworm/README.md @@ -0,0 +1,26 @@ +# Notes on run_tests.sh script +This script runs a bunch of different builds with make and cmake together +with the different combos of RDV4, GENERIC, BTADDON combos. + +If all tests OK, the script will finish with PASS. + + +# Notes to run tests +The script is to be run in proxmark root folder inside the docker env. + +``` +docker/debian-12-bookworm/run_tests.sh; +``` + +Or if you want to run single test, + +``` +sudo apt update +make clean; make -j +python3 -m venv /tmp/venv +source /tmp/venv/bin/activate +python3 -m pip install --use-pep517 pyaes +python3 -m pip install ansicolors sslcrypto +tools/pm3_tests.sh --long +deactivate +``` diff --git a/docker/debian-12-bookworm/docker_build.sh b/docker/debian-12-bookworm/docker_build.sh new file mode 100755 index 000000000..0059348cf --- /dev/null +++ b/docker/debian-12-bookworm/docker_build.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker build -t "pm3-debian-bookworm:1.0" . diff --git a/docker/debian-12-bookworm/docker_rm.sh b/docker/debian-12-bookworm/docker_rm.sh new file mode 100644 index 000000000..5818564e0 --- /dev/null +++ b/docker/debian-12-bookworm/docker_rm.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +docker rm $(docker ps -aq --filter ancestor=pm3-debian-bookworm:1.0) +docker image rm pm3-debian-bookworm:1.0 diff --git a/docker/debian-12-bookworm/docker_run.sh b/docker/debian-12-bookworm/docker_run.sh new file mode 100755 index 000000000..ae264581a --- /dev/null +++ b/docker/debian-12-bookworm/docker_run.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker run --volume=$(pwd)/../..:/home/rrg/proxmark3 -w /home/rrg/proxmark3 -it pm3-debian-bookworm:1.0 diff --git a/docker/debian-12-bookworm/run_tests.sh b/docker/debian-12-bookworm/run_tests.sh new file mode 100755 index 000000000..06837fc99 --- /dev/null +++ b/docker/debian-12-bookworm/run_tests.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +# This script is to be run from proxmark root folder inside the docker env +# docker/debian-12-bookworm/run_tests.sh; + +sudo apt update && sudo apt upgrade -y +python3 -m venv /tmp/venv +source /tmp/venv/bin/activate +python3 -m pip install --use-pep517 pyaes +python3 -m pip install ansicolors sslcrypto +tools/release_tests.sh +deactivate diff --git a/docker/debian-13-trixie/Dockerfile b/docker/debian-13-trixie/Dockerfile new file mode 100644 index 000000000..c64707ceb --- /dev/null +++ b/docker/debian-13-trixie/Dockerfile @@ -0,0 +1,26 @@ +FROM debian:trixie-slim + +ENV LANG C +ENV DEBIAN_FRONTEND noninteractive +# qtbase5-dev skipped +RUN apt-get update && \ + apt-get upgrade -y && \ + apt-get dist-upgrade -y && \ + apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev liblz4-dev libbluetooth-dev libpython3-dev libssl-dev sudo && \ + apt-get clean + +RUN apt-get install -y --no-install-recommends python3-minimal python3-pip python3-venv && \ + apt-get clean + +RUN apt-get install -y opencl-dev && \ + apt-get clean + +# Create rrg user +RUN useradd -ms /bin/bash rrg +RUN passwd -d rrg +RUN printf 'rrg ALL=(ALL) ALL\n' | tee -a /etc/sudoers + +USER rrg +WORKDIR "/home/rrg" + +CMD ["/bin/bash"] diff --git a/docker/debian-13-trixie/README.md b/docker/debian-13-trixie/README.md new file mode 100644 index 000000000..53d448546 --- /dev/null +++ b/docker/debian-13-trixie/README.md @@ -0,0 +1,26 @@ +# Notes on run_tests.sh script +This script runs a bunch of different builds with make and cmake together +with the different combos of RDV4, GENERIC, BTADDON combos. + +If all tests OK, the script will finish with PASS. + + +# Notes to run tests +The script is to be run in proxmark root folder inside the docker env. + +``` +docker/debian-13-trixie/run_tests.sh; +``` + +Or if you want to run single test, + +``` +sudo apt update +make clean; make -j +python3 -m venv /tmp/venv +source /tmp/venv/bin/activate +python3 -m pip install --use-pep517 pyaes +python3 -m pip install ansicolors sslcrypto +tools/pm3_tests.sh --long +deactivate +``` diff --git a/docker/debian-13-trixie/docker_build.sh b/docker/debian-13-trixie/docker_build.sh new file mode 100755 index 000000000..22a5bdbc3 --- /dev/null +++ b/docker/debian-13-trixie/docker_build.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker build -t "pm3-debian-trixie:1.0" . diff --git a/docker/debian-13-trixie/docker_rm.sh b/docker/debian-13-trixie/docker_rm.sh new file mode 100644 index 000000000..0afb68014 --- /dev/null +++ b/docker/debian-13-trixie/docker_rm.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +docker rm $(docker ps -aq --filter ancestor=pm3-debian-trixie:1.0) +docker image rm pm3-debian-trixie:1.0 diff --git a/docker/debian-13-trixie/docker_run.sh b/docker/debian-13-trixie/docker_run.sh new file mode 100755 index 000000000..bc81286fc --- /dev/null +++ b/docker/debian-13-trixie/docker_run.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker run --volume=$(pwd)/../..:/home/rrg/proxmark3 -w /home/rrg/proxmark3 -it pm3-debian-trixie:1.0 diff --git a/docker/debian-13-trixie/run_tests.sh b/docker/debian-13-trixie/run_tests.sh new file mode 100755 index 000000000..dc76107e4 --- /dev/null +++ b/docker/debian-13-trixie/run_tests.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +# This script is to be run from proxmark root folder inside the docker env +# docker/debian-13-trixie/run_tests.sh; + +sudo apt update && sudo apt upgrade -y +python3 -m venv /tmp/venv +source /tmp/venv/bin/activate +python3 -m pip install --use-pep517 pyaes +python3 -m pip install ansicolors sslcrypto +tools/release_tests.sh +deactivate diff --git a/docker/debian-bullseye/docker_rm.sh b/docker/debian-bullseye/docker_rm.sh deleted file mode 100644 index d9609e2dd..000000000 --- a/docker/debian-bullseye/docker_rm.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -docker image rm pm3-debian-bullseye:1.0 -docker image rm bullseye-slim diff --git a/docker/fedora-36/docker_rm.sh b/docker/fedora-36/docker_rm.sh index bcdd1d060..a14c31e80 100644 --- a/docker/fedora-36/docker_rm.sh +++ b/docker/fedora-36/docker_rm.sh @@ -2,4 +2,3 @@ docker rm $(docker ps -aq --filter ancestor=pm3-fedora-36:1.0) docker image rm pm3-fedora-36:1.0 -docker image rm fedora:36 diff --git a/docker/fedora-37/docker_rm.sh b/docker/fedora-37/docker_rm.sh index 896b5ac82..6f0bd7e56 100644 --- a/docker/fedora-37/docker_rm.sh +++ b/docker/fedora-37/docker_rm.sh @@ -2,4 +2,3 @@ docker rm $(docker ps -aq --filter ancestor=pm3-fedora-37:1.0) docker image rm pm3-fedora-37:1.0 -docker image rm fedora:37 diff --git a/docker/homebrew/docker_rm.sh b/docker/homebrew/docker_rm.sh index 717156495..aa782d4a3 100644 --- a/docker/homebrew/docker_rm.sh +++ b/docker/homebrew/docker_rm.sh @@ -1,4 +1,4 @@ #!/bin/bash +docker rm $(docker ps -aq --filter ancestor=pm3-brew:1.0) docker image rm pm3-brew:1.0 -docker image rm homebrew/brew diff --git a/docker/kali/docker_rm.sh b/docker/kali/docker_rm.sh index 4cc73265d..fee4f07cf 100644 --- a/docker/kali/docker_rm.sh +++ b/docker/kali/docker_rm.sh @@ -1,4 +1,4 @@ #!/bin/bash +docker rm $(docker ps -aq --filter ancestor=pm3-kali:1.0) docker image rm pm3-kali:1.0 -#docker image rm kalilinux/kali-rolling diff --git a/docker/opensuse-leap/docker_rm.sh b/docker/opensuse-leap/docker_rm.sh index 9f120b8e1..12302b6f7 100644 --- a/docker/opensuse-leap/docker_rm.sh +++ b/docker/opensuse-leap/docker_rm.sh @@ -1,4 +1,4 @@ #!/bin/bash +docker rm $(docker ps -aq --filter ancestor=pm3-suse-leap:1.0) docker image rm pm3-suse-leap:1.0 -docker image rm opensuse/leap diff --git a/docker/opensuse-tumbleweed/docker_rm.sh b/docker/opensuse-tumbleweed/docker_rm.sh index f4d019f2b..c4b1b1d53 100644 --- a/docker/opensuse-tumbleweed/docker_rm.sh +++ b/docker/opensuse-tumbleweed/docker_rm.sh @@ -1,4 +1,4 @@ #!/bin/bash +docker rm $(docker ps -aq --filter ancestor=pm3-suse-tumbleweed:1.0) docker image rm pm3-suse-tumbleweed:1.0 -docker image rm opensuse/tumbleweed diff --git a/docker/parrot-core-latest/docker_rm.sh b/docker/parrot-core-latest/docker_rm.sh index 4874bdec5..9bf1605e5 100644 --- a/docker/parrot-core-latest/docker_rm.sh +++ b/docker/parrot-core-latest/docker_rm.sh @@ -1,4 +1,4 @@ #!/bin/bash +docker rm $(docker ps -aq --filter ancestor=pm3-parrotsec-core-latest:1.0) docker image rm pm3-parrotsec-core-latest:1.0 -docker image rm parrotsec/core:latest diff --git a/docker/ubuntu-18.04/docker_rm.sh b/docker/ubuntu-18.04/docker_rm.sh index c566f0e8d..20dcb80b2 100644 --- a/docker/ubuntu-18.04/docker_rm.sh +++ b/docker/ubuntu-18.04/docker_rm.sh @@ -1,4 +1,4 @@ #!/bin/bash +docker rm $(docker ps -aq --filter ancestor=pm3-ubuntu-18.04:1.0) docker image rm pm3-ubuntu-18.04:1.0 -docker image rm ubuntu:18.04 diff --git a/docker/ubuntu-20.04/docker_rm.sh b/docker/ubuntu-20.04/docker_rm.sh index 37b6fd8b2..d71954339 100644 --- a/docker/ubuntu-20.04/docker_rm.sh +++ b/docker/ubuntu-20.04/docker_rm.sh @@ -1,4 +1,4 @@ #!/bin/bash +docker rm $(docker ps -aq --filter ancestor=pm3-ubuntu-20.04:1.0) docker image rm pm3-ubuntu-20.04:1.0 -docker image rm ubuntu:20.04 diff --git a/docker/ubuntu-22.04/docker_rm.sh b/docker/ubuntu-22.04/docker_rm.sh index e6a5f0302..d1b82948b 100644 --- a/docker/ubuntu-22.04/docker_rm.sh +++ b/docker/ubuntu-22.04/docker_rm.sh @@ -1,4 +1,4 @@ #!/bin/bash +docker rm $(docker ps -aq --filter ancestor=pm3-ubuntu-22.04:1.0) docker image rm pm3-ubuntu-22.04:1.0 -docker image rm ubuntu:22.04 From 9b2fb950ef5f34c75967131fb8a281701f303d8f Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Mon, 17 Jul 2023 03:31:11 +0200 Subject: [PATCH 028/299] fix docker/homebrew --- docker/homebrew/Dockerfile | 2 +- docker/homebrew/docker_run.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/homebrew/Dockerfile b/docker/homebrew/Dockerfile index 57e12dd87..fba5e84a7 100644 --- a/docker/homebrew/Dockerfile +++ b/docker/homebrew/Dockerfile @@ -4,6 +4,6 @@ ENV LANG C USER linuxbrew WORKDIR "/home/linuxbrew" -RUN brew install cmake pkg-config bzip2 && rm -rf ~/.cache/Homebrew +RUN brew install cmake pkg-config bzip2 lz4 && rm -rf ~/.cache/Homebrew CMD ["/bin/bash"] diff --git a/docker/homebrew/docker_run.sh b/docker/homebrew/docker_run.sh index 16c744594..efde1649b 100755 --- a/docker/homebrew/docker_run.sh +++ b/docker/homebrew/docker_run.sh @@ -1,4 +1,4 @@ #!/bin/bash -docker run --volume=$(pwd)/../..:/home/linuxbrew/proxmark3 -w /home/rrg/proxmark3 -it pm3-brew:1.0 +docker run --volume=$(pwd)/../..:/home/linuxbrew/proxmark3 -w /home/linuxbrew/proxmark3 -it pm3-brew:1.0 # if needed, run brew as user linuxbrew From 5b656ad4b01e330be07d9b6cec0b01a993145335 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Mon, 17 Jul 2023 03:32:07 +0200 Subject: [PATCH 029/299] Add CMP0114 policy to cmake CMake Warning (dev) at /home/linuxbrew/.linuxbrew/Cellar/cmake/3.26.4/share/cmake/Modules/ExternalProject.cmake:2271 (message): Policy CMP0114 is not set: ExternalProject step targets fully adopt their steps. Run "cmake --help-policy CMP0114" for policy details. Use the cmake_policy command to set the policy and suppress this warning. ExternalProject target 'bzip2' would depend on the targets for step(s) 'configure;build;install' under policy CMP0114, but this is being left out for compatibility since the policy is not set. Call Stack (most recent call first): CMakeLists.txt:178 (ExternalProject_Add_StepTargets) This warning is for project developers. Use -Wno-dev to suppress it. --- client/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index ce7e36938..9ea004590 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -162,6 +162,7 @@ if (NOT SKIPJANSSONSYSTEM EQUAL 1) endif (NOT SKIPJANSSONSYSTEM EQUAL 1) if(EMBED_BZIP2) + cmake_policy(SET CMP0114 NEW) set(BZIP2_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps/bzip2/src/bzip2) # Specify SOURCE_DIR will cause some errors ExternalProject_Add(bzip2 From 03ae05a345e99f4eff1101188454adc734f9ba70 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Mon, 17 Jul 2023 04:24:37 +0200 Subject: [PATCH 030/299] cmake: allow to embed LZ4 --- client/CMakeLists.txt | 55 ++++++++++++++++++++----- client/experimental_lib/CMakeLists.txt | 56 +++++++++++++++++++++----- 2 files changed, 89 insertions(+), 22 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 9ea004590..be4e00a93 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -96,11 +96,12 @@ if (CMAKE_TOOLCHAIN_FILE) endif (ANDROID) set(EMBED_READLINE ON) set(EMBED_BZIP2 ON) + set(EMBED_LZ4 ON) endif (CMAKE_TOOLCHAIN_FILE) -if (EMBED_READLINE OR EMBED_BZIP2) +if (EMBED_READLINE OR EMBED_BZIP2 OR EMBED_LZ4) include(ExternalProject) -endif (EMBED_READLINE OR EMBED_BZIP2) +endif (EMBED_READLINE OR EMBED_BZIP2 OR EMBED_LZ4) if (NOT SKIPREADLINE EQUAL 1) if (APPLE) @@ -184,8 +185,29 @@ else(EMBED_BZIP2) find_package (BZip2 REQUIRED) endif(EMBED_BZIP2) -find_path(LZ4_INCLUDE_DIRS lz4frame.h) -find_library(LZ4_LIBRARIES lz4) +if(EMBED_LZ4) + cmake_policy(SET CMP0114 NEW) + set(LZ4_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps/lz4/src/lz4) + # Specify SOURCE_DIR will cause some errors + ExternalProject_Add(lz4 + GIT_REPOSITORY https://android.googlesource.com/platform/external/lz4 + GIT_TAG platform-tools-30.0.2 + PREFIX deps/lz4 + # SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/deps/lz4 + CONFIGURE_COMMAND mkdir -p ${LZ4_BUILD_DIR} && git archive --format tar HEAD | tar -C ${LZ4_BUILD_DIR} -x + BUILD_IN_SOURCE ON + BUILD_COMMAND make -C ${LZ4_BUILD_DIR}/lib -j4 CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} LD=${CMAKE_C_COMPILER} AR=${CMAKE_AR} RANLIB=${CMAKE_RANLIB} ${CFLAGS_EXTERNAL_LIB} liblz4.a + INSTALL_COMMAND "" + LOG_DOWNLOAD ON + ) + ExternalProject_Add_StepTargets(lz4 configure build install) + set(LZ4_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/deps/lz4/src/lz4/lib) + set(LZ4_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/deps/lz4/src/lz4/lib/liblz4.a) + set(LZ4_FOUND ON) +else(EMBED_LZ4) + find_path(LZ4_INCLUDE_DIRS lz4frame.h) + find_library(LZ4_LIBRARIES lz4) +endif(EMBED_LZ4) if (LZ4_INCLUDE_DIRS AND LZ4_LIBRARIES) set(LZ4_FOUND ON) @@ -502,16 +524,24 @@ else (SKIPBT EQUAL 1) endif (BLUEZ_FOUND) endif(SKIPBT EQUAL 1) -if (EMBED_BZIP2) - message(STATUS "Bzip2 library: embedded") -else (EMBED_BZIP2) - message(STATUS "Bzip2 library: system library found") -endif (EMBED_BZIP2) +if (BZIP2_FOUND) + if (EMBED_BZIP2) + message(STATUS "Bzip2 library: embedded") + else (EMBED_BZIP2) + message(STATUS "Bzip2 library: system library found") + endif (EMBED_BZIP2) +else (BZIP2_FOUND) + message(SEND_ERROR "Bzip2 library: Bzip2 not found") +endif (BZIP2_FOUND) if (LZ4_FOUND) - message(STATUS "LZ4 library: system library found") + if (EMBED_LZ4) + message(STATUS "LZ4 library: embedded") + else (EMBED_LZ4) + message(STATUS "LZ4 library: system library found") + endif (EMBED_LZ4) else (LZ4_FOUND) - message(SEND_ERROR "LZ4 library: system library not found and no local library implemented") + message(SEND_ERROR "LZ4 library: LZ4 not found") endif (LZ4_FOUND) if (SKIPJANSSONSYSTEM EQUAL 1) @@ -612,6 +642,9 @@ endif (EMBED_READLINE) if (EMBED_BZIP2) add_dependencies(proxmark3 bzip2) endif (EMBED_BZIP2) +if (EMBED_LZ4) + add_dependencies(proxmark3 lz4) +endif (EMBED_LZ4) if (MINGW) # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index 0cd148fa3..cec361446 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -97,11 +97,12 @@ if (CMAKE_TOOLCHAIN_FILE) endif (ANDROID) set(EMBED_READLINE ON) set(EMBED_BZIP2 ON) + set(EMBED_LZ4 ON) endif (CMAKE_TOOLCHAIN_FILE) -if (EMBED_READLINE OR EMBED_BZIP2) +if (EMBED_READLINE OR EMBED_BZIP2 OR EMBED_LZ4) include(ExternalProject) -endif (EMBED_READLINE OR EMBED_BZIP2) +endif (EMBED_READLINE OR EMBED_BZIP2 OR EMBED_LZ4) if (NOT SKIPREADLINE EQUAL 1) if (APPLE) @@ -163,6 +164,7 @@ if (NOT SKIPJANSSONSYSTEM EQUAL 1) endif (NOT SKIPJANSSONSYSTEM EQUAL 1) if(EMBED_BZIP2) + cmake_policy(SET CMP0114 NEW) set(BZIP2_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps/bzip2/src/bzip2) ExternalProject_Add(bzip2 GIT_REPOSITORY https://android.googlesource.com/platform/external/bzip2 @@ -183,8 +185,29 @@ else(EMBED_BZIP2) find_package (BZip2 REQUIRED) endif(EMBED_BZIP2) -find_path(LZ4_INCLUDE_DIRS lz4frame.h) -find_library(LZ4_LIBRARIES lz4) +if(EMBED_LZ4) + cmake_policy(SET CMP0114 NEW) + set(LZ4_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps/lz4/src/lz4) + # Specify SOURCE_DIR will cause some errors + ExternalProject_Add(lz4 + GIT_REPOSITORY https://android.googlesource.com/platform/external/lz4 + GIT_TAG platform-tools-30.0.2 + PREFIX deps/lz4 + # SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/deps/lz4 + CONFIGURE_COMMAND mkdir -p ${LZ4_BUILD_DIR} && git archive --format tar HEAD | tar -C ${LZ4_BUILD_DIR} -x + BUILD_IN_SOURCE ON + BUILD_COMMAND make -C ${LZ4_BUILD_DIR}/lib -j4 CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} LD=${CMAKE_C_COMPILER} AR=${CMAKE_AR} RANLIB=${CMAKE_RANLIB} ${CFLAGS_EXTERNAL_LIB} liblz4.a + INSTALL_COMMAND "" + LOG_DOWNLOAD ON + ) + ExternalProject_Add_StepTargets(lz4 configure build install) + set(LZ4_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/deps/lz4/src/lz4/lib) + set(LZ4_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/deps/lz4/src/lz4/lib/liblz4.a) + set(LZ4_FOUND ON) +else(EMBED_LZ4) + find_path(LZ4_INCLUDE_DIRS lz4frame.h) + find_library(LZ4_LIBRARIES lz4) +endif(EMBED_LZ4) if (LZ4_INCLUDE_DIRS AND LZ4_LIBRARIES) set(LZ4_FOUND ON) @@ -501,16 +524,24 @@ else (SKIPBT EQUAL 1) endif (BLUEZ_FOUND) endif(SKIPBT EQUAL 1) -if (EMBED_BZIP2) - message(STATUS "Bzip2 library: embedded") -else (EMBED_BZIP2) - message(STATUS "Bzip2 library: system library found") -endif (EMBED_BZIP2) +if (BZIP2_FOUND) + if (EMBED_BZIP2) + message(STATUS "Bzip2 library: embedded") + else (EMBED_BZIP2) + message(STATUS "Bzip2 library: system library found") + endif (EMBED_BZIP2) +else (BZIP2_FOUND) + message(SEND_ERROR "Bzip2 library: Bzip2 not found") +endif (BZIP2_FOUND) if (LZ4_FOUND) - message(STATUS "LZ4 library: system library found") + if (EMBED_LZ4) + message(STATUS "LZ4 library: embedded") + else (EMBED_LZ4) + message(STATUS "LZ4 library: system library found") + endif (EMBED_LZ4) else (LZ4_FOUND) - message(SEND_ERROR "LZ4 library: system library not found and no local library implemented") + message(SEND_ERROR "LZ4 library: LZ4 not found") endif (LZ4_FOUND) if (SKIPJANSSONSYSTEM EQUAL 1) @@ -611,6 +642,9 @@ endif (EMBED_READLINE) if (EMBED_BZIP2) add_dependencies(pm3rrg_rdv4 bzip2) endif (EMBED_BZIP2) +if (EMBED_LZ4) + add_dependencies(pm3rrg_rdv4 lz4) +endif (EMBED_LZ4) if (MINGW) # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) From 662ce8403e82d7c5ace687e4fd0a24cc9de01c24 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Mon, 17 Jul 2023 04:56:18 +0200 Subject: [PATCH 031/299] lz4 missing in some docs --- doc/md/Development/Makefile-vs-CMake.md | 3 ++- .../Linux-Installation-Instructions.md | 4 ++-- .../Mac-OS-X-MacPorts-Installation-Instructions.md | 2 +- docker/homebrew/README.md | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/doc/md/Development/Makefile-vs-CMake.md b/doc/md/Development/Makefile-vs-CMake.md index c54e911ff..934e4b138 100644 --- a/doc/md/Development/Makefile-vs-CMake.md +++ b/doc/md/Development/Makefile-vs-CMake.md @@ -58,7 +58,8 @@ At the moment both are maintained because they don't perfectly overlap yet. | `SKIPLUASYSTEM` | yes | **no** | | | lualibs/pm3_cmd.lua | yes | add_custom_command **but unused** | | | lualibs/mfc_default_keys.lua | yes | add_custom_command **but unused** | | -| dep lz4 | | | (in_common) not yet used, future. See `get_lz4.sh` for upstream fetch & patch | +| dep lz4 | sys | sys | + in_common only used by FW. See `get_lz4.sh` for upstream fetch & patch | +| lz4 detection | **none** | find, Cross:gitclone | | | dep libm | sys | sys | | | libm detection | **none** | **none** (1) | (1) cf https://cmake.org/pipermail/cmake/2019-March/069168.html ? | | dep mbedtls | in_common | in_common | no sys lib: missing support for CMAC in def conf (btw no .pc available) | diff --git a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md index 455ad6254..3172fdecc 100644 --- a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md @@ -65,7 +65,7 @@ If you get some (non blocking) error at runtime such as _Gtk-Message: Failed to ^[Top](#top) ```sh -sudo pacman -Syu git base-devel readline bzip2 arm-none-eabi-gcc arm-none-eabi-newlib qt5-base bluez python --needed +sudo pacman -Syu git base-devel readline bzip2 lz4 arm-none-eabi-gcc arm-none-eabi-newlib qt5-base bluez python --needed ``` If you don't need the native Bluetooth support in the client, you can skip the installation of `bluez`. @@ -78,7 +78,7 @@ If you don't need support for Python3 scripts in the Proxmark3 client, you can s ^[Top](#top) ```sh -sudo dnf install git make gcc gcc-c++ arm-none-eabi-gcc-cs arm-none-eabi-newlib readline-devel bzip2-devel qt5-qtbase-devel bluez-libs-devel python3-devel libatomic openssl-devel +sudo dnf install git make gcc gcc-c++ arm-none-eabi-gcc-cs arm-none-eabi-newlib readline-devel bzip2-devel lz4-devel qt5-qtbase-devel bluez-libs-devel python3-devel libatomic openssl-devel ``` If you don't need the native Bluetooth support in the client, you can skip the installation of `bluez-libs-devel`. diff --git a/doc/md/Installation_Instructions/Mac-OS-X-MacPorts-Installation-Instructions.md b/doc/md/Installation_Instructions/Mac-OS-X-MacPorts-Installation-Instructions.md index 3ea25c20d..2f05f3b98 100644 --- a/doc/md/Installation_Instructions/Mac-OS-X-MacPorts-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Mac-OS-X-MacPorts-Installation-Instructions.md @@ -61,7 +61,7 @@ These instructions will show how to setup the environment on OSX to the point wh 2. Install dependencies: ```bash - sudo port install readline jansson lua52 python311 bzip2 openssl11 arm-none-eabi-gcc arm-none-eabi-binutils coreutils qt5 qt5-qtbase pkgconfig + sudo port install readline jansson lua52 python311 bzip2 lz4 openssl11 arm-none-eabi-gcc arm-none-eabi-binutils coreutils qt5 qt5-qtbase pkgconfig ``` 3. Clamp Python version for pkg-config diff --git a/docker/homebrew/README.md b/docker/homebrew/README.md index 07c92e573..549896b33 100644 --- a/docker/homebrew/README.md +++ b/docker/homebrew/README.md @@ -21,6 +21,6 @@ make -j fpga_compress cd client mkdir build cd build -cmake -DEMBED_BZIP2=1 .. +cmake -DEMBED_BZIP2=1 -DEMBED_LZ4=1 .. make -j ``` From 24938e3ed543dfdee18dd8cbc72b01c290f3c0f6 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 17 Jul 2023 11:21:29 +0200 Subject: [PATCH 032/299] remove some redundant code and fixed CID# 416023 with resource leak --- client/src/cmdhfmfhard.c | 44 +++++++++++++++------------------------- 1 file changed, 16 insertions(+), 28 deletions(-) diff --git a/client/src/cmdhfmfhard.c b/client/src/cmdhfmfhard.c index e6581d830..d66b3eb43 100644 --- a/client/src/cmdhfmfhard.c +++ b/client/src/cmdhfmfhard.c @@ -301,16 +301,19 @@ static void init_bitflip_bitarrays(void) { free(path); if (statesfile == NULL) { continue; - } else if (open_uncompressed) { - fseek(statesfile, 0, SEEK_END); - int fsize = ftell(statesfile); - if (fsize == -1) { - PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); - fclose(statesfile); - exit(5); - } - uint32_t filesize = (uint32_t)fsize; - rewind(statesfile); + } + + fseek(statesfile, 0, SEEK_END); + int fsize = ftell(statesfile); + if (fsize == -1) { + PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); + fclose(statesfile); + exit(5); + } + uint32_t filesize = (uint32_t)fsize; + rewind(statesfile); + + if (open_uncompressed) { uint32_t count = 0; size_t bytesread = fread(&count, 1, sizeof(count), statesfile); @@ -347,18 +350,12 @@ static void init_bitflip_bitarrays(void) { } #endif } + fclose(statesfile); nraw++; + continue; + } else if (open_lz4compressed) { - fseek(statesfile, 0, SEEK_END); - int fsize = ftell(statesfile); - if (fsize == -1) { - PrintAndLogEx(ERR, "File read error with %s (1). Aborting...\n", state_file_name); - fclose(statesfile); - exit(5); - } - uint32_t filesize = (uint32_t)fsize; - rewind(statesfile); char *compressed_data = calloc(filesize, sizeof(uint8_t)); if (compressed_data == NULL) { PrintAndLogEx(ERR, "Out of memory error in init_bitflip_statelists(). Aborting...\n"); @@ -436,15 +433,6 @@ static void init_bitflip_bitarrays(void) { continue; } else if (open_bz2compressed) { - fseek(statesfile, 0, SEEK_END); - int fsize = ftell(statesfile); - if (fsize == -1) { - PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); - fclose(statesfile); - exit(5); - } - uint32_t filesize = (uint32_t)fsize; - rewind(statesfile); char input_buffer[filesize]; size_t bytesread = fread(input_buffer, 1, filesize, statesfile); if (bytesread != filesize) { From 73eb8d0de06bd3f28e4277e21cb1780786698cf8 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 17 Jul 2023 17:30:15 +0200 Subject: [PATCH 033/299] fix lf cotag reader , make the grid command use the new syntax --- client/src/cmdlfcotag.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client/src/cmdlfcotag.c b/client/src/cmdlfcotag.c index 7c4bf1541..4a3a5f6e6 100644 --- a/client/src/cmdlfcotag.c +++ b/client/src/cmdlfcotag.c @@ -75,11 +75,13 @@ static int CmdCOTAGDemod(const char *Cmd) { void *argtable[] = { arg_param_begin, + arg_lit0("v", "verbose", "verbose output"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); + bool verbose = arg_get_lit(ctx, 1); CLIParserFree(ctx); - return demodCOTAG(true); + return demodCOTAG(verbose); } // When reading a COTAG. @@ -152,7 +154,7 @@ static int CmdCOTAGReader(const char *Cmd) { case 0: case 2: { CmdPlot(""); - CmdGrid("384"); + CmdGrid("-x 384"); getSamples(0, false); break; } From 230f1c654b6e0130ab775b244f1d8cb32ccffcc3 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 17 Jul 2023 17:43:23 +0200 Subject: [PATCH 034/299] hf legic einfo, now accepts card size params --- CHANGELOG.md | 2 ++ client/src/cmdhflegic.c | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c84a9e65..7f6503e33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `hf legic einfo` - now accepts the three different cardsizes as params (@iceman1001) + - Fix `lf cotag reader -1` - now doesn't fail (@iceman1001) - Added support for LZ4 compressed hadnested tables (@doegox) - Changed `emv reader -v` - now tries to print found transactions logs (@iceman1001) - Added ISO4217 currency lookup (@iceman1001) diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index b842ddf54..c8eb513ac 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -1226,15 +1226,36 @@ static int CmdLegicEInfo(const char *Cmd) { CLIParserInit(&ctx, "hf legic einfo", "It decodes and displays emulator memory", "hf legic einfo\n" + "hf legic eview --22\n" ); void *argtable[] = { arg_param_begin, + arg_lit0(NULL, "22", "LEGIC Prime MIM22"), + arg_lit0(NULL, "256", "LEGIC Prime MIM256 (def)"), + arg_lit0(NULL, "1024", "LEGIC Prime MIM1024"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); + bool m1 = arg_get_lit(ctx, 1); + bool m2 = arg_get_lit(ctx, 2); + bool m3 = arg_get_lit(ctx, 3); CLIParserFree(ctx); + // validations + if (m1 + m2 + m3 > 1) { + PrintAndLogEx(WARNING, "Only specify one LEGIC Prime Type"); + return PM3_EINVARG; + } else if (m1 + m2 + m3 == 0) { + m2 = true; + } + size_t card_size = LEGIC_PRIME_MIM256; + if (m1) + card_size = LEGIC_PRIME_MIM22; + else if (m2) + card_size = LEGIC_PRIME_MIM256; + else if (m3) + card_size = LEGIC_PRIME_MIM1024; uint8_t *dump = calloc(card_size, sizeof(uint8_t)); if (dump == NULL) { From 134f09be5eb2fbbe76a3cc07890a866f9f2773c7 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 17 Jul 2023 17:46:27 +0200 Subject: [PATCH 035/299] style --- armsrc/iso14443a.c | 18 ++++++------ client/src/cmdhf14a.c | 64 +++++++++++++++++++++---------------------- client/src/cmdhfvas.c | 24 ++++++++-------- doc/commands.json | 17 ++++++++---- include/mifare.h | 6 ++-- 5 files changed, 67 insertions(+), 62 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 4bb51f69b..62baab9fc 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -143,11 +143,11 @@ Default HF 14a config is set to: static hf14a_config hf14aconfig = { 0, 0, 0, 0, 0 } ; -// Polling frames and configurations +// Polling frames and configurations static iso14a_polling_parameters WUPA_POLLING_PARAMETERS = { - .frames={ {{ 0x52 }, 1, 7, 0} }, - .frame_count=1, - .extra_timeout=0, + .frames = { {{ 0x52 }, 1, 7, 0} }, + .frame_count = 1, + .extra_timeout = 0, }; @@ -2519,7 +2519,7 @@ static void iso14a_set_ATS_times(const uint8_t *ats) { static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters *polling_parameters) { - #define WUPA_RETRY_TIMEOUT 10 +#define WUPA_RETRY_TIMEOUT 10 uint32_t save_iso14a_timeout = iso14a_get_timeout(); iso14a_set_timeout(1236 / 128 + 1); // response to WUPA is expected at exactly 1236/fc. No need to wait longer. @@ -2543,7 +2543,7 @@ static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters * if (frame_parameters->extra_delay) { SpinDelay(frame_parameters->extra_delay); } - + // Receive the ATQA len = ReaderReceive(resp, resp_par); @@ -3027,9 +3027,9 @@ void ReaderIso14443a(PacketCommandNG *c) { iso14a_card_select_t *card = (iso14a_card_select_t *)buf; arg0 = iso14443a_select_cardEx( - NULL, card, NULL, true, 0, (param & ISO14A_NO_RATS), - (param & ISO14A_USE_CUSTOM_POLLING) ? (iso14a_polling_parameters *)cmd : &WUPA_POLLING_PARAMETERS - ); + NULL, card, NULL, true, 0, (param & ISO14A_NO_RATS), + (param & ISO14A_USE_CUSTOM_POLLING) ? (iso14a_polling_parameters *)cmd : &WUPA_POLLING_PARAMETERS + ); // TODO: Improve by adding a cmd parser pointer and moving it by struct length to allow combining data with polling params FpgaDisableTracing(); diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index bf1ded102..21ad70be7 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -55,31 +55,31 @@ static int CmdHelp(const char *Cmd); static int waitCmd(bool i_select, uint32_t timeout, bool verbose); -static const iso14a_polling_frame WUPA_FRAME = { +static const iso14a_polling_frame WUPA_FRAME = { { 0x52 }, 1, 7, 0, }; -static const iso14a_polling_frame MAGWUPA1_FRAME = { - { 0x7A }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA1_FRAME = { + { 0x7A }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA2_FRAME = { - { 0x7B }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA2_FRAME = { + { 0x7B }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA3_FRAME = { - { 0x7C }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA3_FRAME = { + { 0x7C }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA4_FRAME = { - { 0x7D }, 1, 7, 0 +static const iso14a_polling_frame MAGWUPA4_FRAME = { + { 0x7D }, 1, 7, 0 }; -static const iso14a_polling_frame ECP_FRAME = { - .frame={ 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, - .frame_length=15, - .last_byte_bits=8, - .extra_delay=0 +static const iso14a_polling_frame ECP_FRAME = { + .frame = { 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, + .frame_length = 15, + .last_byte_bits = 8, + .extra_delay = 0 }; @@ -465,34 +465,34 @@ int Hf14443_4aGetCardData(iso14a_card_select_t *card) { iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe) { // Extra 100ms give enough time for Apple (ECP) devices to proccess field info and make a decision - + if (use_ecp && use_magsafe) { iso14a_polling_parameters full_polling_parameters = { - .frames={ WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, - .frame_count=6, - .extra_timeout=100 + .frames = { WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count = 6, + .extra_timeout = 100 }; return full_polling_parameters; } else if (use_ecp) { iso14a_polling_parameters ecp_polling_parameters = { - .frames={ WUPA_FRAME, ECP_FRAME }, - .frame_count=2, - .extra_timeout=100 + .frames = { WUPA_FRAME, ECP_FRAME }, + .frame_count = 2, + .extra_timeout = 100 }; return ecp_polling_parameters; } else if (use_magsafe) { iso14a_polling_parameters magsafe_polling_parameters = { - .frames={ WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, - .frame_count=5, - .extra_timeout=0 + .frames = { WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, + .frame_count = 5, + .extra_timeout = 0 }; return magsafe_polling_parameters; - } + } iso14a_polling_parameters wupa_polling_parameters = { - .frames={ WUPA_FRAME }, - .frame_count=1, - .extra_timeout=0, + .frames = { WUPA_FRAME }, + .frame_count = 1, + .extra_timeout = 0, }; return wupa_polling_parameters; } @@ -540,7 +540,7 @@ static int CmdHF14AReader(const char *Cmd) { bool use_ecp = arg_get_lit(ctx, 5); bool use_magsafe = arg_get_lit(ctx, 6); - iso14a_polling_parameters * polling_parameters = NULL; + iso14a_polling_parameters *polling_parameters = NULL; iso14a_polling_parameters parameters = iso14a_get_polling_parameters(use_ecp, use_magsafe); if (use_ecp || use_magsafe) { cm |= ISO14A_USE_CUSTOM_POLLING; @@ -566,7 +566,7 @@ static int CmdHF14AReader(const char *Cmd) { } else { SendCommandMIX(CMD_HF_ISO14443A_READER, cm, 0, 0, NULL, 0); } - + if (ISO14A_CONNECT & cm) { PacketResponseNG resp; @@ -982,7 +982,7 @@ int SelectCard14443A_4_WithParameters(bool disconnect, bool verbose, iso14a_card } else { SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_NO_DISCONNECT, 0, 0, NULL, 0); } - + if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) { PrintAndLogEx(WARNING, "Command execute timeout"); return PM3_ETIMEOUT; @@ -1439,7 +1439,7 @@ static int CmdHF14ACmdRaw(const char *Cmd) { // flags |= ISO14A_USE_MAGSAFE; // flags |= ISO14A_USE_ECP; } - + // Max buffer is PM3_CMD_DATA_SIZE datalen = (datalen > PM3_CMD_DATA_SIZE) ? PM3_CMD_DATA_SIZE : datalen; diff --git a/client/src/cmdhfvas.c b/client/src/cmdhfvas.c index 1a0dca54e..ac0365cdf 100644 --- a/client/src/cmdhfvas.c +++ b/client/src/cmdhfvas.c @@ -41,18 +41,18 @@ #include "mbedtls/ecc_point_compression.h" #include "mbedtls/gcm.h" -static const iso14a_polling_frame WUPA_FRAME = { - .frame={ 0x52 }, - .frame_length=1, - .last_byte_bits=7, - .extra_delay=0, +static const iso14a_polling_frame WUPA_FRAME = { + .frame = { 0x52 }, + .frame_length = 1, + .last_byte_bits = 7, + .extra_delay = 0, }; static const iso14a_polling_frame ECP_VAS_ONLY_FRAME = { - .frame={0x6a, 0x01, 0x00, 0x00, 0x02, 0xe4, 0xd2}, - .frame_length=7, - .last_byte_bits=8, - .extra_delay=0, + .frame = {0x6a, 0x01, 0x00, 0x00, 0x02, 0xe4, 0xd2}, + .frame_length = 7, + .last_byte_bits = 8, + .extra_delay = 0, }; uint8_t aid[] = { 0x4f, 0x53, 0x45, 0x2e, 0x56, 0x41, 0x53, 0x2e, 0x30, 0x31 }; @@ -350,9 +350,9 @@ static int VASReader(uint8_t *pidHash, const char *url, size_t urlLen, uint8_t * clearCommandBuffer(); iso14a_polling_parameters polling_parameters = { - .frames={ WUPA_FRAME, ECP_VAS_ONLY_FRAME }, - .frame_count=2, - .extra_timeout=250 + .frames = { WUPA_FRAME, ECP_VAS_ONLY_FRAME }, + .frame_count = 2, + .extra_timeout = 250 }; if (SelectCard14443A_4_WithParameters(false, false, NULL, &polling_parameters) != PM3_SUCCESS) { diff --git a/doc/commands.json b/doc/commands.json index 775087e22..5686c7542 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -3534,13 +3534,17 @@ "command": "hf legic einfo", "description": "It decodes and displays emulator memory", "notes": [ - "hf legic einfo" + "hf legic einfo", + "hf legic eview --22" ], "offline": false, "options": [ - "-h, --help This help" + "-h, --help This help", + "--22 LEGIC Prime MIM22", + "--256 LEGIC Prime MIM256 (def)", + "--1024 LEGIC Prime MIM1024" ], - "usage": "hf legic einfo [-h]" + "usage": "hf legic einfo [-h] [--22] [--256] [--1024]" }, "hf legic eload": { "command": "hf legic eload", @@ -7631,9 +7635,10 @@ ], "offline": true, "options": [ - "-h, --help This help" + "-h, --help This help", + "-v, --verbose verbose output" ], - "usage": "lf cotag demod [-h]" + "usage": "lf cotag demod [-hv]" }, "lf cotag reader": { "command": "lf cotag reader", @@ -11689,6 +11694,6 @@ "metadata": { "commands_extracted": 679, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-07-16T13:30:30" + "extracted_on": "2023-07-17T15:46:12" } } \ No newline at end of file diff --git a/include/mifare.h b/include/mifare.h index 3bb8c9ba8..863734cb5 100644 --- a/include/mifare.h +++ b/include/mifare.h @@ -91,9 +91,9 @@ typedef struct { // Defines polling sequence configuration // 6 would be enough for 4 magsafe, 1 wupa, 1 ecp, typedef struct { - iso14a_polling_frame frames[6]; - uint8_t frame_count; - uint16_t extra_timeout; + iso14a_polling_frame frames[6]; + uint8_t frame_count; + uint16_t extra_timeout; } iso14a_polling_parameters; typedef struct { From c70e5beeac7229605690230985e029031ae37a59 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 17 Jul 2023 19:31:37 +0200 Subject: [PATCH 036/299] changed legic sim to have a different loop and exit message. Added some colors in output and the return codes on deviceside for legisim now uses the same PM3_E* styled --- CHANGELOG.md | 1 + armsrc/legicrfsim.c | 61 ++++++++++++++++++----------------------- client/src/cmdhflegic.c | 15 +++++----- 3 files changed, 36 insertions(+), 41 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f6503e33..5711c1090 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `hf legic sim` - loop and return codes on deviceside updated to DEFINES (@iceman1001) - Changed `hf legic einfo` - now accepts the three different cardsizes as params (@iceman1001) - Fix `lf cotag reader -1` - now doesn't fail (@iceman1001) - Added support for LZ4 compressed hadnested tables (@doegox) diff --git a/armsrc/legicrfsim.c b/armsrc/legicrfsim.c index 58ca40320..f1bc40968 100644 --- a/armsrc/legicrfsim.c +++ b/armsrc/legicrfsim.c @@ -96,13 +96,13 @@ static int8_t rx_bit(void) { uint32_t bit_start = last_frame_end; // wait for pause to end - if (!wait_for(RWD_PULSE, bit_start + RWD_TIME_1 * 3 / 2)) { - return -1; + if (wait_for(RWD_PULSE, bit_start + RWD_TIME_1 * 3 / 2) == false) { + return PM3_ERFTRANS; } // wait for next pause - if (!wait_for(RWD_PAUSE, bit_start + RWD_TIME_1 * 3 / 2)) { - return -1; + if (wait_for(RWD_PAUSE, bit_start + RWD_TIME_1 * 3 / 2) == false) { + return PM3_ERFTRANS; } // update bit and frame end @@ -110,7 +110,7 @@ static int8_t rx_bit(void) { // check for code violation (bit to short) if (last_frame_end - bit_start < RWD_TIME_PAUSE) { - return -1; + return PM3_ERFTRANS; } // apply threshold (average of RWD_TIME_0 and ) @@ -235,7 +235,7 @@ static int32_t rx_frame(uint8_t *len) { // check for code violation if (i > RWD_CMD_TIMEOUT) { - return -1; + return PM3_ETIMEOUT; } } @@ -251,7 +251,7 @@ static int32_t rx_frame(uint8_t *len) { // check for code violation and to short / long frame if ((bit < 0) && ((*len < RWD_MIN_FRAME_LEN) || (*len > RWD_MAX_FRAME_LEN))) { - return -1; + return PM3_ERFTRANS; } // check for code violation caused by end of frame @@ -353,7 +353,7 @@ static int32_t setup_phase(legic_card_select_t *p_card) { // wait for iv int32_t iv = rx_frame(&len); if ((len != 7) || (iv < 0)) { - return -1; + return PM3_ERFTRANS; } // configure prng @@ -375,19 +375,19 @@ static int32_t setup_phase(legic_card_select_t *p_card) { // wait for ack int32_t ack = rx_frame(&len); if ((len != 6) || (ack < 0)) { - return -1; + return PM3_ERFTRANS; } // validate data switch (p_card->tagtype) { case 0: - if (ack != 0x19) return -1; + if (ack != 0x19) return PM3_ERFTRANS; break; case 1: - if (ack != 0x39) return -1; + if (ack != 0x39) return PM3_ERFTRANS; break; case 2: - if (ack != 0x39) return -1; + if (ack != 0x39) return PM3_ERFTRANS; break; } @@ -399,7 +399,7 @@ static int32_t setup_phase(legic_card_select_t *p_card) { // the gap by one period. last_frame_end += TAG_BIT_PERIOD; - return 0; + return PM3_SUCCESS; } static uint8_t calc_crc4(uint16_t cmd, uint8_t cmd_sz, uint8_t value) { @@ -414,7 +414,7 @@ static int32_t connected_phase(legic_card_select_t *p_card) { // wait for command int32_t cmd = rx_frame(&len); if (cmd < 0) { - return -1; + return PM3_ETIMEOUT; } // check if command is LEGIC_READ @@ -425,8 +425,7 @@ static int32_t connected_phase(legic_card_select_t *p_card) { // transmit data tx_frame((crc << 8) | byte, 12); - - return 0; + return PM3_SUCCESS; } // check if command is LEGIC_WRITE @@ -441,7 +440,7 @@ static int32_t connected_phase(legic_card_select_t *p_card) { uint8_t calc_crc = calc_crc4(addr << 1, p_card->cmdsize, byte); if (calc_crc != crc) { Dbprintf("!!! crc mismatch: %x != %x !!!", calc_crc, crc); - return -1; + return PM3_ECRC; } // store data @@ -449,11 +448,10 @@ static int32_t connected_phase(legic_card_select_t *p_card) { // transmit ack tx_ack(); - - return 0; + return PM3_SUCCESS; } - return -1; + return PM3_ERFTRANS; } //----------------------------------------------------------------------------- @@ -474,35 +472,30 @@ void LegicRfSimulate(uint8_t tagtype, bool send_reply) { goto OUT; } - uint16_t counter = 0; LED_A_ON(); - Dbprintf("Legic Prime, simulating uid: %02X%02X%02X%02X", legic_mem[0], legic_mem[1], legic_mem[2], legic_mem[3]); + Dbprintf("Legic Prime, simulating uid... " _YELLOW_("%02X%02X%02X%02X"), legic_mem[0], legic_mem[1], legic_mem[2], legic_mem[3]); while (BUTTON_PRESS() == false) { + WDT_HIT(); - if (counter >= 2000) { - if (data_available()) { - res = PM3_EOPABORTED; - break; - } - counter = 0; + if (data_available()) { + res = PM3_EOPABORTED; + goto OUT; } - counter++; - // wait for carrier, restart after timeout if (wait_for(RWD_PULSE, GetCountSspClk() + TAG_BIT_PERIOD) == false) { continue; } // wait for connection, restart on error - if (setup_phase(&card)) { + if (setup_phase(&card) != PM3_SUCCESS) { continue; } // connection is established, process commands until one fails - while (connected_phase(&card) == false) { + while (connected_phase(&card) != PM3_SUCCESS) { WDT_HIT(); } } @@ -510,11 +503,11 @@ void LegicRfSimulate(uint8_t tagtype, bool send_reply) { OUT: if (g_dbglevel >= DBG_ERROR) { - Dbprintf("Emulator stopped. Tracing: %d trace length: %d ", get_tracing(), BigBuf_get_traceLen()); + Dbprintf("Emulator stopped. Trace length... " _YELLOW_("%d"), BigBuf_get_traceLen()); } if (res == PM3_EOPABORTED) - DbpString("aborted by user"); + DbpString("Aborted by user"); switch_off(); StopTicks(); diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index c8eb513ac..a0b703453 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -536,20 +536,21 @@ static int CmdLegicSim(const char *Cmd) { SendCommandNG(CMD_HF_LEGIC_SIMULATE, (uint8_t *)&payload, sizeof(payload)); PacketResponseNG resp; - PrintAndLogEx(INFO, "Press pm3-button to abort simulation"); - bool keypress = kbd_enter_pressed(); - while (keypress == false) { - keypress = kbd_enter_pressed(); + PrintAndLogEx(INFO, "Press " _GREEN_("") " or pm3-button to abort simulation"); + for (;;) { + if (kbd_enter_pressed()) { + SendCommandNG(CMD_BREAK_LOOP, NULL, 0); + PrintAndLogEx(DEBUG, "User aborted"); + break; + } if (WaitForResponseTimeout(CMD_HF_LEGIC_SIMULATE, &resp, 1500)) { break; } - } - if (keypress) - SendCommandNG(CMD_BREAK_LOOP, NULL, 0); PrintAndLogEx(INFO, "Done"); + PrintAndLogEx(HINT, "Try `" _YELLOW_("hf legic list") "` to view trace log"); return PM3_SUCCESS; } From d08c6f404b6f27c65283a9630e50203b996d4d13 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 17 Jul 2023 22:54:43 +0200 Subject: [PATCH 037/299] first cleanup of hf_legic lua script. All io.open calls is problematic.\nfixed some colors in the help texts. makes it a bit easier to read\nfix loading files using the searchfile call\nstill problematic with save file calls since it should honor the user defined preference paths. --- client/luascripts/hf_legic.lua | 301 +++++++++++++++++++-------------- client/src/scripting.c | 3 +- 2 files changed, 175 insertions(+), 129 deletions(-) diff --git a/client/luascripts/hf_legic.lua b/client/luascripts/hf_legic.lua index cbec05f9f..663d02e36 100644 --- a/client/luascripts/hf_legic.lua +++ b/client/luascripts/hf_legic.lua @@ -96,10 +96,63 @@ Known issues; needs to be fixed: * last byte in last segment is handled incorrectly when it is the last bytes on the card itself (MIM256: => byte 256) --]] + +--- +-- requirements +local utils = require('utils') +local getopt = require('getopt') +local ansicolors = require('ansicolors') + +--- +-- global variables / defines +local bxor = bit32.bxor +local bbit = bit32.extract +local input = utils.input +local confirm = utils.confirm + +--- +-- init ansicolor-values & ansicolors switch +local colored_output = true +local acoff = "" +local acgreen= "" +local accyan = "" +local acred = "" +local acyellow = "" +local acblue = "" +local acmagenta = "" + +local acy = ansicolors.yellow +local acr = ansicolors.reset + +--- Helper --- +--- +-- default colors (change to whatever you want) +function load_colors(onoff) + if (onoff) then + -- colors + acgreen = ansicolors.green + accyan = ansicolors.cyan + acred = ansicolors.red + acyellow= ansicolors.yellow + acblue = ansicolors.blue + acmagenta= ansicolors.magenta + acoff = ansicolors.reset + else + -- 'no color' + acgreen = "" + accyan = "" + acred = "" + acyellow= "" + acblue = "" + acmagenta= "" + acoff = "" + end +end + + example = "script run hf_legic" author = "Mosci, uhei" -version = "1.0.4" - +version = "1.0.5" desc = [[ @@ -109,23 +162,23 @@ it's kinda interactive with following commands in three categories: Data I/O Segment Manipulation Token-Data ----------------- -------------------- ----------------- - rt => read Tag as => add Segment mt => make Token - wt => write Tag es => edit Segment Header et => edit Token data - ed => edit Segment Data tk => toggle KGH-Flag - File I/O rs => remove Segment - ----------------- cc => check Segment-CRC - lf => load bin File ck => check KGH - sf => save eml/bin File ds => dump Segments - xf => xor to File + ]]..acy..[[rt]]..acr..[[ => read Tag ]]..acy..[[as]]..acr..[[ => add Segment ]]..acy..[[mt]]..acr..[[ => make Token + ]]..acy..[[wt]]..acr..[[ => write Tag ]]..acy..[[es]]..acr..[[ => edit Segment Header ]]..acy..[[et]]..acr..[[ => edit Token data + ]]..acy..[[ed]]..acr..[[ => edit Segment Data ]]..acy..[[tk]]..acr..[[ => toggle KGH-Flag + File I/O ]]..acy..[[rs]]..acr..[[ => remove Segment + ----------------- ]]..acy..[[cc]]..acr..[[ => check Segment-CRC + ]]..acy..[[lf]]..acr..[[ => load bin File ]]..acy..[[ck]]..acr..[[ => check KGH + ]]..acy..[[sf]]..acr..[[ => save eml/bin File ]]..acy..[[ds]]..acr..[[ => dump Segments + ]]..acy..[[xf]]..acr..[[ => xor to File (partially) known Segments Virtual Tags Script Output --------------------------- ------------------------------- ------------------------ - dlc => dump Legic-Cash ct => copy mainTag to backupTag tac => toggle ansicolors - elc => edit Legic-Cash tc => copy backupTag to mainTag - d3p => dump 3rd-Party-Cash tt => switch mainTag & backupTag - e3p => edit 3rd-Party-Cash di => dump mainTag - do => dump backupTag + ]]..acy..[[dlc]]..acr..[[ => dump Legic-Cash ]]..acy..[[ct]]..acr..[[ => copy mainTag to backupTag ]]..acy..[[tac]]..acr..[[ => toggle ansicolors + ]]..acy..[[elc]]..acr..[[ => edit Legic-Cash ]]..acy..[[tc]]..acr..[[ => copy backupTag to mainTag + ]]..acy..[[d3p]]..acr..[[ => dump 3rd-Party-Cash ]]..acy..[[tt]]..acr..[[ => switch mainTag & backupTag + ]]..acy..[[e3p]]..acr..[[ => edit 3rd-Party-Cash ]]..acy..[[di]]..acr..[[ => dump mainTag + ]]..acy..[[do]]..acr..[[ => dump backupTag @@ -169,55 +222,6 @@ tac: 'toggle ansicolors'- switch on and off the colored text-output of this scri ]] currentTag="inTAG" ---- --- requirements -local utils = require('utils') -local getopt = require('getopt') -local ansicolors = require('ansicolors') - ---- --- global variables / defines -local bxor = bit32.bxor -local bbit = bit32.extract -local input = utils.input -local confirm = utils.confirm - ---- --- init ansicolor-values & ansicolors switch -local colored_output = true -local acoff = "" -local acgreen= "" -local accyan = "" -local acred = "" -local acyellow = "" -local acblue = "" -local acmagenta = "" - ---- Helper --- ---- --- default colors (change to whatever you want) -function load_colors(onoff) - if (onoff) then - -- colors - acgreen = ansicolors.green - accyan = ansicolors.cyan - acred = ansicolors.red - acyellow= ansicolors.yellow - acblue = ansicolors.blue - acmagenta= ansicolors.magenta - acoff = ansicolors.reset - else - -- 'no color' - acgreen = "" - accyan = "" - acred = "" - acyellow= "" - acblue = "" - acmagenta= "" - acoff = "" - end -end - --- -- curency-codes for Legic-Cash-Segments (ISO 4217) local currency = { @@ -237,7 +241,11 @@ end --- -- Usage help function help() - print(desc) + -- the proxmark3 client can't handle such long strings + -- by breaking up at specific points it still looks good. + print(string.sub(desc, 0, 1961)) + print(string.sub(desc, 1962, 3925)) + print(string.sub(desc, 3926, #desc)) print("Version: "..version) print("Example usage: "..example) end @@ -305,18 +313,6 @@ function xorBytes(inBytes, crc) end end ---- --- check availability of file -function file_check(file_name) - local file_found = io.open(file_name, "r") - if file_found == nil then - return false - else - file_found:close() - return true - end -end - --- -- split csv-string into table local function split(str, sep) @@ -330,6 +326,23 @@ local function split(str, sep) return fields end +--- +-- check availability of file +function file_check(file_name) + + local arr = split(file_name, ".") + local path = core.search_file(arr[1], "."..arr[2]) + if (path == nil) then return false end + + local file_found = io.open(path, "r") + if file_found == nil then + return false, "" + else + file_found:close() + return true, path + end +end + --- -- put a string into a bytes-table function str2bytes(s) @@ -358,8 +371,13 @@ end function getInputBytes(infile) local line local bytes = {} - local fhi,err = io.open(infile,"rb") - if err then oops("failed to read from file ".. infile); return false; end + + local arr = split(infile, ".") + local path = core.search_file(arr[1], "."..arr[2]) + if (path == nil) then oops("failed to read from file ".. infile); return false; end + + local fhi,err = io.open(path,"rb") + if err then oops("failed to read from file ".. path); return false; end file_data = fhi:read("*a"); for i = 1, #file_data do @@ -367,7 +385,7 @@ function getInputBytes(infile) end fhi:close() if (bytes[7]=='00') then return false end - print(#bytes .. " bytes from "..infile.." loaded") + print(#bytes .. " bytes from "..path.." loaded") return bytes end @@ -613,12 +631,13 @@ local function readFile(filename) print(accyan) local bytes = {} local tag = {} - if file_check(filename) == false then + + local res, path = file_check(filename) + if not res then return oops("input file: "..acyellow..filename..acoff.." not found") end - bytes = getInputBytes(filename) - + bytes = getInputBytes(path) if bytes == false then return oops('couldnt get input bytes') end -- make plain bytes @@ -640,12 +659,14 @@ local function save_BIN(data, filename) local fn = filename..ext -- Make sure we don't overwrite a file - while file_check(fn) do + local res, path = file_check(fn) + while res == false do fn = filename..ext:gsub(ext, "-"..tostring(counter)..ext) counter = counter + 1 + res, path = file_check(fn) end - outfile = io.open(fn, 'wb') + outfile = io.open(path, 'wb') local i = 1 while data[i] do @@ -660,17 +681,19 @@ end -- write bytes to file function writeFile(bytes, filename) local emlext = ".eml" + local res, path if (filename ~= 'MyLegicClone') then - if (file_check(filename..emlext)) then - local answer = confirm("\nthe output-file "..filename..emlext.." already exists!\nthis will delete the previous content!\ncontinue?") + res, path = file_check(filename..emlext) + if res then + local answer = confirm("\nthe output-file "..path.." already exists!\nthis will delete the previous content!\ncontinue?") if not answer then return print("user abort") end end end local line local bcnt = 0 - local fho, err = io.open(filename..emlext, "w") + local fho, err = io.open(path, "w") if err then - return oops("OOps ... failed to open output-file ".. filename..emlext) + return oops("OOps ... failed to open output-file ".. path) end bytes = xorBytes(bytes, bytes[5]) @@ -692,11 +715,10 @@ function writeFile(bytes, filename) end fho:close() - -- save binary - local fn_bin, fn_bin_num = save_BIN(bytes, filename) - print("\nwrote "..acyellow..(#bytes * 3)..acoff.." bytes to " ..acyellow..filename..emlext..acoff) + -- save binary + local fn_bin, fn_bin_num = save_BIN(bytes, filename) if fn_bin and fn_bin_num then print("\nwrote "..acyellow..fn_bin_num..acoff.." bytes to BINARY file "..acyellow..fn_bin..acoff) end @@ -731,10 +753,16 @@ function readFromPM3() infile=getRandomTempName() core.console("hf legic dump -f "..infile) tag=readFile(infile..".bin") - os.remove(infile) - os.remove(infile..".bin") - os.remove(infile..".eml") - os.remove(infile..".json") + + res, path = file_check(infile..".bin") + if not res then return nil end + os.remove(path) + + res, path = file_check(infile..".eml") + os.remove(path) + + res, path = file_check(infile..".json") + os.remove(path) return tag end @@ -758,16 +786,20 @@ end --- -- save mapping to file local function saveTagMap(map, filename) + + local res, path + if #filename > 0 then - if file_check(filename) then - local answer = confirm("\nthe output-file "..acyellow..filename..acoff.." alredy exists!\nthis will delete the previous content!\ncontinue?") + res, path = file_check(filename) + if res then + local answer = confirm("\nthe output-file "..acyellow..path..acoff.." alredy exists!\nthis will delete the previous content!\ncontinue?") if not answer then return print("user abort") end end end local line - local fho,err = io.open(filename, "w") - if err then oops("OOps ... failed to open output-file "..acyellow..filename..acoff) end + local fho,err = io.open(path, "w") + if err then oops("OOps ... failed to open output-file "..acyellow..path..acoff) end -- write line to new file for k, v in pairs(map) do @@ -842,10 +874,13 @@ function loadTagMap(filename) local line, fields local temp={} local offset=0 - if not file_check(filename) then - return oops("input file: "..acyellow..filename..acoff.." not found") - else - local fhi,err = io.open(filename) + + local res, path = file_check(filename) + if not res then + return oops("input file: "..acyellow..filename..acoff.." not found") + else + + local fhi,err = io.open(path) while true do line = fhi:read() if line == nil then @@ -971,6 +1006,7 @@ Mappings: im = insert am = add rm = remove CRC8: ac8 = add sc8 = show rc8 = remove : q = exit h = Help ]] + --if(#tagMap.mappings==0) then oops("no mappings in tagMap"); return tagMap end print("tagMap edit-mode submenu") repeat @@ -2293,25 +2329,25 @@ function modifyHelp() Data I/O Segment Manipulation Token-Data ----------------- -------------------- --------------------- - rt => read Tag as => add Segment mt => make Token - wt => write Tag es => edit Segment Header et => edit Token data - ed => edit Segment Data tk => toggle KGH-Flag - File I/O rs => remove Segment - ----------------- cc => check Segment-CRC - lf => load bin File ck => check KGH - sf => save eml/bin File ds => dump Segments - xf => xor to File + ]]..acy..[[rt]]..acr..[[ => read Tag ]]..acy..[[as]]..acr..[[ => add Segment ]]..acy..[[mt]]..acr..[[ => make Token + ]]..acy..[[wt]]..acr..[[ => write Tag ]]..acy..[[es]]..acr..[[ => edit Segment Header ]]..acy..[[et]]..acr..[[ => edit Token data + ]]..acy..[[ed]]..acr..[[ => edit Segment Data ]]..acy..[[tk]]..acr..[[ => toggle KGH-Flag + File I/O ]]..acy..[[rs]]..acr..[[ => remove Segment + ----------------- ]]..acy..[[cc]]..acr..[[ => check Segment-CRC + ]]..acy..[[lf]]..acr..[[ => load bin File ]]..acy..[[ck]]..acr..[[ => check KGH + ]]..acy..[[sf]]..acr..[[ => save eml/bin File ]]..acy..[[ds]]..acr..[[ => dump Segments + ]]..acy..[[xf]]..acr..[[ => xor to File Virtual Tags tagMap (partial) known Segments -------------------------------- --------------------- --------------------------- - ct => copy mainTag to backupTag mm => make (new) Map dlc => dump Legic-Cash - tc => copy backupTag to mainTag em => edit Map submenu elc => edit Legic-Cash - tt => switch mainTag & backupTag lm => load map from file d3p => dump 3rd-Party-Cash - di => dump mainTag sm => save map to file e3p => edit 3rd-Party-Cash - do => dump backupTag + ]]..acy..[[xf]]..acr..[[ => copy mainTag to backupTag ]]..acy..[[mm]]..acr..[[ => make (new) Map ]]..acy..[[dlc]]..acr..[[ => dump Legic-Cash + ]]..acy..[[xf]]..acr..[[ => copy backupTag to mainTag ]]..acy..[[em]]..acr..[[ => edit Map submenu ]]..acy..[[elc]]..acr..[[ => edit Legic-Cash + ]]..acy..[[xf]]..acr..[[ => switch mainTag & backupTag ]]..acy..[[lm]]..acr..[[ => load map from file ]]..acy..[[d3p]]..acr..[[ => dump 3rd-Party-Cash + ]]..acy..[[xf]]..acr..[[ => dump mainTag ]]..acy..[[sm]]..acr..[[ => save map to file ]]..acy..[[e3p]]..acr..[[ => edit 3rd-Party-Cash + ]]..acy..[[xf]]..acr..[[ => dump backupTag - h => this help q => quit + ]]..acy..[[h]]..acr..[[ => this help ]]..acy..[[q]]..acr..[[ => quit ]] return t end @@ -2325,8 +2361,10 @@ function modifyMode() --- -- helptext ["h"] = function(x) - print(" Version: "..version); - print(modifyHelp().."\n".."tags im Memory: "..(istable(inTAG) and ((currentTag=='inTAG') and acgreen.."*mainTAG"..acoff or "mainTAG") or "").." "..(istable(backupTAG) and ((currentTag=='backupTAG') and acgreen.."*backupTAG"..acoff or "backupTAG") or "")) + print(" Version: "..acgreen..version..acr); + print(modifyHelp()) + print("\n".."tags im Memory: "..(istable(inTAG) and ((currentTag=='inTAG') and acgreen.."*mainTAG"..acoff or "mainTAG") or "").." "..(istable(backupTAG) and ((currentTag=='backupTAG') and acgreen.."*backupTAG"..acoff or "backupTAG") or "")) + print("") end, --- -- read real Tag with PM3 into virtual 'mainTAG' @@ -2375,8 +2413,9 @@ function modifyMode() end inTAG=readFile(filename) -- check for existing tagMap - if (file_check(filename..".map")) then - if(confirm(accyan.."Mapping-File for "..acoff..filename..accyan.." found - load it also?"..acoff)) then + local res, path = file_check(filename..".map") + if res then + if(confirm(accyan.."Mapping-File for "..acoff..path..accyan.." found - load it also?"..acoff)) then tagMap=loadTagMap(filename..".map") end end @@ -2388,7 +2427,7 @@ function modifyMode() outfile = input("enter filename:", "hf-legic-"..inTAG.MCD..inTAG.MSN0..inTAG.MSN1..inTAG.MSN2) bytes = tagToBytes(inTAG) --bytes=xorBytes(bytes, inTAG.MCC) - if (bytes) then + if (bytes) then writeFile(bytes, outfile) end end @@ -2743,10 +2782,13 @@ end function main(args) -- set init colors/switch (can be toggled with 'tac' => 'toggle ansicolors') load_colors(colored_output) - if (#args == 0 ) then modifyMode() end + if (#args == 0 ) then modifyMode() end --- variables - local inTAG, backupTAG, outTAG, outfile, interactive, crc, ofs, cfs, dfs - -- just a spacer for better readability + local inTAG, backupTAG, outTAG, outfile, interactive, crc + local ofs=false + local cfs=false + local dfs=false + -- just a spacer for better readability print() --- parse arguments for o, a in getopt.getopt(args, 'hrmi:do:c:') do @@ -2755,7 +2797,7 @@ function main(args) -- read tag from PM3 if o == "r" then inTAG=readFromPM3() end -- input file - if o == "i" then inTAG=readFile(a) end + if o == "i" then inTAG=readFile(a) end -- dump virtual-Tag if o == "d" then dfs=true end -- interacive modifying @@ -2793,7 +2835,10 @@ function main(args) -- write to outfile if (bytes) then - writeFile(bytes, outfile) + + if (outfile) then + writeFile(bytes, outfile) + end --- read real tag into virtual tag -- inTAG=readFromPM3() end --- or simply use the bytes that where wriiten diff --git a/client/src/scripting.c b/client/src/scripting.c index c96d593df..613562978 100644 --- a/client/src/scripting.c +++ b/client/src/scripting.c @@ -1269,8 +1269,9 @@ static int l_searchfile(lua_State *L) { size_t size; // data const char *filename = luaL_checklstring(L, 1, &size); - if (size == 0) + if (size == 0) { return returnToLuaWithError(L, "Must specify filename"); + } const char *suffix = luaL_checklstring(L, 2, &size); char *path; From 0d682da6765d0e1e13a702e6391aaf6a6110c8af Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 19 Jul 2023 10:09:18 +0200 Subject: [PATCH 038/299] more fixes for hf_legic. missing zero padding, removed tab, more colors --- client/luascripts/hf_legic.lua | 131 +++++++++++++++++++-------------- 1 file changed, 75 insertions(+), 56 deletions(-) diff --git a/client/luascripts/hf_legic.lua b/client/luascripts/hf_legic.lua index 663d02e36..052f7ab06 100644 --- a/client/luascripts/hf_legic.lua +++ b/client/luascripts/hf_legic.lua @@ -122,6 +122,7 @@ local acblue = "" local acmagenta = "" local acy = ansicolors.yellow +local acc = ansicolors.cyan local acr = ansicolors.reset --- Helper --- @@ -137,6 +138,10 @@ function load_colors(onoff) acblue = ansicolors.blue acmagenta= ansicolors.magenta acoff = ansicolors.reset + + acy = ansicolors.yellow + acc = ansicolors.cyan + acr = ansicolors.reset else -- 'no color' acgreen = "" @@ -146,6 +151,10 @@ function load_colors(onoff) acblue = "" acmagenta= "" acoff = "" + + acy = "" + acc = "" + acr = "" end end @@ -156,68 +165,66 @@ version = "1.0.5" desc = [[ -This script helps you to read, create and modify Legic Prime Tags (MIM22, MIM256, MIM1024) +This script helps you to read, create and modify Legic Prime Tags ( MIM22, MIM256, MIM1024 ) The virtual tag (and therefore the file to be saved) is always a MIM1024 tag. it's kinda interactive with following commands in three categories: Data I/O Segment Manipulation Token-Data ----------------- -------------------- ----------------- - ]]..acy..[[rt]]..acr..[[ => read Tag ]]..acy..[[as]]..acr..[[ => add Segment ]]..acy..[[mt]]..acr..[[ => make Token - ]]..acy..[[wt]]..acr..[[ => write Tag ]]..acy..[[es]]..acr..[[ => edit Segment Header ]]..acy..[[et]]..acr..[[ => edit Token data + ]]..acy..[[rt]]..acr..[[ -> read Tag ]]..acy..[[as]]..acr..[[ -> add Segment ]]..acy..[[mt]]..acr..[[ -> make Token + ]]..acy..[[wt]]..acr..[[ -> write Tag ]]..acy..[[es]]..acr..[[ -> edit Segment Header ]]..acy..[[et]]..acr..[[ -> edit Token data ]]..acy..[[ed]]..acr..[[ => edit Segment Data ]]..acy..[[tk]]..acr..[[ => toggle KGH-Flag File I/O ]]..acy..[[rs]]..acr..[[ => remove Segment - ----------------- ]]..acy..[[cc]]..acr..[[ => check Segment-CRC - ]]..acy..[[lf]]..acr..[[ => load bin File ]]..acy..[[ck]]..acr..[[ => check KGH - ]]..acy..[[sf]]..acr..[[ => save eml/bin File ]]..acy..[[ds]]..acr..[[ => dump Segments - ]]..acy..[[xf]]..acr..[[ => xor to File + ----------------- ]]..acy..[[cc]]..acr..[[ -> check Segment-CRC + ]]..acy..[[lf]]..acr..[[ -> load bin File ]]..acy..[[ck]]..acr..[[ -> check KGH + ]]..acy..[[sf]]..acr..[[ -> save eml/bin File ]]..acy..[[ds]]..acr..[[ -> dump Segments + ]]..acy..[[xf]]..acr..[[ -> xor to File (partially) known Segments Virtual Tags Script Output --------------------------- ------------------------------- ------------------------ - ]]..acy..[[dlc]]..acr..[[ => dump Legic-Cash ]]..acy..[[ct]]..acr..[[ => copy mainTag to backupTag ]]..acy..[[tac]]..acr..[[ => toggle ansicolors - ]]..acy..[[elc]]..acr..[[ => edit Legic-Cash ]]..acy..[[tc]]..acr..[[ => copy backupTag to mainTag - ]]..acy..[[d3p]]..acr..[[ => dump 3rd-Party-Cash ]]..acy..[[tt]]..acr..[[ => switch mainTag & backupTag - ]]..acy..[[e3p]]..acr..[[ => edit 3rd-Party-Cash ]]..acy..[[di]]..acr..[[ => dump mainTag + ]]..acy..[[dlc]]..acr..[[ -> dump Legic-Cash ]]..acy..[[ct]]..acr..[[ -> copy mainTag to backupTag ]]..acy..[[tac]]..acr..[[ -> toggle ansicolors + ]]..acy..[[elc]]..acr..[[ -> edit Legic-Cash ]]..acy..[[tc]]..acr..[[ -> copy backupTag to mainTag + ]]..acy..[[d3p]]..acr..[[ -> dump 3rd-Party-Cash ]]..acy..[[tt]]..acr..[[ -> switch mainTag & backupTag + ]]..acy..[[e3p]]..acr..[[ -> edit 3rd-Party-Cash ]]..acy..[[di]]..acr..[[ -> dump mainTag ]]..acy..[[do]]..acr..[[ => dump backupTag - - - rt: 'read tag' - reads a tag placed near to the PM3 - wt: 'write tag' - writes the content of the 'virtual inTag' to a tag placed near to th PM3 + rt: 'read tag' - reads a tag placed near to the PM3 + wt: 'write tag' - writes the content of the 'virtual inTag' to a tag placed near to th PM3 without the need of changing anything - MCD,MSN,MCC will be read from the tag before and applied to the output. - lf: 'load file' - load a (xored) binary file (*.bin) from the local Filesystem into the 'virtual inTag' - sf: 'save file' - saves the 'virtual inTag' to the local Filesystem as eml and bin (xored with Tag-MCC) - xf: 'xor file' - saves the 'virtual inTag' to the local Filesystem (xored with chosen MCC - use '00' for plain values) + lf: 'load file' - load a (xored) binary file (*.bin) from the local Filesystem into the 'virtual inTag' + sf: 'save file' - saves the 'virtual inTag' to the local Filesystem as eml and bin (xored with Tag-MCC) + xf: 'xor file' - saves the 'virtual inTag' to the local Filesystem (xored with chosen MCC - use '00' for plain values) - ct: 'copy tag' - copy the 'virtual Tag' to a second 'virtual TAG' - not useful yet, but inernally needed - tc: 'copy tag' - copy the 'second virtual Tag' to 'virtual TAG' - not useful yet, but inernally needed - tt: 'toggle tag' - copy mainTag to BackupTag and backupTag to mainTag + ct: 'copy tag' - copy the 'virtual Tag' to a second 'virtual TAG' - not useful yet, but inernally needed + tc: 'copy tag' - copy the 'second virtual Tag' to 'virtual TAG' - not useful yet, but inernally needed + tt: 'toggle tag' - copy mainTag to BackupTag and backupTag to mainTag - di: 'dump mainTag' - shows the current content of the 'virtual Tag' - do: 'dump backupTag' - shows the current content of the 'virtual outTag' - ds: 'dump Segments' - will show the content of a selected Segment - as: 'add Segment' - will add a 'empty' Segment to the inTag - es: 'edit Segment' - edit the Segment-Header of a selected Segment (len, WRP, WRC, RD, valid) + di: 'dump mainTag' - shows the current content of the 'virtual Tag' + do: 'dump backupTag' - shows the current content of the 'virtual outTag' + ds: 'dump Segments' - will show the content of a selected Segment + as: 'add Segment' - will add a 'empty' Segment to the inTag + es: 'edit Segment' - edit the Segment-Header of a selected Segment (len, WRP, WRC, RD, valid) all other Segment-Header-Values are either calculated or not needed to edit (yet) - ed: 'edit data' - edit the Data of a Segment (ADF-Aera / Stamp & Payload specific Data) - et: 'edit Token' - edit Data of a Token (CDF-Area / SAM, SAM64, SAM63, IAM, GAM specific Data) - mt: 'make Token' - create a Token 'from scratch' (guided) - rs: 'remove segment' - removes a Segment (except Segment 00, but this can be set to valid=0 for Master-Token) - cc: 'check Segment-CRC'- checks & calculates (if check failed) the Segment-CRC of all Segments - ck: 'check KGH-CRC' - checks the and calculates a 'Kaba Group Header' if one was detected + ed: 'edit data' - edit the Data of a Segment (ADF-Aera / Stamp & Payload specific Data) + et: 'edit Token' - edit Data of a Token (CDF-Area / SAM, SAM64, SAM63, IAM, GAM specific Data) + mt: 'make Token' - create a Token 'from scratch' (guided) + rs: 'remove segment' - removes a Segment (except Segment 00, but this can be set to valid=0 for Master-Token) + cc: 'check Segment-CRC' - checks & calculates (if check failed) the Segment-CRC of all Segments + ck: 'check KGH-CRC' - checks the and calculates a 'Kaba Group Header' if one was detected 'Kaba Group Header CRC calculation' - tk: 'toggle KGH' - toggle the (script-internal) flag for kgh-calculation for a segment - xc: 'etra c' - show string that was used to calculate the kgh-crc of a segment + tk: 'toggle KGH' - toggle the (script-internal) flag for kgh-calculation for a segment + xc: 'etra c' - show string that was used to calculate the kgh-crc of a segment -dlc: 'dump Legic-Cash' - show balance and checksums of a Legic-Cash Segment -elc: 'edit Legic-Cash' - edit values of a Legic-Cash Segment +dlc: 'dump Legic-Cash' - show balance and checksums of a Legic-Cash Segment +elc: 'edit Legic-Cash' - edit values of a Legic-Cash Segment -d3p: 'dump 3rd Party' - show balance, history and checksums of a (yet) unknown 3rd-Party Cash Segment -e3p: 'edit 3rd Party' - edit Data in 3rd-Party Cash Segment +d3p: 'dump 3rd Party' - show balance, history and checksums of a (yet) unknown 3rd-Party Cash Segment +e3p: 'edit 3rd Party' - edit Data in 3rd-Party Cash Segment -tac: 'toggle ansicolors'- switch on and off the colored text-output of this script +tac: 'toggle ansicolors' - switch on and off the colored text-output of this script default can be changed by setting the variable 'colored_output' to false ]] currentTag="inTAG" @@ -361,7 +368,7 @@ end function bytesToTable(bytes, bstart, bend) local t={} for i=0, (bend-bstart) do - t[i]=bytes[bstart+i] + t[i]=padString(bytes[bstart+i]) end return t end @@ -942,20 +949,21 @@ function dumpTagMap(tag, tagMap) end if (isPosCrc8(tagMap, v['start'])>0) then if ( checkMapCrc8(tagMap, bytes, isPosCrc8(tagMap, v['start']) ) ) then - io.write("("..("%04d"):format(v['start']).."-"..("%04d"):format(v['end'])..") "..acgreen..v['name']..acoff..":") + io.write("("..("%04d"):format(v['start']).."-"..("%04d"):format(v['end'])..") "..acgreen..v['name']..acoff) else - io.write("("..("%04d"):format(v['start']).."-"..("%04d"):format(v['end'])..") "..acred..v['name']..acoff..":") + io.write("("..("%04d"):format(v['start']).."-"..("%04d"):format(v['end'])..") "..acred..v['name']..acoff) end else - io.write("("..("%04d"):format(v['start']).."-"..("%04d"):format(v['end'])..") "..((v['highlight']) and acmagenta or acyellow)..v['name']..acoff..":") - end - temp="" - for i=((string.len(v['name']))/10), 2 do - temp=temp.."\t" + io.write("("..("%04d"):format(v['start']).."-"..("%04d"):format(v['end'])..") "..((v['highlight']) and acmagenta or acyellow)..v['name']..acoff) end + + temp = "" + while (#v['name'] + temp:len()) < 20 do temp = temp.." " end + for i=v['start'], v['end'] do temp=temp..bytes[i].." " end + print(temp) lastend=v['end'] end @@ -1001,10 +1009,21 @@ end -- edit existing Map function editTagMap(tag, tagMap) local t = [[ - Data: dm = show dr = dump raw -Mappings: im = insert am = add rm = remove - CRC8: ac8 = add sc8 = show rc8 = remove - : q = exit h = Help +]]..acc..[[Data]]..acr..[[ + + ]]..acy..[[dm]]..acr..[[ - show ]]..acy..[[dr]]..acr..[[ - dump raw + +]]..acc..[[Mappings]]..acr..[[ + + ]]..acy..[[im]]..acr..[[ - insert ]]..acy..[[am]]..acr..[[ - add + ]]..acy..[[rm]]..acr..[[ - remove ]]..acy..[[mas]]..acr..[[ - map all segments + +]]..acc..[[CRC8]]..acr..[[ + + ]]..acy..[[ac8]]..acr..[[ - add ]]..acy..[[sc8]]..acr..[[ - show + ]]..acy..[[rc8]]..acr..[[ - remove + + ]]..acy..[[q]]..acr..[[ - exit ]]..acy..[[h]]..acr..[[ - Help ]] --if(#tagMap.mappings==0) then oops("no mappings in tagMap"); return tagMap end @@ -2341,11 +2360,11 @@ function modifyHelp() Virtual Tags tagMap (partial) known Segments -------------------------------- --------------------- --------------------------- - ]]..acy..[[xf]]..acr..[[ => copy mainTag to backupTag ]]..acy..[[mm]]..acr..[[ => make (new) Map ]]..acy..[[dlc]]..acr..[[ => dump Legic-Cash - ]]..acy..[[xf]]..acr..[[ => copy backupTag to mainTag ]]..acy..[[em]]..acr..[[ => edit Map submenu ]]..acy..[[elc]]..acr..[[ => edit Legic-Cash - ]]..acy..[[xf]]..acr..[[ => switch mainTag & backupTag ]]..acy..[[lm]]..acr..[[ => load map from file ]]..acy..[[d3p]]..acr..[[ => dump 3rd-Party-Cash - ]]..acy..[[xf]]..acr..[[ => dump mainTag ]]..acy..[[sm]]..acr..[[ => save map to file ]]..acy..[[e3p]]..acr..[[ => edit 3rd-Party-Cash - ]]..acy..[[xf]]..acr..[[ => dump backupTag + ]]..acy..[[ct]]..acr..[[ => copy mainTag to backupTag ]]..acy..[[mm]]..acr..[[ => make (new) Map ]]..acy..[[dlc]]..acr..[[ => dump Legic-Cash + ]]..acy..[[tc]]..acr..[[ => copy backupTag to mainTag ]]..acy..[[em]]..acr..[[ => edit Map submenu ]]..acy..[[elc]]..acr..[[ => edit Legic-Cash + ]]..acy..[[tt]]..acr..[[ => switch mainTag & backupTag ]]..acy..[[lm]]..acr..[[ => load map from file ]]..acy..[[d3p]]..acr..[[ => dump 3rd-Party-Cash + ]]..acy..[[di]]..acr..[[ => dump mainTag ]]..acy..[[sm]]..acr..[[ => save map to file ]]..acy..[[e3p]]..acr..[[ => edit 3rd-Party-Cash + ]]..acy..[[do]]..acr..[[ => dump backupTag ]]..acy..[[h]]..acr..[[ => this help ]]..acy..[[q]]..acr..[[ => quit ]] From b314d1ef1c8ae7a5d69dbbab9247af6bcd7864a3 Mon Sep 17 00:00:00 2001 From: DidierA <1620015+DidierA@users.noreply.github.com> Date: Wed, 19 Jul 2023 21:15:07 +0200 Subject: [PATCH 039/299] Add MIFARE Plus commands in trace list --- CHANGELOG.md | 1 + client/src/cmdhflist.c | 224 +++++++++++++++++++++++++++++++++++++++++ client/src/cmdhflist.h | 2 + client/src/cmdhfmfp.c | 2 +- client/src/cmdtrace.c | 19 ++-- doc/commands.json | 11 +- include/protocols.h | 53 ++++++++++ 7 files changed, 300 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5711c1090..292bd4c12 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added `hf mfp list` - interprets MIFARE Plus commands in traces (@DidierA) - Changed `hf legic sim` - loop and return codes on deviceside updated to DEFINES (@iceman1001) - Changed `hf legic einfo` - now accepts the three different cardsizes as params (@iceman1001) - Fix `lf cotag reader -1` - now doesn't fail (@iceman1001) diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index 5ddd3f1fa..eea8378ae 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -1196,6 +1196,230 @@ void annotateMfDesfire(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { } } } +// codes for which no data is interpreted, returns the message to print. +const char *mfpGetAnnotationForCode(uint8_t code) { + struct mfp_code_msg { + uint8_t code; + const char *annotation; + } messages[] = { + { MFP_GETVERSION, "GET VERSION"}, + { MFP_ADDITIONALFRAME, "NEXT FRAME"}, + { MFP_AUTHENTICATENONFIRST, "FOLLOWING AUTH"}, + { MFP_AUTHENTICATECONTINUE, "SECOND AUTH STEP"}, + { MFP_RESETAUTH, "RESET AUTH"}, + { MFP_COMMITPERSO, "COMMIT PERSO"}, + { MFP_VCSUPPORTLASTISOL3, "CHECK VIRTUAL CARD"}, + { MFP_ISOSELECT, "SELECT VIRTUAL CARD"}, + { MFP_SETCONFIGSL1, "SET CONFIG SL1"}, + { MFP_MF_PERSONALIZEUIDUSAGE, "PERSONALIZE UID USAGE"}, + { MFP_READ_SIG, "READ SIGNATURE"}, + { MFDES_PREPARE_PC, "PREPARE PROXIMITY CHECK"}, + { MFDES_PROXIMITY_CHECK, "PROXIMITY CHECK"}, + { MFDES_VERIFY_PC, "VERIFY PROXIMITY CHECK"}, + { 0, NULL} + } ; + + for (struct mfp_code_msg *p=messages ; p->annotation != NULL ; p++) { + if (p->code == code) { + return p->annotation ; + } + } + return NULL ; +} + +// MIFARE Plus +void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { + + // If we are in Mifare Classic Authenticated mode, all the work has already be done elsewhere + if ((MifareAuthState != masNone) && (MifareAuthState != masError)) { + return ; + } + + // it's basically a ISO14443a tag, so try annotation from there + if (applyIso14443a(exp, size, cmd, cmdsize, false) == PM3_SUCCESS) { + return ; + } + + // ok this part is copy paste from annotateMfDesfire, it seems to work for MIFARE Plus also + if (((cmd[0] & 0xC0) == 0x00) && (cmdsize > 2)) { + + // PCB [CID] [NAD] [INF] CRC CRC + int pos = 1; + if ((cmd[0] & 0x08) == 0x08) // cid byte following + pos++; + + if ((cmd[0] & 0x04) == 0x04) // nad byte following + pos++; + + for (uint8_t i = 0; i < 2; i++, pos++) { + bool found_annotation = true; + + uint8_t *data = cmd + pos + 1; + // if the byte prior to the command is 90 the command is wrapped, so data starts 3 bytes later + if (i > 0 && cmd[pos - 1] == 0x90) { + data += 3; + } + uint8_t data_size = 0; + if (cmdsize > (data - cmd)) { + data_size = cmdsize - (data - cmd); + } + + // Messages for commands that do not need args are treated first + const char *annotation = mfpGetAnnotationForCode(cmd[pos]) ; + if (annotation != NULL) { + snprintf(exp, size, "%s", annotation) ; + break ; + } + + switch (cmd[pos]) { + case MFP_AUTHENTICATEFIRST: + case MFP_AUTHENTICATEFIRST_VARIANT: + if (data_size > 1) { + // key : uint16_t uKeyNum = 0x4000 + sectorNum * 2 + (keyB ? 1 : 0); + uint16_t uKeyNum = MemLeToUint2byte(data) ; + snprintf(exp, size, "FIRST AUTH (Keynr 0x%04X: %c sector %d)", uKeyNum, uKeyNum & 0x0001 ? 'B' : 'A', (uKeyNum - 0x4000)/2 ); + } else { + snprintf(exp, size, "FIRST AUTH") ; + } + break; + + case MFP_WRITEPERSO: + if (data_size > 1) { + uint16_t uKeyNum = MemLeToUint2byte(data) ; + snprintf(exp, size, "WRITE PERSO (Keynr 0x%04X)", uKeyNum); + } else { + snprintf(exp, size, "WRITE PERSO"); + } + break; + + case MFP_READENCRYPTEDNOMAC_MACED: + case MFP_READENCRYPTEDMAC_MACED: + case MFP_READENCRYPTEDNOMAC_UNMACED: + case MFP_READENCRYPTEDMAC_UNMACED: + if (data_size > 2) { + uint16_t uBlockNum = MemLeToUint2byte(data) ; + uint8_t uQty = data[2] ; + if (uQty != 1) { + snprintf(exp, size, "READ ENCRYPTED(%u-%u)", uBlockNum, uBlockNum+uQty-1); + } else { + snprintf(exp, size, "READ ENCRYPTED(%u)", uBlockNum); + } + } else { + snprintf(exp, size, "READ ENCRYPTED ?"); + } + break; + + case MFP_READPLAINNOMAC_MACED: + case MFP_READPLAINMAC_MACED: + case MFP_READPLAINNOMAC_UNMACED: + case MFP_READPLAINMAC_UNMACED: + if (data_size > 2) { + uint16_t uBlockNum = MemLeToUint2byte(data) ; + uint8_t uQty = data[2] ; + if (uQty != 1) { + snprintf(exp, size, "READ PLAIN(%u-%u)", uBlockNum, uBlockNum+uQty-1); + } else { + snprintf(exp, size, "READ PLAIN(%u)", uBlockNum); + } + } else { + snprintf(exp, size, "READ PLAIN ?"); + } + break; + + case MFP_WRITEPLAINNOMAC : + case MFP_WRITEPLAINMAC : + if (data_size > 1) { + uint16_t uBlockNum = MemLeToUint2byte(data) ; + snprintf(exp, size, "WRITE PLAIN(%u)", uBlockNum); + } else { + snprintf(exp, size, "WRITE PLAIN ?"); + } + break; + + case MFP_WRITEENCRYPTEDNOMAC: + case MFP_WRITEENCRYPTEDMAC : + if (data_size > 1) { + uint16_t uBlockNum = MemLeToUint2byte(data) ; + snprintf(exp, size, "WRITE ENCRYPTED(%u)", uBlockNum); + } else { + snprintf(exp, size, "WRITE ENCRYPTED ?"); + } + break; + + case MFP_INCREMENTNOMAC : + case MFP_INCREMENTMAC : + if (data_size > 1) { + uint16_t uBlockNum = MemLeToUint2byte(data) ; + snprintf(exp, size, "INCREMENT(%u)", uBlockNum); + } else { + snprintf(exp, size, "INCREMENT ?"); + } + break; + + case MFP_DECREMENTNOMAC : + case MFP_DECREMENTMAC : + if (data_size > 1) { + uint16_t uBlockNum = MemLeToUint2byte(data) ; + snprintf(exp, size, "DECREMENT(%u)", uBlockNum); + } else { + snprintf(exp, size, "DECREMENT ?"); + } + break; + + case MFP_TRANSFERNOMAC : + case MFP_TRANSFERMAC : + if (data_size > 1) { + uint16_t uBlockNum = MemLeToUint2byte(data) ; + snprintf(exp, size, "TRANSFER(%u)", uBlockNum); + } else { + snprintf(exp, size, "TRANSFER ?"); + } + break; + + case MFP_INCREMENTTRANSFERNOMAC: + case MFP_INCREMENTTRANSFERMAC : + if (data_size > 1) { + uint16_t uBlockNum = MemLeToUint2byte(data) ; + snprintf(exp, size, "INCREMENT, TRANSFER(%u)", uBlockNum); + } else { + snprintf(exp, size, "INCREMENT, TRANSFER ?"); + } + break; + + case MFP_DECREMENTTRANSFERNOMAC: + case MFP_DECREMENTTRANSFERMAC : + if (data_size > 1) { + uint16_t uBlockNum = MemLeToUint2byte(data) ; + snprintf(exp, size, "DECREMENT, TRANSFER(%u)", uBlockNum); + } else { + snprintf(exp, size, "DECREMENT, TRANSFER ?"); + } + break; + + case MFP_RESTORENOMAC : + case MFP_RESTOREMAC : + if (data_size > 1) { + uint16_t uBlockNum = MemLeToUint2byte(data) ; + snprintf(exp, size, "RESTORE(%u)", uBlockNum); + } else { + snprintf(exp, size, "RESTORE ?"); + } + break; + + default: + found_annotation = false; + break; + } + if (found_annotation) { + break; + } + } + } else { + // anything else + snprintf(exp, size, "?"); + } +} + /** 06 00 = INITIATE diff --git a/client/src/cmdhflist.h b/client/src/cmdhflist.h index 6499938eb..7c7e09ffb 100644 --- a/client/src/cmdhflist.h +++ b/client/src/cmdhflist.h @@ -56,6 +56,8 @@ void annotateIso7816(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize); void annotateIso14443b(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize); void annotateIso14443a(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, bool is_response); void annotateMfDesfire(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize); +const char *mfpGetAnnotationForCode(uint8_t code); +void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize); void annotateMifare(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, const uint8_t *parity, uint8_t paritysize, bool isResponse); void annotateLTO(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize); diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 52f3da57e..e8e2c7226 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1811,7 +1811,7 @@ static int CmdHFMFPNDEFWrite(const char *Cmd) { } static int CmdHFMFPList(const char *Cmd) { - return CmdTraceListAlias(Cmd, "hf mf", "mf"); + return CmdTraceListAlias(Cmd, "hf mfp", "mfp"); } static command_t CommandTable[] = { diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 326a646b9..0d47d2d7c 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -533,6 +533,7 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr crcStatus = !felica_CRC_check(frame + 2, data_len - 4); break; case PROTO_MIFARE: + case PROTO_MFPLUS: crcStatus = mifare_CRC_check(hdr->isResponse, frame, data_len); break; case ISO_14443A: @@ -603,7 +604,7 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr && protocol != FELICA && protocol != LTO && protocol != PROTO_CRYPTORF - && (hdr->isResponse || protocol == ISO_14443A || protocol == PROTO_MIFARE || protocol == SEOS) + && (hdr->isResponse || protocol == ISO_14443A || protocol == PROTO_MIFARE || protocol == PROTO_MFPLUS || protocol == SEOS) && (oddparity8(frame[j]) != ((parityBits >> (7 - (j & 0x0007))) & 0x01))) { snprintf(line[j / 18] + ((j % 18) * 4), 120, "%02x! ", frame[j]); @@ -701,6 +702,7 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr // mark short bytes (less than 8 Bit + Parity) if (protocol == ISO_14443A || protocol == PROTO_MIFARE || + protocol == PROTO_MFPLUS || protocol == THINFILM) { // approximated with 128 * (9 * data_len); @@ -747,6 +749,7 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr annotateIso14443a(explanation, sizeof(explanation), frame, data_len, hdr->isResponse); break; case PROTO_MIFARE: + case PROTO_MFPLUS: annotateMifare(explanation, sizeof(explanation), frame, data_len, parityBytes, TRACELOG_PARITY_LEN(hdr), hdr->isResponse); break; case PROTO_HITAG1: @@ -766,7 +769,6 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr } if (hdr->isResponse == false) { - switch (protocol) { case LEGIC: annotateLegic(explanation, sizeof(explanation), frame, data_len); @@ -774,6 +776,9 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr case MFDES: annotateMfDesfire(explanation, sizeof(explanation), frame, data_len); break; + case PROTO_MFPLUS: + annotateMfPlus(explanation, sizeof(explanation), frame, data_len); + break; case ISO_14443B: annotateIso14443b(explanation, sizeof(explanation), frame, data_len); break; @@ -901,7 +906,7 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr } } - if (protocol == PROTO_MIFARE) { + if (protocol == PROTO_MIFARE || protocol == PROTO_MFPLUS) { uint8_t mfData[32] = {0}; size_t mfDataLen = 0; if (DecodeMifareData(frame, data_len, parityBytes, hdr->isResponse, mfData, &mfDataLen, mfDicKeys, mfDicKeysCount)) { @@ -1200,6 +1205,7 @@ int CmdTraceList(const char *Cmd) { "trace list -t seos -> interpret as " _YELLOW_("SEOS") "\n" "trace list -t thinfilm -> interpret as " _YELLOW_("Thinfilm") "\n" "trace list -t topaz -> interpret as " _YELLOW_("Topaz") "\n" + "trace list -t mfp -> interpret as " _YELLOW_("MIFARE Plus") "\n" "\n" "trace list -t mf -f mfc_default_keys.dic -> use default dictionary file\n" "trace list -t 14a --frame -> show frame delay times\n" @@ -1266,6 +1272,7 @@ int CmdTraceList(const char *Cmd) { else if (strcmp(type, "seos") == 0) protocol = SEOS; else if (strcmp(type, "thinfilm") == 0) protocol = THINFILM; else if (strcmp(type, "topaz") == 0) protocol = TOPAZ; + else if (strcmp(type, "mfp") == 0) protocol = PROTO_MFPLUS; else if (strcmp(type, "") == 0) protocol = -1; else { PrintAndLogEx(FAILED, "Unknown protocol \"%s\"", type); @@ -1304,7 +1311,7 @@ int CmdTraceList(const char *Cmd) { PrintAndLogEx(INFO, _YELLOW_("start") " = start of start frame " _YELLOW_("end") " = end of frame. " _YELLOW_("src") " = source of transfer"); } - if (protocol == ISO_14443A || protocol == PROTO_MIFARE || protocol == MFDES || protocol == TOPAZ || protocol == LTO) { + if (protocol == ISO_14443A || protocol == PROTO_MIFARE || protocol == MFDES || protocol == PROTO_MFPLUS || protocol == TOPAZ || protocol == LTO) { if (use_us) PrintAndLogEx(INFO, _YELLOW_("ISO14443A") " - all times are in microseconds"); else @@ -1354,7 +1361,7 @@ int CmdTraceList(const char *Cmd) { uint32_t dicKeysCount = 0; bool dictionaryLoad = false; - if (protocol == PROTO_MIFARE) { + if (protocol == PROTO_MIFARE || protocol == PROTO_MFPLUS) { if (diclen > 0) { uint8_t *keyBlock = NULL; int res = loadFileDICTIONARY_safe(dictionary, (void **) &keyBlock, 6, &dicKeysCount); @@ -1387,7 +1394,7 @@ int CmdTraceList(const char *Cmd) { PrintAndLogEx(NORMAL, "------------+------------+-----+-------------------------------------------------------------------------+-----+--------------------"); // clean authentication data used with the mifare classic decrypt fct - if (protocol == ISO_14443A || protocol == PROTO_MIFARE) + if (protocol == ISO_14443A || protocol == PROTO_MIFARE || protocol == PROTO_MFPLUS) ClearAuthData(); uint32_t previous_EOT = 0; diff --git a/doc/commands.json b/doc/commands.json index 5686c7542..0618f5152 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -6159,10 +6159,10 @@ }, "hf mfp list": { "command": "hf mfp list", - "description": "Alias of `trace list -t mf` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "description": "Alias of `trace list -t mfp` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ - "hf mf list --frame -> show frame delay times", - "hf mf list -1 -> use trace buffer" + "hf mfp list --frame -> show frame delay times", + "hf mfp list -1 -> use trace buffer" ], "offline": true, "options": [ @@ -6176,7 +6176,7 @@ "or to import into Wireshark using encapsulation type \"ISO 14443\"", "-f, --file filename of dictionary" ], - "usage": "hf mf list [-h1crux] [--frame] [-f ]" + "usage": "hf mfp list [-h1crux] [--frame] [-f ]" }, "hf mfp mad": { "command": "hf mfp mad", @@ -11488,6 +11488,7 @@ "trace list -t seos -> interpret as SEOS", "trace list -t thinfilm -> interpret as Thinfilm", "trace list -t topaz -> interpret as Topaz", + "trace list -t mfp -> interpret as MIFARE Plus", "", "trace list -t mf -f mfc_default_keys.dic -> use default dictionary file", "trace list -t 14a --frame -> show frame delay times", @@ -11694,6 +11695,6 @@ "metadata": { "commands_extracted": 679, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-07-17T15:46:12" + "extracted_on": "2023-07-19T19:11:10" } } \ No newline at end of file diff --git a/include/protocols.h b/include/protocols.h index 721dccaf5..772105c9d 100644 --- a/include/protocols.h +++ b/include/protocols.h @@ -428,6 +428,7 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. #define PROTO_HITAGS 14 #define PROTO_CRYPTORF 15 #define SEOS 16 +#define PROTO_MFPLUS 17 // Picopass fuses #define FUSE_FPERS 0x80 @@ -620,6 +621,58 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. #define MFDES_E_FILE_NOT_FOUND 0xF0 #define MFDES_E_FILE_INTEGRITY 0xF1 +// MIFARE PLus EV2 Command set +// source: https://www.nxp.com/docs/en/data-sheet/MF1P(H)x2.pdf in Look-Up Tables + +#define MFP_READ_SIG 0x3C // same as DESFIRE +#define MFP_WRITEPERSO 0xA8 +#define MFP_COMMITPERSO 0xAA + +#define MFP_AUTHENTICATEFIRST 0x70 +#define MFP_AUTHENTICATEFIRST_VARIANT 0x73 +#define MFP_AUTHENTICATENONFIRST 0x76 +#define MFP_AUTHENTICATECONTINUE 0x72 +#define MFP_AUTHENTICATESECTORSWITCH 0x7A +#define MFP_RESETAUTH 0x78 + +#define MFP_VCSUPPORTLASTISOL3 0x4B +#define MFP_ISOSELECT 0xA4 + +#define MFP_GETVERSION 0x60 // same as DESFIRE +#define MFP_ADDITIONALFRAME 0xAF +#define MFP_SETCONFIGSL1 0x44 +#define MFP_MF_PERSONALIZEUIDUSAGE 0x40 + +// read commands +#define MFP_READENCRYPTEDNOMAC_MACED 0X30 +#define MFP_READENCRYPTEDMAC_MACED 0x31 +#define MFP_READPLAINNOMAC_MACED 0x32 +#define MFP_READPLAINMAC_MACED 0x33 +#define MFP_READENCRYPTEDNOMAC_UNMACED 0x34 +#define MFP_READENCRYPTEDMAC_UNMACED 0X35 +#define MFP_READPLAINNOMAC_UNMACED 0x36 +#define MFP_READPLAINMAC_UNMACED 0x37 + +// write commands +#define MFP_WRITEENCRYPTEDNOMAC 0xA0 +#define MFP_WRITEENCRYPTEDMAC 0xA1 +#define MFP_WRITEPLAINNOMAC 0xA2 +#define MFP_WRITEPLAINMAC 0xA3 + +// value commands +#define MFP_INCREMENTNOMAC 0xB0 +#define MFP_INCREMENTMAC 0xB1 +#define MFP_DECREMENTNOMAC 0xB2 +#define MFP_DECREMENTMAC 0xB3 +#define MFP_TRANSFERNOMAC 0xB4 +#define MFP_TRANSFERMAC 0xB5 +#define MFP_INCREMENTTRANSFERNOMAC 0xB6 +#define MFP_INCREMENTTRANSFERMAC 0xB7 +#define MFP_DECREMENTTRANSFERNOMAC 0xB8 +#define MFP_DECREMENTTRANSFERMAC 0xB9 +#define MFP_RESTORENOMAC 0xC2 +#define MFP_RESTOREMAC 0xC3 + // LEGIC Commands #define LEGIC_MIM_22 0x0D From 8543db11b59f34ca120a1e6eea7f5b43adee8dac Mon Sep 17 00:00:00 2001 From: DidierA <1620015+DidierA@users.noreply.github.com> Date: Wed, 19 Jul 2023 21:46:20 +0200 Subject: [PATCH 040/299] Avoid useless loop by moving check to the default case --- client/src/cmdhflist.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index eea8378ae..64f885713 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -1264,13 +1264,6 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { data_size = cmdsize - (data - cmd); } - // Messages for commands that do not need args are treated first - const char *annotation = mfpGetAnnotationForCode(cmd[pos]) ; - if (annotation != NULL) { - snprintf(exp, size, "%s", annotation) ; - break ; - } - switch (cmd[pos]) { case MFP_AUTHENTICATEFIRST: case MFP_AUTHENTICATEFIRST_VARIANT: @@ -1407,7 +1400,13 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { break; default: - found_annotation = false; + // Messages for commands that do not need args are treated here + const char *annotation = mfpGetAnnotationForCode(cmd[pos]) ; + if (annotation != NULL) { + snprintf(exp, size, "%s", annotation) ; + } else { + found_annotation = false; + } break; } if (found_annotation) { From e056459c038fdc3de96369fb9ad0a6b6114542c7 Mon Sep 17 00:00:00 2001 From: DidierA <1620015+DidierA@users.noreply.github.com> Date: Thu, 20 Jul 2023 02:19:02 +0200 Subject: [PATCH 041/299] trace list: add CID info in RATS and PPSS --- client/src/cmdhflist.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index 64f885713..8bcb7fef9 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -273,11 +273,13 @@ int applyIso14443a(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, bool i MifareAuthState = masNone; break; case ISO14443A_CMD_RATS: - snprintf(exp, size, "RATS"); + snprintf(exp, size, "RATS - FSDI=0x%x, CID=0x%x", (cmd[1] & 0xF0) >> 4, (cmd[1] & 0x0F) ); break; + /* Actually, PPSS is Dx case ISO14443A_CMD_PPS: snprintf(exp, size, "PPS"); break; + */ case ISO14443A_CMD_OPTS: snprintf(exp, size, "OPTIONAL TIMESLOT"); break; @@ -423,10 +425,14 @@ int applyIso14443a(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, bool i snprintf(exp, size, "FAST WRITE (" _MAGENTA_("%d-%d") ")", cmd[1], cmd[2]); else snprintf(exp, size, "?"); - break; + default: - return PM3_ESOFT; + if ( (cmd[0] & 0xF0) == 0xD0 && ( cmdsize == 4 || cmdsize == 5 )) { + snprintf(exp, size, "PPSS - CID=0x%x", cmd[0] & 0x0F) ; + } else { + return PM3_ESOFT; + } } } else { if (gs_mfuc_state == 1) { From 87d43b87d1d74f70ece380844d53362f6f875bfa Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 20 Jul 2023 09:39:12 +0200 Subject: [PATCH 042/299] fix workflows/uniq.yaml Lines containing # were entirely ignored but some contain a key, e.g. in iclass_default_keys.dic --- .github/workflows/uniq.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/uniq.yaml b/.github/workflows/uniq.yaml index 89f845483..a770a4fde 100644 --- a/.github/workflows/uniq.yaml +++ b/.github/workflows/uniq.yaml @@ -18,6 +18,5 @@ jobs: - name: check unique keys in dic files shell: bash run: | - find . -type f -name "*.dic" | xargs -I {} sh -c "echo {} && cat {} | grep -v '#' | sort | uniq -i -d -c | sort -n -r " - if [[ $(find . -type f -name "*.dic" | xargs -I {} sh -c "echo {} && cat {} | grep -v '#' | sort | uniq -i -d -c | sort -n -r " | grep -v "./" | wc -l) -gt 0 ]]; then exit 1; fi - + find . -type f -name "*.dic" | xargs -I {} sh -c "echo {} && cat {} | sed 's/ *#.*//;/^$/d' | sort | uniq -i -d -c | sort -n -r " + if [[ $(find . -type f -name "*.dic" | xargs -I {} sh -c "echo {} && cat {} | sed 's/ *#.*//;/^$/d' | sort | uniq -i -d -c | sort -n -r " | grep -v '^\./' | wc -l) -gt 0 ]]; then exit 1; fi From 89cbe3c7df34f7a98828c56d2f6d1dea2a1d5d07 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 20 Jul 2023 10:54:37 +0200 Subject: [PATCH 043/299] should fix macos compilation error introduced by 8543db11b59f34ca120a1e6eea7f5b43adee8dac --- client/src/cmdhflist.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index 64f885713..5d8a9d343 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -1399,7 +1399,7 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { } break; - default: + default: { // Messages for commands that do not need args are treated here const char *annotation = mfpGetAnnotationForCode(cmd[pos]) ; if (annotation != NULL) { @@ -1408,6 +1408,7 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { found_annotation = false; } break; + } } if (found_annotation) { break; From c5cfe593f5a681416de997a0b76631b059493932 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 20 Jul 2023 21:04:00 +0200 Subject: [PATCH 044/299] fix exec mode on source file --- client/src/cmdlfhid.c | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 client/src/cmdlfhid.c diff --git a/client/src/cmdlfhid.c b/client/src/cmdlfhid.c old mode 100755 new mode 100644 From 216ad5740b9d8319a7d43823feb590d657151f60 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 20 Jul 2023 21:12:21 +0200 Subject: [PATCH 045/299] fix `lf hitag eload` segmentation fault --- include/pm3_cmd.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index 0983ee2e1..13dca3b6c 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -271,7 +271,7 @@ typedef struct { typedef struct { uint8_t type; uint16_t len; - uint8_t *data; + uint8_t data[]; } PACKED lf_hitag_t; typedef struct { From 173379b9991220646577d821ddf492904fdecea9 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 20 Jul 2023 22:35:42 +0200 Subject: [PATCH 046/299] Rewrote completely cmds & options `lf hitag read/dump/wrbl/ta` for more coherence with other pm3 cmds. Still there remain strange things but it should be a step in the right direction... --- armsrc/hitag2.c | 4 +- client/src/cmdlfhitag.c | 557 +++++++++++++++++++++++++++------------- 2 files changed, 387 insertions(+), 174 deletions(-) diff --git a/armsrc/hitag2.c b/armsrc/hitag2.c index 90a667105..7206b735c 100644 --- a/armsrc/hitag2.c +++ b/armsrc/hitag2.c @@ -281,7 +281,7 @@ static void hitag2_handle_reader_command(uint8_t *rx, const size_t rxlen, uint8_ } break; - // Received RWD authentication challenge and respnse + // Received RWD authentication challenge and response case 64: { // Store the authentication attempt if (auth_table_len < (AUTH_TABLE_LENGTH - 8)) { @@ -891,7 +891,7 @@ static bool hitag2_test_auth_attempts(uint8_t *rx, const size_t rxlen, uint8_t * if (bCrypto) { Dbprintf("auth: %02x%02x%02x%02x%02x%02x%02x%02x Failed, removed entry!", NrAr[0], NrAr[1], NrAr[2], NrAr[3], NrAr[4], NrAr[5], NrAr[6], NrAr[7]); - // Removing failed entry from authentiations table + // Removing failed entry from authentications table memcpy(auth_table + auth_table_pos, auth_table + auth_table_pos + 8, 8); auth_table_len -= 8; diff --git a/client/src/cmdlfhitag.c b/client/src/cmdlfhitag.c index 8cd28b842..74c77b8f9 100644 --- a/client/src/cmdlfhitag.c +++ b/client/src/cmdlfhitag.c @@ -224,11 +224,11 @@ static int CmdLFHitagEload(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str1("f", "file", "", "Specfiy dump filename"), - arg_lit0("1", NULL, "Card type Hitag1"), - arg_lit0("2", NULL, "Card type Hitag2"), - arg_lit0("s", NULL, "Card type HitagS"), - arg_lit0("m", NULL, "Card type HitagM"), + arg_str1("f", "file", "", "Specify dump filename"), + arg_lit0("1", NULL, "Card type Hitag 1"), + arg_lit0("2", NULL, "Card type Hitag 2"), + arg_lit0("s", NULL, "Card type Hitag S"), + arg_lit0("m", NULL, "Card type Hitag M"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -243,9 +243,12 @@ static int CmdLFHitagEload(const char *Cmd) { bool use_htm = arg_get_lit(ctx, 5); CLIParserFree(ctx); - uint8_t n = (use_ht1 + use_ht2 + use_hts + use_htm); - if (n != 1) { - PrintAndLogEx(ERR, "error, only specify one Hitag type"); + if ((use_ht1 + use_ht2 + use_hts + use_htm) > 1) { + PrintAndLogEx(ERR, "error, specify only one Hitag type"); + return PM3_EINVARG; + } + if ((use_ht1 + use_ht2 + use_hts + use_htm) == 0) { + PrintAndLogEx(ERR, "error, specify one Hitag type"); return PM3_EINVARG; } @@ -288,16 +291,16 @@ static int CmdLFHitagEload(const char *Cmd) { static int CmdLFHitagSim(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "lf hitag sim", - "Simulate Hitag2 / HitagS transponder\n" + "Simulate Hitag transponder\n" "You need to `lf hitag eload` first", "lf hitag sim -2" ); void *argtable[] = { arg_param_begin, - arg_lit0("1", NULL, "simulate Hitag1"), - arg_lit0("2", NULL, "simulate Hitag2"), - arg_lit0("s", NULL, "simulate HitagS"), + arg_lit0("1", "ht1", "simulate Hitag 1"), + arg_lit0("2", "ht2", "simulate Hitag 2"), + arg_lit0("s", "hts", "simulate Hitag S"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -305,10 +308,15 @@ static int CmdLFHitagSim(const char *Cmd) { bool use_ht1 = arg_get_lit(ctx, 1); bool use_ht2 = arg_get_lit(ctx, 2); bool use_hts = arg_get_lit(ctx, 3); + bool use_htm = false; // not implemented yet CLIParserFree(ctx); - if ((use_ht1 + use_ht2 + use_hts) > 1) { - PrintAndLogEx(ERR, "error, Only specify one Hitag type"); + if ((use_ht1 + use_ht2 + use_hts + use_htm) > 1) { + PrintAndLogEx(ERR, "error, specify only one Hitag type"); + return PM3_EINVARG; + } + if ((use_ht1 + use_ht2 + use_hts + use_htm) == 0) { + PrintAndLogEx(ERR, "error, specify one Hitag type"); return PM3_EINVARG; } @@ -523,67 +531,85 @@ static int CmdLFHitagInfo(const char *Cmd) { return PM3_SUCCESS; } -// TODO: iceman -// Hitag2 reader, problem is that this command mixes up stuff. So 26 give uid. 21 etc will also give you a memory dump !? -// static int CmdLFHitagReader(const char *Cmd) { CLIParserContext *ctx; - CLIParserInit(&ctx, "lf hitag reader", - "Act like a Hitag Reader", - "Hitag S\n" - " lf hitag reader --01 --nrar 0102030411223344\n" - " lf hitag reader --02 -k 4F4E4D494B52\n" - "Hitag 2\n" - " lf hitag reader --21 -k 4D494B52\n" - " lf hitag reader --22 --nrar 0102030411223344\n" - " lf hitag reader --23 -k 4F4E4D494B52\n" - " lf hitag reader --26\n" + CLIParserInit(&ctx, "lf hitag read", + "Read Hitag memory\n" + "Crypto mode key format: ISK high + ISK low", + "Hitag S, plain mode\n" + " lf hitag read --hts\n" + "Hitag S, challenge mode\n" + " lf hitag read --hts --nrar 0102030411223344\n" + "Hitag S, crypto mode => use default key 4F4E4D494B52 (ONMIKR)\n" + " lf hitag read --hts --crypto\n" + "Hitag S, long key = crypto mode\n" + " lf hitag read --hts -k 4F4E4D494B52\n\n" + + "Hitag 2, password mode => use default key 4D494B52 (MIKR)\n" + " lf hitag read --ht2 --pwd\n" + "Hitag 2, providing a short key = password mode\n" + " lf hitag read --ht2 -k 4D494B52\n" + "Hitag 2, challenge mode\n" + " lf hitag read --ht2 --nrar 0102030411223344\n" + "Hitag 2, crypto mode => use default key 4F4E4D494B52 (ONMIKR)\n" + " lf hitag read --ht2 --crypto\n" + "Hitag 2, providing a long key = crypto mode\n" + " lf hitag read --ht2 -k 4F4E4D494B52\n" ); void *argtable[] = { arg_param_begin, - arg_lit0(NULL, "01", "HitagS, read all pages, challenge mode"), - arg_lit0(NULL, "02", "HitagS, read all pages, crypto mode. Set key=0 for no auth"), - arg_lit0(NULL, "21", "Hitag2, read all pages, password mode. def 4D494B52 (MIKR)"), - arg_lit0(NULL, "22", "Hitag2, read all pages, challenge mode"), - arg_lit0(NULL, "23", "Hitag2, read all pages, crypto mode. Key ISK high + ISK low. def 4F4E4D494B52 (ONMIKR)"), - arg_lit0(NULL, "25", "Hitag2, test recorded authentications (replay?)"), - arg_lit0(NULL, "26", "Hitag2, read UID"), + arg_lit0(NULL, "hts", "Hitag S"), + arg_lit0(NULL, "ht2", "Hitag 2"), + arg_lit0(NULL, "pwd", "password mode"), + arg_str0(NULL, "nrar", "", "nonce / answer writer, 8 hex bytes"), + arg_lit0(NULL, "crypto", "crypto mode"), arg_str0("k", "key", "", "key, 4 or 6 hex bytes"), - arg_str0(NULL, "nrar", "", "nonce / answer reader, 8 hex bytes"), +// currently pm3 fw reads all the memory anyway +// arg_int1("p", "page", "", "page address to write to"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); - // Hitag S - bool s01 = arg_get_lit(ctx, 1); - bool s02 = arg_get_lit(ctx, 2); + bool use_ht1 = false; // not yet implemented + bool use_hts = arg_get_lit(ctx, 1); + bool use_ht2 = arg_get_lit(ctx, 2); + bool use_htm = false; // not yet implemented - // Hitag 2 - bool h21 = arg_get_lit(ctx, 3); - bool h22 = arg_get_lit(ctx, 4); - bool h23 = arg_get_lit(ctx, 5); - bool h25 = arg_get_lit(ctx, 6); - bool h26 = arg_get_lit(ctx, 7); - - uint8_t key[6]; - int keylen = 0; - int res = CLIParamHexToBuf(arg_get_str(ctx, 8), key, sizeof(key), &keylen); + bool use_plain = false; + bool use_pwd = arg_get_lit(ctx, 3); + uint8_t nrar[8]; + int nalen = 0; + int res = CLIParamHexToBuf(arg_get_str(ctx, 4), nrar, sizeof(nrar), &nalen); if (res != 0) { CLIParserFree(ctx); return PM3_EINVARG; } + bool use_nrar = nalen > 0; + bool use_crypto = arg_get_lit(ctx, 5); - uint8_t nrar[8]; - int nalen = 0; - res = CLIParamHexToBuf(arg_get_str(ctx, 9), nrar, sizeof(nrar), &nalen); - CLIParserFree(ctx); + uint8_t key[6]; + int keylen = 0; + res = CLIParamHexToBuf(arg_get_str(ctx, 6), key, sizeof(key), &keylen); if (res != 0) { + CLIParserFree(ctx); + return PM3_EINVARG; + } +// uint32_t page = arg_get_u32_def(ctx, 6, 0); + + CLIParserFree(ctx); + + // sanity checks + if ((use_ht1 + use_ht2 + use_hts + use_htm) > 1) { + PrintAndLogEx(ERR, "error, specify only one Hitag type"); + return PM3_EINVARG; + } + if ((use_ht1 + use_ht2 + use_hts + use_htm) == 0) { + PrintAndLogEx(ERR, "error, specify one Hitag type"); return PM3_EINVARG; } - // sanity checks if (keylen != 0 && keylen != 4 && keylen != 6) { PrintAndLogEx(WARNING, "Wrong KEY len expected 0, 4 or 6, got %d", keylen); return PM3_EINVARG; @@ -594,48 +620,73 @@ static int CmdLFHitagReader(const char *Cmd) { return PM3_EINVARG; } - uint8_t foo = (s01 + s02 + h21 + h22 + h23 + h25 + h26); + // complete options + if (keylen == 4) { + use_pwd = true; + } + if (keylen == 6) { + use_crypto = true; + } + if ((keylen == 0) && use_pwd) { + memcpy(key, "MIKR", 4); + keylen = 4; + } + if ((keylen == 0) && use_crypto) { + memcpy(key, "ONMIKR", 6); + keylen = 6; + } + + // check coherence + uint8_t foo = (use_plain + use_pwd + use_nrar + use_crypto); if (foo > 1) { - PrintAndLogEx(WARNING, "Only specify one HITAG reader cmd"); + PrintAndLogEx(WARNING, "Specify only one authentication mode"); return PM3_EINVARG; } else if (foo == 0) { - PrintAndLogEx(WARNING, "Specify one HITAG reader cms"); + if (use_hts) { + use_plain = true; + } else { + PrintAndLogEx(WARNING, "Specify one authentication mode"); + return PM3_EINVARG; + } + } + + if (use_hts && use_pwd) { // not sure for the other types... + PrintAndLogEx(WARNING, "Chosen Hitag type does not have Password mode"); + return PM3_EINVARG; + } + + if (use_ht2 && use_plain) { // not sure for the other types... + PrintAndLogEx(WARNING, "Chosen Hitag type does not have Plain mode"); return PM3_EINVARG; } hitag_function htf; hitag_data htd; memset(&htd, 0, sizeof(htd)); - - - uint16_t cmd = CMD_LF_HITAG_READER; - if (s01) { + uint16_t cmd; + if (use_hts && use_nrar) { cmd = CMD_LF_HITAGS_READ; htf = RHTSF_CHALLENGE; memcpy(htd.auth.NrAr, nrar, sizeof(htd.auth.NrAr)); - } - if (s02) { + } else if (use_hts && use_crypto) { cmd = CMD_LF_HITAGS_READ; htf = RHTSF_KEY; memcpy(htd.crypto.key, key, sizeof(htd.crypto.key)); - } - if (h21) { + } else if (use_ht2 && use_pwd) { + cmd = CMD_LF_HITAG_READER; htf = RHT2F_PASSWORD; memcpy(htd.pwd.password, key, sizeof(htd.pwd.password)); - } - if (h22) { + } else if (use_ht2 && use_nrar) { + cmd = CMD_LF_HITAG_READER; htf = RHT2F_AUTHENTICATE; memcpy(htd.auth.NrAr, nrar, sizeof(htd.auth.NrAr)); - } - if (h23) { + } else if (use_ht2 && use_crypto) { htf = RHT2F_CRYPTO; + cmd = CMD_LF_HITAG_READER; memcpy(htd.crypto.key, key, sizeof(htd.crypto.key)); - } - if (h25) { - htf = RHT2F_TEST_AUTH_ATTEMPTS; - } - if (h26) { - htf = RHT2F_UID_ONLY; + } else { + PrintAndLogEx(WARNING, "Sorry, not yet implemented"); + return PM3_ENOTIMPL; } clearCommandBuffer(); @@ -653,21 +704,13 @@ static int CmdLFHitagReader(const char *Cmd) { uint32_t id = bytes_to_num(resp.data.asBytes, 4); uint8_t *data = resp.data.asBytes; PrintAndLogEx(SUCCESS, " UID: " _YELLOW_("%08x"), id); - - if (htf != RHT2F_UID_ONLY) { - - // block3, 1 byte - printHitag2Configuration(data[4 * 3]); - - // print data - print_hex_break(data, 48, 4); - - printHitag2PaxtonDowngrade(data); - } + printHitag2Configuration(data[4 * 3]); + print_hex_break(data, 48, 4); + printHitag2PaxtonDowngrade(data); return PM3_SUCCESS; } -static int CmdLFHitagCheckChallenges(const char *Cmd) { +static int CmdLFHitagSCheckChallenges(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "lf hitag cc", @@ -708,92 +751,169 @@ static int CmdLFHitagCheckChallenges(const char *Cmd) { return PM3_SUCCESS; } +static int CmdLFHitag2CheckChallenges(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "lf hitag ta", + "Test recorded authentications (replay?)", + "lf hitag ta" + ); + + clearCommandBuffer(); + SendCommandMIX(CMD_LF_HITAG_READER, RHT2F_TEST_AUTH_ATTEMPTS, 0, 0, NULL, 0); + PacketResponseNG resp; + if (WaitForResponseTimeout(CMD_ACK, &resp, 2000) == false) { + PrintAndLogEx(WARNING, "timeout while waiting for reply."); + return PM3_ETIMEOUT; + } + if (resp.oldarg[0] == false) { + PrintAndLogEx(DEBUG, "DEBUG: Error - hitag failed"); + return PM3_ESOFT; + } + + // FIXME: doegox: not sure what this fct does and what it returns... + return PM3_SUCCESS; +} + + static int CmdLFHitagWriter(const char *Cmd) { CLIParserContext *ctx; - CLIParserInit(&ctx, "lf hitag writer", - "Act like a Hitag writer" - "In password mode the default key is 4D494B52 (MIKR)\n" - "In crypto mode the default key is 4F4E4D494B52 (ONMIKR) format: ISK high + ISK low.", - "Hitag S\n" - " lf hitag writer --03 --nrar 0102030411223344 -p 3 -d 01020304\n" - " lf hitag writer --04 -k 4F4E4D494B52 -p 3 -d 01020304\n" - "Hitag 2\n" - " lf hitag writer --24 -k 4F4E4D494B52 -p 3 -d 01020304\n" - " lf hitag writer --27 -k 4D494B52 -p 3 -d 01020304\n" + CLIParserInit(&ctx, "lf hitag wrbl", + "Write a page in Hitag memory\n" + "Crypto mode key format: ISK high + ISK low", + "Hitag S, plain mode\n" + " lf hitag wrbl --hts -p 6 -d 01020304\n" + "Hitag S, challenge mode\n" + " lf hitag wrbl --hts --nrar 0102030411223344 -p 6 -d 01020304\n" + "Hitag S, crypto mode => use default key 4F4E4D494B52 (ONMIKR)\n" + " lf hitag wrbl --hts --crypto -p 6 -d 01020304\n" + "Hitag S, long key = crypto mode\n" + " lf hitag wrbl --hts -k 4F4E4D494B52 -p 6 -d 01020304\n\n" + + "Hitag 2, password mode => use default key 4D494B52 (MIKR)\n" + " lf hitag wrbl --ht2 --pwd -p 6 -d 01020304\n" + "Hitag 2, providing a short key = password mode\n" + " lf hitag wrbl --ht2 -k 4D494B52 -p 6 -d 01020304\n" + "Hitag 2, challenge mode\n" + " lf hitag wrbl --ht2 --nrar 0102030411223344 -p 6 -d 01020304\n" + "Hitag 2, crypto mode => use default key 4F4E4D494B52 (ONMIKR)\n" + " lf hitag wrbl --ht2 --crypto -p 6 -d 01020304\n" + "Hitag 2, providing a long key = crypto mode\n" + " lf hitag wrbl --ht2 -k 4F4E4D494B52 -p 6 -d 01020304\n" ); void *argtable[] = { arg_param_begin, - arg_lit0(NULL, "03", "HitagS, write page, challenge mode"), - arg_lit0(NULL, "04", "HitagS, write page, crypto mode. Set key=0 for no auth"), - arg_lit0(NULL, "24", "Hitag2, write page, crypto mode."), - arg_lit0(NULL, "27", "Hitag2, write page, password mode"), - arg_int1("p", "page", "", "page address to write to"), - arg_str0("d", "data", "", "data, 4 hex bytes"), - arg_str0("k", "key", "", "key, 4 or 6 hex bytes"), + arg_lit0(NULL, "hts", "Hitag S"), + arg_lit0(NULL, "ht2", "Hitag 2"), + arg_lit0(NULL, "pwd", "password mode"), arg_str0(NULL, "nrar", "", "nonce / answer writer, 8 hex bytes"), + arg_lit0(NULL, "crypto", "crypto mode"), + arg_str0("k", "key", "", "key, 4 or 6 hex bytes"), + arg_int1("p", "page", "", "page address to write to"), + arg_str1("d", "data", "", "data, 4 hex bytes"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); - // Hitag S - bool s03 = arg_get_lit(ctx, 1); - bool s04 = arg_get_lit(ctx, 2); + bool use_ht1 = false; // not yet implemented + bool use_hts = arg_get_lit(ctx, 1); + bool use_ht2 = arg_get_lit(ctx, 2); + bool use_htm = false; // not yet implemented - // Hitag 2 - bool h24 = arg_get_lit(ctx, 3); - bool h27 = arg_get_lit(ctx, 4); - - uint32_t page = arg_get_u32_def(ctx, 5, 0); - - uint8_t data[4]; - int dlen = 0; - int res = CLIParamHexToBuf(arg_get_str(ctx, 6), data, sizeof(data), &dlen); + bool use_plain = false; + bool use_pwd = arg_get_lit(ctx, 3); + uint8_t nrar[8]; + int nalen = 0; + int res = CLIParamHexToBuf(arg_get_str(ctx, 4), nrar, sizeof(nrar), &nalen); if (res != 0) { CLIParserFree(ctx); return PM3_EINVARG; } + bool use_nrar = nalen > 0; + bool use_crypto = arg_get_lit(ctx, 5); uint8_t key[6]; int keylen = 0; - res = CLIParamHexToBuf(arg_get_str(ctx, 7), key, sizeof(key), &keylen); + res = CLIParamHexToBuf(arg_get_str(ctx, 6), key, sizeof(key), &keylen); if (res != 0) { CLIParserFree(ctx); return PM3_EINVARG; } - uint8_t nrar[8]; - int nalen = 0; - res = CLIParamHexToBuf(arg_get_str(ctx, 8), nrar, sizeof(nrar), &nalen); + uint32_t page = arg_get_u32_def(ctx, 7, 0); + + uint8_t data[4]; + int dlen = 0; + res = CLIParamHexToBuf(arg_get_str(ctx, 8), data, sizeof(data), &dlen); + if (res != 0) { + CLIParserFree(ctx); + return PM3_EINVARG; + } CLIParserFree(ctx); - if (res != 0) { + // sanity checks + if ((use_ht1 + use_ht2 + use_hts + use_htm) > 1) { + PrintAndLogEx(ERR, "error, specify only one Hitag type"); + return PM3_EINVARG; + } + if ((use_ht1 + use_ht2 + use_hts + use_htm) == 0) { + PrintAndLogEx(ERR, "error, specify one Hitag type"); + return PM3_EINVARG; + } + + if (keylen != 0 && keylen != 4 && keylen != 6) { + PrintAndLogEx(WARNING, "Wrong KEY len expected 0, 4 or 6, got %d", keylen); return PM3_EINVARG; } - // sanity checks if (dlen != sizeof(data)) { PrintAndLogEx(WARNING, "Wrong DATA len expected 4, got %d", dlen); return PM3_EINVARG; } - if (keylen != 0 && keylen != 6 && keylen != 4) { - PrintAndLogEx(WARNING, "Wrong KEY len expected 0, 4 or 6, got %d", keylen); - return PM3_EINVARG; - } - if (nalen != 0 && nalen != 8) { PrintAndLogEx(WARNING, "Wrong NR/AR len expected 0 or 8, got %d", nalen); return PM3_EINVARG; } - uint8_t foo = (s03 + s04 + h24 + h27); + // complete options + if (keylen == 4) { + use_pwd = true; + } + if (keylen == 6) { + use_crypto = true; + } + if ((keylen == 0) && use_pwd) { + memcpy(key, "MIKR", 4); + keylen = 4; + } + if ((keylen == 0) && use_crypto) { + memcpy(key, "ONMIKR", 6); + keylen = 6; + } + + // check coherence + uint8_t foo = (use_plain + use_pwd + use_nrar + use_crypto); if (foo > 1) { - PrintAndLogEx(WARNING, "Only specify one HITAG write cmd"); + PrintAndLogEx(WARNING, "Specify only one authentication mode"); return PM3_EINVARG; } else if (foo == 0) { - PrintAndLogEx(WARNING, "Specify one HITAG write cmd"); + if (use_hts) { + use_plain = true; + } else { + PrintAndLogEx(WARNING, "Specify one authentication mode"); + return PM3_EINVARG; + } + } + + if (use_hts && use_pwd) { // not sure for the other types... + PrintAndLogEx(WARNING, "Chosen Hitag type does not have Password mode"); + return PM3_EINVARG; + } + + if (use_ht2 && use_plain) { // not sure for the other types... + PrintAndLogEx(WARNING, "Chosen Hitag type does not have Plain mode"); return PM3_EINVARG; } @@ -801,29 +921,33 @@ static int CmdLFHitagWriter(const char *Cmd) { hitag_data htd; memset(&htd, 0, sizeof(htd)); - if (s03) { + if (use_hts && use_nrar) { htf = WHTSF_CHALLENGE; memcpy(htd.auth.NrAr, nrar, sizeof(htd.auth.NrAr)); memcpy(htd.auth.data, data, sizeof(data)); - } - if (s04) { + PrintAndLogEx(INFO, "Authenticating to Hitag S in Challenge mode"); + } else if (use_hts && use_crypto) { htf = WHTSF_KEY; memcpy(htd.crypto.key, key, sizeof(htd.crypto.key)); memcpy(htd.crypto.data, data, sizeof(data)); - } - if (h24) { - htf = WHT2F_CRYPTO; - memcpy(htd.crypto.key, key, sizeof(htd.crypto.key)); - memcpy(htd.crypto.data, data, sizeof(data)); - } - if (h27) { + PrintAndLogEx(INFO, "Authenticating to Hitag S in Crypto mode"); + } else if (use_ht2 && use_pwd) { htf = WHT2F_PASSWORD; memcpy(htd.pwd.password, key, sizeof(htd.pwd.password)); memcpy(htd.crypto.data, data, sizeof(data)); + PrintAndLogEx(INFO, "Authenticating to Hitag 2 in Password mode"); + } else if (use_ht2 && use_crypto) { + htf = WHT2F_CRYPTO; + memcpy(htd.crypto.key, key, sizeof(htd.crypto.key)); + memcpy(htd.crypto.data, data, sizeof(data)); + PrintAndLogEx(INFO, "Authenticating to Hitag 2 in Crypto mode"); + } else { + PrintAndLogEx(WARNING, "Sorry, not yet implemented"); + return PM3_ENOTIMPL; } - + uint16_t cmd = CMD_LF_HITAGS_WRITE; clearCommandBuffer(); - SendCommandMIX(CMD_LF_HITAGS_WRITE, htf, 0, page, &htd, sizeof(htd)); + SendCommandMIX(cmd, htf, 0, page, &htd, sizeof(htd)); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 4000) == false) { PrintAndLogEx(WARNING, "timeout while waiting for reply."); @@ -841,56 +965,132 @@ static int CmdLFHitag2Dump(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "lf hitag dump", - "Read all card memory and save to file" - "In password mode the default key is 4D494B52 (MIKR)\n" - "In crypto mode the default key is 4F4E4D494B52 (ONMIKR) format: ISK high + ISK low.", - "lf hitag dump -k 4F4E4D494B52\n" - "lf hitag dump -k 4D494B52\n" + "Read all Hitag 2 card memory and save to file\n" + "Crypto mode key format: ISK high + ISK low", + "Password mode => use default key 4D494B52 (MIKR)\n" + " lf hitag dump --pwd\n" + "Short key = password mode\n" + " lf hitag dump -k 4D494B52\n" + "Challenge mode\n" + " lf hitag dump --nrar 0102030411223344\n" + "Crypto mode => use default key 4F4E4D494B52 (ONMIKR)\n" + " lf hitag dump --crypto\n" + "Long key = crypto mode\n" + " lf hitag dump -k 4F4E4D494B52\n" ); void *argtable[] = { arg_param_begin, - arg_str0("f", "file", "", "specify file name"), - arg_str0("k", "key", "", "key, 4 or 6 hex bytes"), + arg_lit0(NULL, "pwd", "password mode"), arg_str0(NULL, "nrar", "", "nonce / answer reader, 8 hex bytes"), + arg_lit0(NULL, "crypto", "crypto mode"), + arg_str0("k", "key", "", "key, 4 or 6 hex bytes"), + arg_str0("f", "file", "", "specify file name"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); - int fnlen = 0; - char filename[FILE_PATH_SIZE] = {0}; - CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); + bool use_ht1 = false; // not yet implemented + bool use_hts = false; // not yet implemented + bool use_ht2 = true; + bool use_htm = false; // not yet implemented + + bool use_plain = false; + bool use_pwd = arg_get_lit(ctx, 1); + uint8_t nrar[8]; + int nalen = 0; + int res = CLIParamHexToBuf(arg_get_str(ctx, 2), nrar, sizeof(nrar), &nalen); + if (res != 0) { + CLIParserFree(ctx); + return PM3_EINVARG; + } + bool use_nrar = nalen > 0; + bool use_crypto = arg_get_lit(ctx, 3); uint8_t key[6]; int keylen = 0; - int res = CLIParamHexToBuf(arg_get_str(ctx, 2), key, sizeof(key), &keylen); + res = CLIParamHexToBuf(arg_get_str(ctx, 4), key, sizeof(key), &keylen); if (res != 0) { CLIParserFree(ctx); return PM3_EINVARG; } - uint8_t nrar[8]; - int nalen = 0; - res = CLIParamHexToBuf(arg_get_str(ctx, 3), nrar, sizeof(nrar), &nalen); + int fnlen = 0; + char filename[FILE_PATH_SIZE] = {0}; + CLIParamStrToBuf(arg_get_str(ctx, 5), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); + CLIParserFree(ctx); - if (res != 0) { + + // sanity checks + if ((use_ht1 + use_ht2 + use_hts + use_htm) > 1) { + PrintAndLogEx(ERR, "error, specify only one Hitag type"); + return PM3_EINVARG; + } + if ((use_ht1 + use_ht2 + use_hts + use_htm) == 0) { + PrintAndLogEx(ERR, "error, specify one Hitag type"); + return PM3_EINVARG; + } + + if (keylen != 0 && keylen != 4 && keylen != 6) { + PrintAndLogEx(WARNING, "Wrong KEY len expected 0, 4 or 6, got %d", keylen); + return PM3_EINVARG; + } + + // complete options + if (keylen == 4) { + use_pwd = true; + } + if (keylen == 6) { + use_crypto = true; + } + if ((keylen == 0) && use_pwd) { + memcpy(key, "MIKR", 4); + keylen = 4; + } + if ((keylen == 0) && use_crypto) { + memcpy(key, "ONMIKR", 6); + keylen = 6; + } + + // check coherence + uint8_t foo = (use_plain + use_pwd + use_nrar + use_crypto); + if (foo > 1) { + PrintAndLogEx(WARNING, "Specify only one authentication mode"); + return PM3_EINVARG; + } else if (foo == 0) { + if (use_hts) { + use_plain = true; + } else { + PrintAndLogEx(WARNING, "Specify one authentication mode"); + return PM3_EINVARG; + } + } + + if (use_hts && use_pwd) { // not sure for the other types... + PrintAndLogEx(WARNING, "Chosen Hitag type does not have Password mode"); + return PM3_EINVARG; + } + + if (use_ht2 && use_plain) { // not sure for the other types... + PrintAndLogEx(WARNING, "Chosen Hitag type does not have Plain mode"); return PM3_EINVARG; } hitag_function htf; hitag_data htd; memset(&htd, 0, sizeof(htd)); - - if (keylen == 6) { - htf = RHT2F_CRYPTO; - memcpy(htd.crypto.key, key, sizeof(htd.crypto.key)); - PrintAndLogEx(INFO, "Authenticating in crypto mode"); - } else { + if (use_ht2 && use_pwd) { htf = RHT2F_PASSWORD; memcpy(htd.pwd.password, key, sizeof(htd.pwd.password)); - PrintAndLogEx(INFO, "Authenticating in password mode"); + PrintAndLogEx(INFO, "Authenticating to Hitag 2 in Password mode"); + } else if (use_ht2 && use_crypto) { + htf = RHT2F_CRYPTO; + memcpy(htd.crypto.key, key, sizeof(htd.crypto.key)); + PrintAndLogEx(INFO, "Authenticating to Hitag 2 in Crypto mode"); + } else { + PrintAndLogEx(WARNING, "Sorry, not yet implemented"); + return PM3_ENOTIMPL; } - uint16_t cmd = CMD_LF_HITAG_READER; clearCommandBuffer(); SendCommandMIX(cmd, htf, 0, 0, &htd, sizeof(htd)); @@ -909,7 +1109,8 @@ static int CmdLFHitag2Dump(const char *Cmd) { if (data == NULL) return PM3_ESOFT; - PrintAndLogEx(SUCCESS, "Dumping tag memory..."); + uint32_t id = bytes_to_num(resp.data.asBytes, 4); + PrintAndLogEx(SUCCESS, " UID: " _YELLOW_("%08x"), id); if (fnlen < 1) { char *fptr = filename; @@ -917,8 +1118,16 @@ static int CmdLFHitag2Dump(const char *Cmd) { FillFileNameByUID(fptr, data, "-dump", 4); } + // block3, 1 byte + printHitag2Configuration(data[4 * 3]); + + // print data print_hex_break(data, 48, 4); + printHitag2PaxtonDowngrade(data); + + PrintAndLogEx(SUCCESS, "Dumping tag memory..."); + pm3_save_dump(filename, data, 48, jsfHitag, 4); return PM3_SUCCESS; } @@ -982,16 +1191,20 @@ void annotateHitagS(char *exp, size_t size, const uint8_t *cmd, uint8_t cmdsize, } static command_t CommandTable[] = { + {"-----------", CmdHelp, IfPm3Hitag, "------------------------ " _CYAN_("General") " ------------------------"}, {"help", CmdHelp, AlwaysAvailable, "This help"}, - {"eload", CmdLFHitagEload, IfPm3Hitag, "Load Hitag dump file into emulator memory"}, {"list", CmdLFHitagList, AlwaysAvailable, "List Hitag trace history"}, - {"info", CmdLFHitagInfo, IfPm3Hitag, "Hitag2 tag information"}, - {"reader", CmdLFHitagReader, IfPm3Hitag, "Act like a Hitag reader"}, - {"sim", CmdLFHitagSim, IfPm3Hitag, "Simulate Hitag transponder"}, + {"-----------", CmdHelp, IfPm3Hitag, "----------------------- " _CYAN_("operations") " -----------------------"}, + {"info", CmdLFHitagInfo, IfPm3Hitag, "Hitag 2 tag information"}, + {"dump", CmdLFHitag2Dump, IfPm3Hitag, "Dump Hitag 2 tag"}, + {"read", CmdLFHitagReader, IfPm3Hitag, "Read Hitag memory"}, + {"wrbl", CmdLFHitagWriter, IfPm3Hitag, "Write a block (page) in Hitag memory"}, {"sniff", CmdLFHitagSniff, IfPm3Hitag, "Eavesdrop Hitag communication"}, - {"writer", CmdLFHitagWriter, IfPm3Hitag, "Act like a Hitag writer"}, - {"dump", CmdLFHitag2Dump, IfPm3Hitag, "Dump Hitag2 tag"}, - {"cc", CmdLFHitagCheckChallenges, IfPm3Hitag, "Test all challenges"}, + {"cc", CmdLFHitagSCheckChallenges, IfPm3Hitag, "Hitag S: test all provided challenges"}, + {"ta", CmdLFHitag2CheckChallenges, IfPm3Hitag, "Hitag 2: test all recorded authentications"}, + {"-----------", CmdHelp, IfPm3Hitag, "----------------------- " _CYAN_("simulation") " -----------------------"}, + {"eload", CmdLFHitagEload, IfPm3Hitag, "Load Hitag dump file into emulator memory"}, + {"sim", CmdLFHitagSim, IfPm3Hitag, "Simulate Hitag transponder"}, { NULL, NULL, 0, NULL } }; From dac7721cffe572361c4e6402e74f6f57e8ae785d Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 21 Jul 2023 01:31:09 +0200 Subject: [PATCH 047/299] hitag: coherence in hitag type options --- client/src/cmdlfhitag.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/client/src/cmdlfhitag.c b/client/src/cmdlfhitag.c index 74c77b8f9..9fd87b485 100644 --- a/client/src/cmdlfhitag.c +++ b/client/src/cmdlfhitag.c @@ -225,10 +225,10 @@ static int CmdLFHitagEload(const char *Cmd) { void *argtable[] = { arg_param_begin, arg_str1("f", "file", "", "Specify dump filename"), - arg_lit0("1", NULL, "Card type Hitag 1"), - arg_lit0("2", NULL, "Card type Hitag 2"), - arg_lit0("s", NULL, "Card type Hitag S"), - arg_lit0("m", NULL, "Card type Hitag M"), + arg_lit0("1", "ht1", "Card type Hitag 1"), + arg_lit0("2", "ht2", "Card type Hitag 2"), + arg_lit0("s", "hts", "Card type Hitag S"), + arg_lit0("m", "htm", "Card type Hitag μ"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -560,8 +560,8 @@ static int CmdLFHitagReader(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_lit0(NULL, "hts", "Hitag S"), - arg_lit0(NULL, "ht2", "Hitag 2"), + arg_lit0("s", "hts", "Hitag S"), + arg_lit0("2", "ht2", "Hitag 2"), arg_lit0(NULL, "pwd", "password mode"), arg_str0(NULL, "nrar", "", "nonce / answer writer, 8 hex bytes"), arg_lit0(NULL, "crypto", "crypto mode"), @@ -803,8 +803,8 @@ static int CmdLFHitagWriter(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_lit0(NULL, "hts", "Hitag S"), - arg_lit0(NULL, "ht2", "Hitag 2"), + arg_lit0("s", "hts", "Hitag S"), + arg_lit0("2", "ht2", "Hitag 2"), arg_lit0(NULL, "pwd", "password mode"), arg_str0(NULL, "nrar", "", "nonce / answer writer, 8 hex bytes"), arg_lit0(NULL, "crypto", "crypto mode"), From a556434f3f0dd39e21c509c328424d8149b5fe8a Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 06:21:59 +0200 Subject: [PATCH 048/299] style --- client/src/cmdhfmf.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 970c63004..06b7c8a18 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -7034,8 +7034,14 @@ static int CmdHf14AMfSuperCard(const char *Cmd) { // --------------- CHANGE UID ---------------- uint8_t aCHANGE[] = {0x00, 0xa6, 0xa0, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0x00}; memcpy(aCHANGE + 5, uid, uidlen); - res = ExchangeAPDU14a(aCHANGE, sizeof(aCHANGE), activate_field, keep_field_on, response, sizeof(response), - &resplen); + res = ExchangeAPDU14a( + aCHANGE, sizeof(aCHANGE), + activate_field, + keep_field_on, + response, sizeof(response), + &resplen + ); + if (res != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Super card UID change [ " _RED_("fail") " ]"); DropField(); @@ -7054,8 +7060,14 @@ static int CmdHf14AMfSuperCard(const char *Cmd) { // --------------- RESET CARD ---------------- uint8_t aRESET[] = {0x00, 0xa6, 0xc0, 0x00}; - res = ExchangeAPDU14a(aRESET, sizeof(aRESET), activate_field, keep_field_on, response, sizeof(response), - &resplen); + res = ExchangeAPDU14a( + aRESET, sizeof(aRESET), + activate_field, + keep_field_on, + response, sizeof(response), + &resplen + ); + if (res != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Super card reset [ " _RED_("fail") " ]"); DropField(); @@ -7144,7 +7156,12 @@ static int CmdHf14AMfSuperCard(const char *Cmd) { uint64_t key64 = -1; if (mfkey32_moebius(&data, &key64)) { - PrintAndLogEx(SUCCESS, "UID: %s Sector %02x key %c [ " _GREEN_("%012" PRIX64) " ]", sprint_hex_inrow(outA, 4), data.sector, (data.keytype == 0x60) ? 'A' : 'B', key64); + PrintAndLogEx(SUCCESS, "UID: %s Sector %02x key %c [ " _GREEN_("%012" PRIX64) " ]", + sprint_hex_inrow(outA, 4), + data.sector, + (data.keytype == 0x60) ? 'A' : 'B', + key64 + ); } else { PrintAndLogEx(FAILED, "failed to recover any key"); } From 154d454f231bfe4293778a476f4c920ecb62e7e7 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 06:23:53 +0200 Subject: [PATCH 049/299] style --- client/src/cmdhf14a.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 21ad70be7..e6e0a20e8 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -605,7 +605,7 @@ static int CmdHF14AReader(const char *Cmd) { } else { PrintAndLogEx(SUCCESS, "ATQA: %02X %02X", card.atqa[1], card.atqa[0]); } - + PrintAndLogEx(NORMAL, ""); } DropField(); res = PM3_ESOFT; @@ -623,6 +623,7 @@ static int CmdHF14AReader(const char *Cmd) { PrintAndLogEx(SUCCESS, " ATS: [%d] " _GREEN_("%s"), card.ats_len, sprint_hex(card.ats, card.ats_len)); } } + PrintAndLogEx(NORMAL, ""); } if (!disconnectAfter) { if (!silent) PrintAndLogEx(SUCCESS, "Card is selected. You can now start sending commands"); @@ -903,6 +904,7 @@ int CmdHF14ASniff(const char *Cmd) { } int ExchangeRAW14a(uint8_t *datain, int datainlen, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, bool silentMode) { + uint16_t cmdc = 0; *dataoutlen = 0; From 09bd5c7bcdea6642196a34ff0c5ff911712a6247 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 06:27:02 +0200 Subject: [PATCH 050/299] prep for a asn1 selftest check --- client/src/cmddata.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 032d31f85..2492161cf 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -2911,14 +2911,19 @@ static int CmdAsn1Decoder(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_str1("d", NULL, "", "ASN1 encoded byte array"), + arg_str0("d", NULL, "", "ASN1 encoded byte array"), + arg_lit0("t", "test", "perform selftest"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); int dlen = 2048; uint8_t data[2048]; CLIGetHexWithReturn(ctx, 1, data, &dlen); + bool selftest = arg_get_lit(ctx, 2); CLIParserFree(ctx); + if (selftest) { +// return asn1_selftest(); + } // print ASN1 decoded array in TLV view PrintAndLogEx(INFO, "---------------- " _CYAN_("ASN1 TLV") " -----------------"); From ba6d48dec8a2677b9d6b367c75ffec9134247474 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 06:27:41 +0200 Subject: [PATCH 051/299] include --- client/src/cmdlfcotag.h | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/cmdlfcotag.h b/client/src/cmdlfcotag.h index 9577dabdb..11f0b28ce 100644 --- a/client/src/cmdlfcotag.h +++ b/client/src/cmdlfcotag.h @@ -20,6 +20,7 @@ #define CMDLFCOTAG_H__ #include "common.h" +#include #ifndef COTAG_BITS #define COTAG_BITS 264 From 89e6f88522d359d61bab90cbb6381634b1a527c2 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 06:40:26 +0200 Subject: [PATCH 052/299] add asn1 selftest batch --- client/src/cmddata.c | 2 +- client/src/crypto/asn1utils.c | 151 +++++++++++++++++++++++++++++++++- client/src/crypto/asn1utils.h | 1 + 3 files changed, 150 insertions(+), 4 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 2492161cf..78f31c988 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -2922,7 +2922,7 @@ static int CmdAsn1Decoder(const char *Cmd) { bool selftest = arg_get_lit(ctx, 2); CLIParserFree(ctx); if (selftest) { -// return asn1_selftest(); + return asn1_selftest(); } // print ASN1 decoded array in TLV view diff --git a/client/src/crypto/asn1utils.c b/client/src/crypto/asn1utils.c index 4618c5028..34b9a8e80 100644 --- a/client/src/crypto/asn1utils.c +++ b/client/src/crypto/asn1utils.c @@ -20,8 +20,9 @@ #include #include #include -#include // memcpy -#include "ui.h" // Print... +#include // memcpy +#include "ui.h" // Print... +#include "commonutil.h" // ARRAYLEN #include "emv/tlv.h" #include "asn1dump.h" #include "util.h" @@ -103,8 +104,152 @@ int asn1_print(uint8_t *asn1buf, size_t asn1buflen, const char *indent) { PrintAndLogEx(ERR, "Can't parse data as TLV tree"); return PM3_ESOFT; } - return PM3_SUCCESS; } +typedef struct { + const char *hex; + const char *expected; + const char *desc; +} asn1_test; + +int asn1_selftest(void) { + + PrintAndLogEx(INFO, "to be implemented. Feel free to contribute!"); + + /* + + ICEMAN: + Problem to be solved, how to extract data back from our asn1 decoder to compare with the expected text found in the following test cases. + Thanks @Mistial for the suggestion and links. + + These test cases are from the project lapo-luchini's asn1js (ISC license which is like MIT license) + https://github.com/lapo-luchini/asn1js/blob/trunk/test.js + + + const asn1_test tests[] = { + // RSA Laboratories technical notes from https://luca.ntop.org/Teaching/Appunti/asn1.html + {"0304066E5DC0", "(18 bit)\n011011100101110111", "ntop, bit string: DER encoding"}, + {"0304066E5DE0", "(18 bit)\n011011100101110111", "ntop, bit string: padded with `100000`"}, + {"038104066E5DC0", "(18 bit)\n011011100101110111", "ntop, bit string: long form of length octets"}, + {"23090303006E5D030206C0", "(18 bit)\n011011100101110111", "ntop, bit string (constructed encoding): `0110111001011101` + `11`"}, + {"160D7465737431407273612E636F6D", "test1@rsa.com", "ntop, ia5string: DER encoding"}, + {"16810D7465737431407273612E636F6D", "test1@rsa.com", "ntop, ia5string: long form of length octets"}, + {"36131605746573743116014016077273612E636F6D", "test1@rsa.com", "ntop, ia5string: constructed encoding: `test1` + `@` + `rsa.com`"}, + {"020100", "0", "ntop, integer: 0"}, + {"02017F", "127", "ntop, integer: 127"}, + {"02020080", "128", "ntop, integer: 128"}, + {"02020100", "256", "ntop, integer: 256"}, + {"020180", "-128", "ntop, integer: -128"}, + {"0202FF7F", "-129", "ntop, integer: -129"}, + {"0500", "", "ntop, null: DER"}, + {"058100", "", "ntop, null: long form of length octets"}, + {"06062A864886F70D", "1.2.840.113549", "ntop, object identifier"}, + {"04080123456789ABCDEF", "(8 byte)\n0123456789ABCDEF", "ntop, octet string: DER encoding"}, + {"0481080123456789ABCDEF", "(8 byte)\n0123456789ABCDEF", "ntop, octet string: long form of length octets"}, + {"240C040401234567040489ABCDEF", "(8 byte)\n0123456789ABCDEF", "ntop, octet string (constructed encoding): 01…67 + 89…ef"}, + {"130B5465737420557365722031", "Test User 1", "ntop, printable string: DER encoding"}, + {"13810B5465737420557365722031", "Test User 1", "ntop, printable string: long form of length octets"}, + {"330F130554657374201306557365722031", "Test User 1", "ntop, printable string: constructed encoding: `Test ` + `User 1`"}, + {"140F636CC26573207075626C6971756573", "clés publiques", "ntop, t61string: DER encoding"}, + {"14810F636CC26573207075626C6971756573", "clés publiques", "ntop, t61string: long form of length octets"}, + {"34151405636CC2657314012014097075626C6971756573", "clés publiques", "ntop, t61string: constructed encoding: `clés` + ` ` + `publiques`"}, + {"170D3931303530363233343534305A", "1991-05-06 23:45:40 UTC", "ntop, utc time: UTC"}, + {"17113931303530363136343534302D30373030", "1991-05-06 16:45:40 UTC-07:00", "ntop, utc time: PDT"}, + // inspired by http://luca.ntop.org/Teaching/Appunti/asn1.html + {"0304086E5DC0", "Exception:\nInvalid BitString with unusedBits=8", "bit string: invalid unusedBits"}, + // http://msdn.microsoft.com/en-us/library/windows/desktop/aa379076(v=vs.85).aspx + {"30820319308202820201003023310F300D0603550403130654657374434E3110300E060355040A1307546573744F726730819F300D06092A864886F70D010101050003818D00308189028181008FE2412A08E851A88CB3E853E7D54950B3278A2BCBEAB54273EA0257CC6533EE882061A11756C12418E3A808D3BED931F3370B94B8CC43080B7024F79CB18D5DD66D82D0540984F89F970175059C89D4D5C91EC913D72A6B309119D6D442E0C49D7C9271E1B22F5C8DEEF0F1171ED25F315BB19CBC2055BF3A37424575DC90650203010001A08201B4301A060A2B0601040182370D0203310C160A362E302E353336312E323042060A2B0601040182370D0201313430321E260043006500720074006900660069006300610074006500540065006D0070006C0061007400651E080055007300650072305706092B0601040182371514314A30480201090C237669636833642E6A646F6D6373632E6E74746573742E6D6963726F736F66742E636F6D0C154A444F4D4353435C61646D696E6973747261746F720C07636572747265713074060A2B0601040182370D0202316630640201011E5C004D006900630072006F0073006F0066007400200045006E00680061006E006300650064002000430072007900700074006F0067007200610070006800690063002000500072006F00760069006400650072002000760031002E003003010030818206092A864886F70D01090E31753073301706092B0601040182371402040A1E08005500730065007230290603551D2504223020060A2B0601040182370A030406082B0601050507030406082B06010505070302300E0603551D0F0101FF0404030205A0301D0603551D0E041604143C0F73DAF8EF41D83AEABE922A5D2C966A7B9454300D06092A864886F70D01010505000381810047EB995ADF9E700DFBA73132C15F5C24C2E0BFC624AF15660EB86A2EAB2BC4971FE3CBDC63A525ECC7B428616636A1311BBFDDD0FCBF1794901DE55EC7115EC9559FEBA33E14C799A6CBBAA1460F39D444C4C84B760E205D6DA9349ED4D58742EB2426511490B40F065E5288327A9520A0FDF7E57D60DD72689BF57B058F6D1E", + "(3 elem)", "PKCS#10 request"}, + // Int10 + {"02102FA176B36EE9F049F444B40099661945", "(126 bit)\n63312083136615639753586560173617846597", "Big integer (126 bit)"}, + {"028181008953097086EE6147C5F4D5FFAF1B498A3D11EC5518E964DC52126B2614F743883F64CA51377ABB530DFD20464A48BD67CD27E7B29AEC685C5D10825E605C056E4AB8EEA460FA27E55AA62C498B02D7247A249838A12ECDF37C6011CF4F0EDEA9CEE687C1CB4A51C6AE62B2EFDB000723A01C99D6C23F834880BA8B42D5414E6F", + "(1024 bit)\n96432446964907009840023644401994013457468837455140331578268642517697945390319089463541388080569398374873228752921897678940332050406994011437231634303608704223145390228074087922901239478374991949372306413157758278029522534299413919735715864599284769202556071242381348472464716517735026291259010477833523908207", + "Big integer (1024 bit)"}, + {"02820201009BA9ABBF614A97AF2F97669A745FD0D996FDCFE2E466EF1F1F4733C244A3DF9ADE1FB554DD157C6935116FBBC80C8E6A181ED88FD916BC1048365CF063B3905A5C2437D7A3D6CB0971B9F1017284B07DDB4D80CDFCD36FC9F8DAB60E82D24585A81B68A83DE8F4446CBDA1C2CB03BE8C3E130084DF4A48C0E3220AE8E937A7184CB1090D23567F044DD9178418A5C8DA409473EBCE0E573C03813A9D0AA1574369AC576D799078E5B5B43BD8BC4C8D28A1A7A3A7BA024E25D12AAEEDAE0322B86B200F302854957FE0EECE0A669DD1402D6E22AF9D1AC10519D26FC0F29FF87BB30242FB50A91D2D930F23ABC6C10F92FFD0A215F55309711CFF451384E6265EF8E0881C0AFC16B6A87306B8F0638402A0C65AECE774DF70AEA38325EAD6C7978793A7C68A8A33976037103E973E6E2915D6A10FD1882C129F6FAAA4C642EB41A2E39543D301856D8EBB3BF32336C7FE3BE0A1250748ABC98974FF088F80BFC09665F3EEEC4B68BD9D88C331B340F1E8CFF638BB9CE4D17FD4E5589B7CFAD4F30E9B7591E4BA522E197ED1F5CD5A19FCBA06F6FB52A84B9904DDF8F9B48B50A34E6289F08724FA8342C187FAD52D292A5A717A646AD72760630DDBCE49F58D1F90893217F87343B8D25A938661D6E1750AEA796676884F71EB0425D60A5A7A93E5B94B17400FB1B6B9F5DE4FDCE0B3AC3B117060844A436E9920C029710AC065", + "(4096 bit)\n635048724432704421127930570668665246853305382538324205739741643121831497295424070220821366244137115920753022123888627038218427491681054376713237422498116573180444839575827154645186734602336866679804832661256616738257119870932328599495025506292424741581222812593482590762754785441060866630543522468678295806775919446210955958208696766307578451905771148370694894591388931494246786732600822191966681852303750991082312180670980233382216493445574638820565887523903118457551295241540793541306271618874366356869335229283992012581380459991160410157116077111142487644315609688092841697874946124416376553323373756926990721842430477982958383467149331238064901788481621489266725616974850293388387825359434286033332681714766010619113405542747712973535303497912234899589502990216128180823653963322406352206636893824027962569732222882297210841939793442415179615290739900774082858983244011679281115202763730964934473392333219986431517733237277686866318351054204026883453068392486990840498271719737813876367239342153571643327128417739316281558041652406500713712661305061745568036561978158652008943224271511931676512028205883718704503533046383542018858616087454820845906934069146870330990447993387221061968484774662499598623702280426558025111180066917", + "Big integer (4096 bit)"}, + {"0202007F", "127", "Padded 127"}, + {"0202FF7F", "-129", "Negative 129"}, + {"0202FC18", "-1000", "Negative 1000 (2)"}, + {"0204FFFFFC18", "-1000", "Negative 1000 (4)"}, + {"0208FFFFFFFFFFFFFC18", "-1000", "Negative 1000 (8)"}, + {"0210FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC18", "-1000", "Negative 1000 (16)"}, + {"0203800001", "-8388607", "Negative 8388607"}, + {"02020000", "0", "Zero (2)"}, + {"0204FFFFFFFF", "-1", "Negative 1 (4)"}, + // OID + {"060C69C7C79AB78084C289F9870D", "2.25.84478768945400492475277", "Big OID arc"}, + {"06146982968D8D889BCCA8C7B3BDD4C080AAAED78A1B", "2.25.184830721219540099336690027854602552603", "Bigger OID arc"}, + {"060488378952", "2.999.1234", "OID arc > 2.47"}, + {"060782A384F3CAC00A", "2.9999999999930", "OID with Int10 corner case (1)"}, + {"060881E3AFEAA69A800A", "2.999999999999930", "OID with Int10 corner case (2)"}, + {"06092A864886F70D010105", "1.2.840.113549.1.1.5\nsha1WithRSAEncryption\nPKCS #1", "known OID from Peter Gutmann list"}, + // OID corner case from https://misc.daniel-marschall.de/asn.1/oid-sizecheck/oid_size_test.txt + {"060A81FFFFFFFFFFFFFFFF7F", "2.18446744073709551535", "OID root 64 bit - 1"}, + {"060A82808080808080808000", "2.18446744073709551536", "OID root 64 bit"}, + {"060A82808080808080808001", "2.18446744073709551537", "OID root 64 bit + 1"}, + {"0620FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F", "2.26959946667150639794667015087019630673637144422540572481103610249135", "OID derLen20c"}, + {"0621818080808080808080808080808080808080808080808080808080808080808000", "2.26959946667150639794667015087019630673637144422540572481103610249136", "OID derLen21c"}, + // relative OID + {"0D0A0102030405060708090A","1.2.3.4.5.6.7.8.9.10", "Relative OID from GitHub PR 56"}, + {"0D04C27B0302","8571.3.2", "Relative OID from ISO/IEC 8825-1:2002 8.20.5"}, + // UTF-8 + {"0C0E4C61706FE280997320F09F9A972E", "Lapo’s 🚗.", "UTF-8 4-byte sequence"}, + // T-REC-X.690-201508 + {"0307040A3B5F291CD0", "(44 bit)\n00001010001110110101111100101001000111001101", "Example 8.6.4.2: bit string (primitive encoding)"}, + {"23800303000A3B0305045F291CD00000", "(44 bit)\n00001010001110110101111100101001000111001101", "Example 8.6.4.2: bit string (constructed encoding)"}, + // avoid past bugs + {"23800303000A3B230A0302005F030404291CD00000", "(44 bit)\n00001010001110110101111100101001000111001101", "Bit string (recursive constructed)"}, + {"0348003045022100DE601E573DAFB59BC551D58E3E7B9EDA0612DD0112805A2217B734759B884417022067C3FDE60780D41C1D7A3B90291F3D39C4DC2F206DCCBA2F982C06B67C09B232", "(568 bit)\n0011000001000101000000100010000100000000110111100110000000011110010101110011110110101111101101011001101111000101010100011101010110001110001111100111101110011110110110100000011000010010110111010000000100010010100000000101101000100010000101111011011100110100011101011001101110001000010001000001011100000010001000000110011111000011111111011110011000000111100000001101010000011100000111010111101000111011100100000010100100011111001111010011100111000100110111000010111100100000011011011100110010111010001011111001100000101100000001101011011001111100000010011011001000110010", "not constructed, but contains structures"}, + {"040731323334353637", "(7 byte)\n1234567", "Octet string with ASCII content"}, + {"0407312E3233E282AC", "(7 byte)\n1.23€", "Octet string with UTF-8 content"}, + // GitHub issue #47 + {"0420041EE4E3B7ED350CC24D034E436D9A1CB15BB1E328D37062FB82E84618AB0A3C", "(32 byte)\n041EE4E3B7ED350CC24D034E436D9A1CB15BB1E328D37062FB82E84618AB0A3C", "Do not mix encapsulated and structured octet strings"}, + // GitHub issue #54 + {"181531393835313130363231303632372E332D31323334", "1985-11-06 21:06:27.3 UTC-12:34", "UTC offsets with minutes"}, + // GitHub issue #54 + {"181331393835313130363231303632372E332B3134", "1985-11-06 21:06:27.3 UTC+14:00", "UTC offset +13 and +14"}, + }; + + int tot = ARRAYLEN(tests); + + PrintAndLogEx(INFO,"ASN1 decoder selftest. {%d tests}", tot); + int count = 0; + for (int i=0; i< ARRAYLEN(tests); i++) { + size_t n = strlen(tests[i].hex) * 2; + + uint8_t *d = calloc(n, sizeof(uint8_t)); + if (d == NULL) { + return PM3_EMALLOC; + } + int len = 0; + param_gethex_to_eol(tests[i].hex, 0, d, n, &len); + if (len == 0) { + free(d); + continue; + } + + PrintAndLogEx(INFO, "%s [%d: %s]", tests[i].desc, len, sprint_hex_inrow(d, len)); + + + struct tlvdb *t = tlvdb_parse_multi((const unsigned char*)n, len); + if (t) { + bool candump = false; + if (asn1_tag_dump(&t->tag, 0, &candump)) { + count++; + } + tlvdb_free(t); + } + free(d); + } + + + PrintAndLogEx(SUCCESS, "Pass... %s", (count == tot) ? _GREEN_("ok") : _RED_("fail")); + PrintAndLogEx(NORMAL, ""); + + */ + + return PM3_SUCCESS; +} diff --git a/client/src/crypto/asn1utils.h b/client/src/crypto/asn1utils.h index 691e574b2..e55a2926f 100644 --- a/client/src/crypto/asn1utils.h +++ b/client/src/crypto/asn1utils.h @@ -25,5 +25,6 @@ int asn1_print(uint8_t *asn1buf, size_t asn1buflen, const char *indent); int ecdsa_asn1_get_signature(uint8_t *signature, size_t signaturelen, uint8_t *rval, uint8_t *sval); +int asn1_selftest(void); #endif /* asn1utils.h */ From 78ea432b8c82c441d70237c55b7feca0549e3ead Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 21 Jul 2023 09:27:12 +0200 Subject: [PATCH 053/299] fix for killjoy windows --- client/src/cmdlfhitag.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdlfhitag.c b/client/src/cmdlfhitag.c index 9fd87b485..6a590b4e2 100644 --- a/client/src/cmdlfhitag.c +++ b/client/src/cmdlfhitag.c @@ -228,7 +228,7 @@ static int CmdLFHitagEload(const char *Cmd) { arg_lit0("1", "ht1", "Card type Hitag 1"), arg_lit0("2", "ht2", "Card type Hitag 2"), arg_lit0("s", "hts", "Card type Hitag S"), - arg_lit0("m", "htm", "Card type Hitag μ"), + arg_lit0("m", "htm", "Card type Hitag \xce\xbc"), // μ arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); From eb61d0f45e9856cab54717f004d6e6cfc1c7223c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 10:57:47 +0200 Subject: [PATCH 054/299] change param names for data detect clock to follow client overall style --- client/src/cmddata.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 78f31c988..6b3138fa6 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -1106,17 +1106,15 @@ static int CmdDetectClockRate(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "data detectclock", "Detect ASK, FSK, NRZ, PSK clock rate of wave in GraphBuffer", - "data detectclock -A --> detect clock of an ask wave in GraphBuffer\n" - "data detectclock -F --> detect clock of an fsk wave in GraphBuffer\n" - "data detectclock -N --> detect clock of an psk wave in GraphBuffer\n" - "data detectclock -P --> detect clock of an nrz/direct wave in GraphBuffer" + "data detectclock --ask\n" + "data detectclock --nzr --> detect clock of an nrz/direct wave in GraphBuffer\n" ); void *argtable[] = { arg_param_begin, - arg_lit0("A", "ASK", "specify ASK modulation clock detection"), - arg_lit0("F", "FSK", "specify FSK modulation clock detection"), - arg_lit0("N", "NZR", "specify NZR/DIRECT modulation clock detection"), - arg_lit0("P", "PSK", "specify PSK modulation clock detection"), + arg_lit0(NULL, "ask", "specify ASK modulation clock detection"), + arg_lit0(NULL, "fsk", "specify FSK modulation clock detection"), + arg_lit0(NULL, "nzr", "specify NZR/DIRECT modulation clock detection"), + arg_lit0(NULL, "psk", "specify PSK modulation clock detection"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); From b332a5bd602b769a1bc180212e7b8b9b8c77e616 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 10:58:30 +0200 Subject: [PATCH 055/299] added a new command data centerthreshold. It removes center values. --- client/src/cmddata.c | 59 +++++++++++++++++++++++++++++++++++++++++--- client/src/cmddata.h | 1 + 2 files changed, 57 insertions(+), 3 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 6b3138fa6..67fbafafd 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -3312,6 +3312,56 @@ cleanup: return PM3_SUCCESS; } +int centerThreshold(const int *in, int *out, size_t len, int8_t up, int8_t down) { + + for (size_t i = 0; i < len; ++i) { + if ((in[i] <= up) && (in[i] >= down)) { + out[i] = 0; + } + } + + // clean out spikes. + for (size_t i = 2; i < len - 2; ++i) { + + int a = out[i-2] + out[i-1]; + int b = out[i+2] + out[i+1]; + if (a == 0 && b == 0) { + out[i] = 0; + } + } + return PM3_SUCCESS; +} + +static int CmdCenterThreshold(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "data cthreshold", + "Inverse of dirty threshold command, all values between up and down will be average out", + "data cthreshold -u 10 -d -10" + ); + void *argtable[] = { + arg_param_begin, + arg_int1("d", "down", "", "threshold down"), + arg_int1("u", "up", "", "threshold up"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); + int8_t down = arg_get_int(ctx, 1); + int8_t up = arg_get_int(ctx, 2); + CLIParserFree(ctx); + + PrintAndLogEx(INFO, "Applying up threshold: " _YELLOW_("%i") ", down threshold: " _YELLOW_("%i") "\n", up, down); + + centerThreshold(g_GraphBuffer, g_GraphBuffer, g_GraphTraceLen, up, down); + + // set signal properties low/high/mean/amplitude and isnoice detection + uint8_t bits[g_GraphTraceLen]; + size_t size = getFromGraphBuf(bits); + // set signal properties low/high/mean/amplitude and is_noice detection + computeSignalProperties(bits, size); + RepaintGraphWindow(); + return PM3_SUCCESS; +} + static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, @@ -3324,9 +3374,9 @@ static command_t CommandTable[] = { {"rawdemod", CmdRawDemod, AlwaysAvailable, "Demodulate the data in the GraphBuffer and output binary"}, {"-----------", CmdHelp, AlwaysAvailable, "------------------------- " _CYAN_("Graph") "-------------------------"}, - {"askedgedetect", CmdAskEdgeDetect, AlwaysAvailable, "Adjust Graph for manual ASK demod using the length of sample differences to detect the edge of a wave"}, + {"askedgedetect", CmdAskEdgeDetect, AlwaysAvailable, "Adjust Graph for manual ASK demod"}, {"autocorr", CmdAutoCorr, AlwaysAvailable, "Autocorrelation over window"}, - {"dirthreshold", CmdDirectionalThreshold, AlwaysAvailable, "Max rising higher up-thres/ Min falling lower down-thres, keep rest as prev."}, + {"dirthreshold", CmdDirectionalThreshold, AlwaysAvailable, "Max rising higher up-thres/ Min falling lower down-thres"}, {"decimate", CmdDecimate, AlwaysAvailable, "Decimate samples"}, {"undecimate", CmdUndecimate, AlwaysAvailable, "Un-decimate samples"}, {"hide", CmdHide, AlwaysAvailable, "Hide graph window"}, @@ -3337,10 +3387,13 @@ static command_t CommandTable[] = { {"mtrim", CmdMtrim, AlwaysAvailable, "Trim out samples from the specified start to the specified stop"}, {"norm", CmdNorm, AlwaysAvailable, "Normalize max/min to +/-128"}, {"plot", CmdPlot, AlwaysAvailable, "Show graph window"}, + + {"cthreshold", CmdCenterThreshold, AlwaysAvailable, "Average out all values between"}, + {"rtrim", CmdRtrim, AlwaysAvailable, "Trim samples from right of trace"}, {"setgraphmarkers", CmdSetGraphMarkers, AlwaysAvailable, "Set blue and orange marker in graph window"}, {"shiftgraphzero", CmdGraphShiftZero, AlwaysAvailable, "Shift 0 for Graphed wave + or - shift value"}, - {"timescale", CmdTimeScale, AlwaysAvailable, "Set a timescale to get a differential reading between the yellow and purple markers as time duration"}, + {"timescale", CmdTimeScale, AlwaysAvailable, "Set cursor display timescale"}, {"zerocrossings", CmdZerocrossings, AlwaysAvailable, "Count time between zero-crossings"}, {"convertbitstream", CmdConvertBitStream, AlwaysAvailable, "Convert GraphBuffer's 0/1 values to 127 / -127"}, {"getbitstream", CmdGetBitStream, AlwaysAvailable, "Convert GraphBuffer's >=1 values to 1 and <1 to 0"}, diff --git a/client/src/cmddata.h b/client/src/cmddata.h index aaeae864a..1e4500d32 100644 --- a/client/src/cmddata.h +++ b/client/src/cmddata.h @@ -89,6 +89,7 @@ int getSamplesEx(uint32_t start, uint32_t end, bool verbose, bool ignore_lf_conf void setClockGrid(uint32_t clk, int offset); int directionalThreshold(const int *in, int *out, size_t len, int8_t up, int8_t down); +int centerThreshold(const int *in, int *out, size_t len, int8_t up, int8_t down); int AskEdgeDetect(const int *in, int *out, int len, int threshold); #define MAX_DEMOD_BUF_LEN (1024*128) From 152f1d4c6eb0cac6a44308aea0cc5ec9473e285b Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 11:41:57 +0200 Subject: [PATCH 056/299] coverity fix --- client/src/cmdlfhitag.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdlfhitag.c b/client/src/cmdlfhitag.c index 6a590b4e2..bd9f74ec7 100644 --- a/client/src/cmdlfhitag.c +++ b/client/src/cmdlfhitag.c @@ -729,7 +729,6 @@ static int CmdLFHitagSCheckChallenges(const char *Cmd) { int fnlen = 0; char filename[FILE_PATH_SIZE] = {0}; CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); - CLIParserFree(ctx); clearCommandBuffer(); @@ -757,6 +756,7 @@ static int CmdLFHitag2CheckChallenges(const char *Cmd) { "Test recorded authentications (replay?)", "lf hitag ta" ); + CLIParserFree(ctx); clearCommandBuffer(); SendCommandMIX(CMD_LF_HITAG_READER, RHT2F_TEST_AUTH_ATTEMPTS, 0, 0, NULL, 0); From 8aeed5e67c9796623b3d87f2ace8c789320aeee1 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 21 Jul 2023 12:05:12 +0200 Subject: [PATCH 057/299] doc hardnested compression options --- .../3_Commands-and-Features.md | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/doc/md/Use_of_Proxmark/3_Commands-and-Features.md b/doc/md/Use_of_Proxmark/3_Commands-and-Features.md index d0bff17b6..d7212261a 100644 --- a/doc/md/Use_of_Proxmark/3_Commands-and-Features.md +++ b/doc/md/Use_of_Proxmark/3_Commands-and-Features.md @@ -8,6 +8,7 @@ - [To get interactive help](#to-get-interactive-help) - [New Features in RDV4](#new-features-in-rdv4) - [Useful commands](#useful-commands) +- [Hardnested tables](#hardnested-tables) @@ -58,3 +59,31 @@ A good starting point is the following [Cheat sheet](/doc/cheatsheet.md) Or this compilation of links to [Proxmark3 walk throughs](https://github.com/RfidResearchGroup/proxmark3/wiki/More-cheat-sheets) + +# Hardnested tables +^[Top](#top) + +Hardnested tables are compressed with LZ4 for a good compromise between space and decompression speed. + +If you are under very space constrained environment, you can recompress the tables with BZip2 and delete the LZ4. It will break the git workdir but if space is a concern, you're not deploying the source and `.git` of > 80Mb anyway, do you? + +```sh +cd client/resources/hardnested_tables +lz4 -dm --rm *lz4 +bzip2 *.bin +``` + +If you want top speed, you can decompress the tables in advance. Keep the `.lz4` files, so you can always just `rm *.bin` to save space again. + +```sh +cd client/resources/hardnested_tables +lz4 -dkm *lz4 +``` + +| Compression | Size in Mb | Speed(*) | +|-------------|:----------:|:-----------:| +| LZ4 | 9 | 1 | +| BZip2 | 2 | 6.5x slower | +| None | 704 | 2.5x faster | + +(*) rough idea of relative speeds, real numbers depend on your actual system From 9324682873e74fe815e7d6584fab8b94b5efb57c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 13:53:32 +0200 Subject: [PATCH 058/299] fix lf search --- client/src/cmdlfhitag.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdlfhitag.c b/client/src/cmdlfhitag.c index bd9f74ec7..c3e30f61f 100644 --- a/client/src/cmdlfhitag.c +++ b/client/src/cmdlfhitag.c @@ -1220,7 +1220,7 @@ int CmdLFHitag(const char *Cmd) { } int readHitagUid(void) { - return (CmdLFHitagReader("--26") == PM3_SUCCESS); + return (CmdLFHitagReader("--ht2") == PM3_SUCCESS); } uint8_t hitag1_CRC_check(uint8_t *d, uint32_t nbit) { From 4d9f97954ef0b49e639f2dfb7341c59d2377acf0 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 14:35:24 +0200 Subject: [PATCH 059/299] allow for clocks larger than 255 to be used from commandline. added the new command data envelope. it creates square signal, similar to askedgedetect.\n adapted find closest clock in order to make clock /8 less prioritized if there are more found clocks. use second best match in those cases. --- client/src/cmddata.c | 48 ++++++++++++++++++++++++++++++++++++++++++-- common/lfdemod.c | 46 ++++++++++++++++++++++++++++++------------ 2 files changed, 79 insertions(+), 15 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 67fbafafd..0ac3c0f4e 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -527,7 +527,7 @@ static int Cmdaskmandemod(const char *Cmd) { CLIExecWithReturn(ctx, Cmd, argtable, true); bool amplify = arg_get_lit(ctx, 1); - uint8_t clk = (uint8_t)arg_get_int_def(ctx, 2, 0) & 0xFF; + uint16_t clk = (uint16_t)arg_get_int_def(ctx, 2, 0); bool invert = arg_get_lit(ctx, 3); bool st = arg_get_lit(ctx, 4); uint8_t max_err = (uint8_t)arg_get_int_def(ctx, 5, 100) & 0xFF; @@ -773,7 +773,7 @@ static int Cmdaskrawdemod(const char *Cmd) { CLIExecWithReturn(ctx, Cmd, argtable, true); bool amplify = arg_get_lit(ctx, 1); - uint8_t clk = (uint8_t)arg_get_int_def(ctx, 2, 0) & 0xFF; + uint16_t clk = (uint16_t)arg_get_int_def(ctx, 2, 0); bool invert = arg_get_lit(ctx, 3); bool st = arg_get_lit(ctx, 4); uint8_t max_err = (uint8_t)arg_get_int_def(ctx, 5, 100) & 0xFF; @@ -3313,6 +3313,9 @@ cleanup: } int centerThreshold(const int *in, int *out, size_t len, int8_t up, int8_t down) { + if (len < 5) { + return PM3_EINVARG; + } for (size_t i = 0; i < len; ++i) { if ((in[i] <= up) && (in[i] >= down)) { @@ -3362,6 +3365,46 @@ static int CmdCenterThreshold(const char *Cmd) { return PM3_SUCCESS; } +static int envelope_square(const int *in, int *out, size_t len) { + if (len < 10) { + return PM3_EINVARG; + } + + for (size_t i = 0; i < len - 5; i++) { + + if (in[i] == 0 && in[i+1] == 0 && in[i+2] == 0 && in[i+3] == 0 && in[i+4] == 0) { + i += 4; + continue; + } + + out[i] = 255; + } + return PM3_SUCCESS; +} + +static int CmdEnvelope(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "data envelop", + "Create an square envelop of the samples", + "data envelop" + ); + void *argtable[] = { + arg_param_begin, + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, true); + CLIParserFree(ctx); + + envelope_square(g_GraphBuffer, g_GraphBuffer, g_GraphTraceLen); + + uint8_t bits[g_GraphTraceLen]; + size_t size = getFromGraphBuf(bits); + // set signal properties low/high/mean/amplitude and is_noice detection + computeSignalProperties(bits, size); + RepaintGraphWindow(); + return PM3_SUCCESS; +} + static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, @@ -3378,6 +3421,7 @@ static command_t CommandTable[] = { {"autocorr", CmdAutoCorr, AlwaysAvailable, "Autocorrelation over window"}, {"dirthreshold", CmdDirectionalThreshold, AlwaysAvailable, "Max rising higher up-thres/ Min falling lower down-thres"}, {"decimate", CmdDecimate, AlwaysAvailable, "Decimate samples"}, + {"envelope", CmdEnvelope, AlwaysAvailable, "Generate square envelope of samples"}, {"undecimate", CmdUndecimate, AlwaysAvailable, "Un-decimate samples"}, {"hide", CmdHide, AlwaysAvailable, "Hide graph window"}, {"hpf", CmdHpf, AlwaysAvailable, "Remove DC offset from trace"}, diff --git a/common/lfdemod.c b/common/lfdemod.c index 73b580a6b..42ac2bcc0 100644 --- a/common/lfdemod.c +++ b/common/lfdemod.c @@ -436,10 +436,10 @@ static size_t findModStart(const uint8_t *src, size_t size, uint8_t expWaveSize) } static int getClosestClock(int testclk) { - const uint16_t clocks[] = {8, 16, 32, 40, 50, 64, 100, 128, 256, 384}; - const uint8_t limit[] = {1, 2, 4, 4, 5, 8, 8, 8, 8, 8}; + const uint16_t clocks[] = {8, 16, 32, 40, 50, 64, 100, 128, 256, 272, 384}; + const uint8_t limit[] = {1, 2, 4, 4, 5, 8, 8, 8, 8, 24, 24}; - for (uint8_t i = 0; i < 10; i++) { + for (uint8_t i = 0; i < ARRAYLEN(clocks); i++) { if (testclk >= clocks[i] - limit[i] && testclk <= clocks[i] + limit[i]) return clocks[i]; } @@ -613,7 +613,7 @@ bool DetectCleanAskWave(const uint8_t *dest, size_t size, uint8_t high, uint8_t // based on count of low to low int DetectStrongAskClock(uint8_t *dest, size_t size, int high, int low, int *clock) { size_t i = 100; - size_t minClk = 512; + size_t minClk = 768; uint16_t shortestWaveIdx = 0; // get to first full low to prime loop and skip incomplete first pulse @@ -622,11 +622,11 @@ int DetectStrongAskClock(uint8_t *dest, size_t size, int high, int low, int *clo if (i == size) return -1; - if (size < 512) + if (size < 768) return -2; // clock, numoftimes, first idx - uint16_t tmpclk[10][3] = { + uint16_t tmpclk[11][3] = { {8, 0, 0}, {16, 0, 0}, {32, 0, 0}, @@ -636,11 +636,12 @@ int DetectStrongAskClock(uint8_t *dest, size_t size, int high, int low, int *clo {100, 0, 0}, {128, 0, 0}, {256, 0, 0}, + {272, 0, 0}, {384, 0, 0}, }; // loop through all samples (well, we don't want to go out-of-bounds) - while (i < (size - 512)) { + while (i < (size - 768)) { // measure from low to low size_t startwave = i; @@ -655,7 +656,7 @@ int DetectStrongAskClock(uint8_t *dest, size_t size, int high, int low, int *clo int foo = getClosestClock(minClk); if (foo > 0) { - for (uint8_t j = 0; j < 10; j++) { + for (uint8_t j = 0; j < 11; j++) { if (tmpclk[j][0] == foo) { tmpclk[j][1]++; @@ -669,8 +670,17 @@ int DetectStrongAskClock(uint8_t *dest, size_t size, int high, int low, int *clo } // find the clock with most hits and it the first index it was encountered. + int possible_clks = 0; + for (uint8_t j = 0; j < 11; j++) { + if (tmpclk[j][1] > 0) { + possible_clks++; + } + } + + uint16_t second_shortest = 0; + int second = 0; int max = 0; - for (uint8_t j = 0; j < 10; j++) { + for (int j = 10; j > -1; j--) { if (g_debugMode == 2) { prnt("DEBUG, ASK, clocks %u | hits %u | idx %u" , tmpclk[j][0] @@ -678,13 +688,23 @@ int DetectStrongAskClock(uint8_t *dest, size_t size, int high, int low, int *clo , tmpclk[j][2] ); } + if (max < tmpclk[j][1]) { + second = *clock; + second_shortest = shortestWaveIdx; + *clock = tmpclk[j][0]; shortestWaveIdx = tmpclk[j][2]; max = tmpclk[j][1]; } } + // ASK clock 8 is very rare and usually gives us false positives + if (possible_clks > 1 && *clock == 8) { + *clock = second; + shortestWaveIdx = second_shortest; + } + if (*clock == 0) return -1; @@ -712,9 +732,9 @@ int DetectASKClock(uint8_t *dest, size_t size, int *clock, int maxErr) { } size_t i = 1; - uint8_t num_clks = 9; + uint8_t num_clks = 10; // first 255 value pos0 is placeholder for user inputed clock. - uint16_t clk[] = {255, 8, 16, 32, 40, 50, 64, 100, 128, 255}; + uint16_t clk[] = {255, 8, 16, 32, 40, 50, 64, 100, 128, 255, 272}; // sometimes there is a strange end wave - filter out this size -= 60; @@ -755,8 +775,8 @@ int DetectASKClock(uint8_t *dest, size_t size, int *clock, int maxErr) { uint8_t clkCnt, tol; size_t j = 0; - uint16_t bestErr[] = {1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000}; - uint8_t bestStart[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; + uint16_t bestErr[] = {1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000}; + uint8_t bestStart[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; size_t errCnt, arrLoc, loopEnd; if (found_clk) { From f54851be09b637cd65b0b8154364e3dff7643596 Mon Sep 17 00:00:00 2001 From: beckerj Date: Fri, 21 Jul 2023 15:07:07 +0200 Subject: [PATCH 060/299] Fix typo in hf_legic_clone.lua variable "length" was used parameter in function, but later called as "len" Signed-off-by: beckerj --- client/luascripts/hf_legic_clone.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/luascripts/hf_legic_clone.lua b/client/luascripts/hf_legic_clone.lua index d41046d65..d9a86dc81 100644 --- a/client/luascripts/hf_legic_clone.lua +++ b/client/luascripts/hf_legic_clone.lua @@ -168,7 +168,7 @@ local function help() print(example) end -- read LEGIC data -local function readlegicdata(offset, length, iv) +local function readlegicdata(offset, len, iv) -- Read data local d0 = ('%04X%04X%02X'):format(offset, len, iv) local c = Command:newNG{cmd = cmds.CMD_HF_LEGIC_READER, data = d0} From bc27847bc8de7defe4efc405d9209c42577c0025 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 16:45:12 +0200 Subject: [PATCH 061/299] added a new trace sample file --- CHANGELOG.md | 6 + traces/lf_cotag_220_8331.pm3 | 42523 +++++++++++++++++++++++++++++++++ 2 files changed, 42529 insertions(+) create mode 100644 traces/lf_cotag_220_8331.pm3 diff --git a/CHANGELOG.md b/CHANGELOG.md index 292bd4c12..f39a12af4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added new sample trace file for cotag w fc/272. Thanks s1acky! (@iceman1001) + - Fixed `hf legic eload` - now it doesn't crash client (@doegox) + - Changed `lf hitag *` - rework client side (@doegox) + - Changed data commands to handle ask/nrz clocks above 256 (@iceman1001) + - Added `data envelope` - almost acts like data askedgedetect (@iceman1001) + - Added `data cthreshold` - acts like an inverted dirtythreshold command. Remove center values (@iceman1001) - Added `hf mfp list` - interprets MIFARE Plus commands in traces (@DidierA) - Changed `hf legic sim` - loop and return codes on deviceside updated to DEFINES (@iceman1001) - Changed `hf legic einfo` - now accepts the three different cardsizes as params (@iceman1001) diff --git a/traces/lf_cotag_220_8331.pm3 b/traces/lf_cotag_220_8331.pm3 new file mode 100644 index 000000000..49e96ecb5 --- /dev/null +++ b/traces/lf_cotag_220_8331.pm3 @@ -0,0 +1,42523 @@ +28 +16 +21 +24 +14 +17 +9 +5 +13 +6 +5 +4 +2 +4 +0 +0 +4 +2 +2 +9 +2 +3 +14 +-2 +7 +-3 +-4 +5 +-3 +-1 +-1 +-2 +-2 +-5 +8 +2 +-5 +2 +5 +0 +-1 +-1 +4 +-2 +-2 +0 +2 +4 +12 +-1 +0 +-2 +-4 +-3 +-3 +-1 +1 +8 +-2 +-1 +6 +16 +0 +2 +-1 +4 +-4 +0 +0 +-5 +2 +5 +7 +-4 +-1 +7 +-4 +10 +-2 +-4 +-3 +-3 +15 +1 +0 +4 +0 +-5 +12 +-1 +-4 +-6 +0 +7 +5 +-4 +-6 +-4 +13 +8 +-5 +-4 +-1 +14 +-2 +-3 +0 +-4 +3 +7 +3 +-5 +1 +11 +0 +-4 +-1 +0 +-5 +-4 +0 +3 +11 +10 +7 +-1 +0 +-31 +9 +-28 +-44 +11 +-23 +-42 +29 +-11 +-37 +26 +-13 +-37 +25 +-10 +-33 +21 +-14 +-29 +35 +-1 +-18 +25 +-12 +-15 +29 +-10 +-22 +35 +-6 +-30 +25 +-5 +-26 +24 +-5 +-15 +45 +2 +-26 +32 +-8 +-31 +27 +-11 +-32 +27 +-7 +-18 +29 +-11 +-30 +32 +-6 +-29 +31 +-8 +-26 +36 +-4 +-21 +37 +-4 +-27 +39 +-2 +-16 +31 +-9 +-16 +28 +-10 +-30 +42 +0 +-27 +28 +-6 +-26 +32 +-8 +-29 +26 +-11 +-22 +37 +-5 +-29 +27 +-10 +-22 +41 +3 +-25 +34 +-5 +-30 +26 +-12 +-23 +35 +-5 +-24 +42 +-2 +-24 +24 +-5 +-17 +39 +-2 +-27 +28 +-10 +-30 +26 +-11 +-29 +27 +-9 +-26 +32 +4 +-23 +29 +-7 +-27 +34 +-3 +-18 +42 +7 +-23 +30 +-9 +-29 +27 +-3 +-20 +28 +-12 +-18 +28 +-9 +10 +25 +35 +24 +28 +19 +6 +12 +2 +0 +9 +18 +12 +-2 +3 +0 +3 +-1 +-2 +3 +-1 +-1 +9 +0 +-2 +4 +2 +-4 +0 +-5 +-3 +0 +9 +1 +2 +5 +1 +3 +-4 +-3 +-5 +14 +2 +-3 +-3 +5 +-2 +-3 +2 +1 +2 +-1 +-1 +1 +0 +12 +9 +-1 +12 +-2 +-5 +-1 +15 +0 +-1 +-1 +-2 +-4 +-3 +0 +-3 +-4 +-3 +7 +-3 +-2 +-2 +-2 +-2 +5 +-2 +4 +5 +0 +0 +-4 +4 +1 +-2 +1 +5 +2 +-2 +-1 +2 +6 +1 +-3 +5 +2 +-4 +-2 +-2 +0 +1 +-1 +1 +-1 +13 +6 +-4 +-2 +2 +2 +1 +0 +-1 +-1 +4 +-2 +-3 +-3 +-3 +8 +2 +1 +-3 +1 +21 +-17 +-40 +15 +-23 +-40 +12 +-23 +-33 +18 +-17 +-36 +21 +-15 +-34 +26 +-12 +-26 +29 +-8 +-30 +26 +-12 +-23 +29 +-7 +-29 +31 +-8 +-22 +39 +-2 +-13 +37 +-5 +-27 +34 +-3 +-28 +39 +-4 +-28 +44 +1 +-23 +25 +-13 +-33 +26 +-11 +-27 +27 +-10 +-20 +31 +-8 +-20 +31 +-8 +-28 +33 +0 +-21 +30 +-9 +-23 +28 +-9 +-28 +42 +-1 +-26 +32 +-7 +-30 +27 +-9 +-15 +37 +2 +-26 +27 +-10 +-25 +29 +-4 +-15 +32 +-8 +-20 +28 +-8 +-30 +28 +-8 +-29 +33 +-4 +-22 +32 +-7 +-27 +47 +3 +-23 +38 +-4 +-20 +30 +-8 +-31 +30 +-7 +-16 +30 +-9 +-30 +28 +-9 +-30 +29 +-9 +-28 +32 +-7 +-18 +29 +-9 +-26 +33 +-4 +-25 +40 +-2 +-20 +34 +-7 +-17 +31 +-4 +-26 +30 +-9 +-24 +18 +21 +19 +19 +28 +25 +8 +11 +10 +16 +6 +13 +7 +8 +0 +3 +5 +-1 +2 +0 +-3 +-3 +4 +10 +6 +2 +-3 +-1 +15 +1 +-2 +4 +0 +-1 +-1 +3 +0 +10 +4 +-4 +15 +1 +-4 +1 +-6 +-4 +-7 +1 +-5 +1 +3 +2 +4 +-3 +-2 +0 +0 +6 +0 +2 +8 +5 +0 +-2 +11 +2 +-1 +0 +3 +-4 +-3 +-6 +6 +-2 +2 +9 +-3 +-4 +-7 +4 +-2 +-4 +-6 +3 +1 +3 +3 +9 +-3 +8 +1 +2 +7 +-4 +-3 +-4 +-4 +17 +0 +-3 +-2 +-1 +-4 +-2 +1 +-3 +8 +-2 +-4 +-4 +4 +0 +8 +-1 +-2 +-2 +-1 +0 +9 +7 +4 +-3 +9 +-2 +14 +1 +-5 +-4 +11 +-25 +-49 +6 +-28 +-46 +11 +-19 +-38 +20 +-15 +-35 +27 +-4 +-25 +30 +-10 +-30 +30 +-1 +-16 +28 +-5 +-16 +42 +-1 +-27 +24 +-12 +-25 +21 +-15 +-32 +25 +-12 +-30 +45 +2 +-22 +27 +-10 +-14 +30 +-9 +-31 +34 +-7 +-27 +32 +-4 +-29 +28 +-10 +-27 +28 +-8 +-28 +27 +1 +-23 +32 +-6 +-20 +45 +1 +-21 +33 +-7 +-28 +27 +-11 +-28 +25 +-1 +-18 +31 +-9 +-28 +30 +-7 +-28 +36 +-5 +-25 +31 +-7 +-28 +30 +-8 +-24 +31 +-3 +-25 +27 +-6 +-25 +29 +-8 +-23 +31 +-1 +-25 +45 +3 +-23 +29 +-9 +-25 +30 +-8 +-25 +29 +-7 +-26 +37 +-3 +-29 +30 +-4 +-26 +49 +4 +-25 +34 +-7 +-27 +27 +-11 +-30 +40 +-3 +-25 +27 +-8 +-27 +37 +-1 +-22 +26 +-11 +-30 +30 +-5 +-17 +34 +-5 +-9 +33 +2 +-25 +24 +-10 +-31 +27 +-9 +-29 +32 +-7 +-25 +37 +-5 +-23 +34 +-5 +-29 +31 +-5 +-27 +40 +4 +-17 +28 +-7 +-25 +25 +0 +-26 +27 +-11 +-26 +32 +-2 +-22 +31 +-5 +-24 +34 +-6 +-30 +27 +2 +-24 +43 +1 +-19 +27 +-11 +-31 +26 +-5 +-17 +28 +-12 +-31 +25 +-11 +27 +-10 +-26 +35 +-7 +-30 +30 +-9 +-16 +44 +4 +-25 +30 +-7 +-32 +28 +-9 +-23 +39 +-3 +-29 +34 +-7 +-30 +28 +-9 +-19 +27 +-7 +-29 +24 +-12 +-30 +28 +-8 +-29 +31 +-6 +-25 +45 +7 +-10 +32 +-7 +-27 +38 +-3 +-29 +28 +-10 +-29 +25 +-9 +-24 +29 +-8 +-29 +32 +-8 +-27 +33 +-6 +-22 +33 +-7 +-27 +31 +-7 +-26 +29 +-9 +32 +-5 +-28 +35 +-2 +-24 +45 +1 +-26 +33 +44 +17 +14 +12 +11 +19 +12 +6 +22 +6 +2 +2 +7 +-2 +3 +0 +10 +-1 +0 +-2 +0 +3 +1 +0 +1 +-3 +-2 +0 +2 +10 +1 +-4 +-4 +13 +3 +3 +1 +2 +-2 +-1 +0 +-1 +2 +-5 +-1 +0 +1 +3 +0 +-6 +1 +6 +-3 +-1 +1 +0 +8 +4 +-2 +3 +3 +0 +-1 +-1 +4 +-1 +1 +7 +3 +6 +4 +-5 +-6 +-4 +-1 +-6 +13 +12 +1 +-1 +11 +15 +10 +-4 +-8 +-6 +1 +-5 +-3 +-3 +-3 +2 +1 +-5 +4 +9 +-3 +-4 +3 +2 +3 +3 +10 +0 +10 +-3 +-1 +-6 +-3 +-1 +-3 +10 +-3 +-1 +-4 +3 +-3 +-2 +0 +-6 +-1 +-4 +-2 +3 +-3 +-3 +4 +7 +1 +-4 +6 +0 +-6 +-1 +-1 +4 +2 +-4 +-5 +3 +-4 +-2 +16 +2 +6 +16 +4 +-5 +-4 +2 +-6 +-5 +8 +-2 +1 +5 +18 +0 +-6 +-7 +-5 +8 +-3 +-2 +13 +2 +-2 +-1 +-5 +-3 +-1 +-2 +8 +2 +-5 +0 +1 +-5 +1 +8 +-2 +-5 +-2 +0 +5 +-1 +-3 +3 +-3 +-6 +-5 +17 +2 +0 +-3 +-3 +1 +12 +10 +3 +4 +0 +-4 +1 +-5 +-7 +5 +0 +1 +-2 +3 +1 +-2 +0 +-3 +-3 +3 +-2 +-1 +13 +3 +3 +8 +-2 +-5 +-4 +8 +-4 +11 +10 +-2 +-9 +-5 +0 +0 +-5 +0 +0 +1 +-6 +-4 +-2 +2 +6 +2 +0 +3 +10 +-2 +-5 +-4 +-2 +-3 +5 +9 +-2 +-33 +-50 +19 +-20 +-40 +16 +-17 +-37 +29 +-11 +-33 +20 +-16 +-34 +34 +-7 +-29 +38 +-4 +-29 +27 +-11 +-20 +30 +-9 +-29 +32 +-8 +-29 +28 +-7 +-20 +31 +-6 +-19 +30 +-8 +-25 +38 +-4 +-22 +30 +-8 +-29 +29 +-7 +-24 +29 +-3 +-18 +38 +-4 +-22 +29 +-9 +-30 +43 +-1 +-27 +37 +0 +-27 +28 +-11 +-26 +36 +-4 +-28 +32 +-9 +-30 +28 +-9 +-21 +28 +-11 +-27 +35 +-5 +-28 +41 +5 +-23 +43 +0 +-25 +28 +-11 +-14 +29 +-10 +-31 +28 +-6 +-29 +30 +-7 +-23 +25 +-11 +-19 +38 +3 +-12 +31 +-6 +-27 +24 +-5 +-21 +29 +-8 +-26 +40 +-2 +-29 +31 +-7 +-20 +39 +-2 +-15 +26 +-12 +-26 +38 +-1 +-25 +23 +-15 +-28 +26 +-6 +-28 +30 +-10 +-31 +30 +-6 +-30 +29 +-3 +-27 +48 +4 +-25 +25 +-4 +-28 +28 +-10 +-29 +29 +-10 +-20 +32 +-4 +-24 +32 +-4 +-25 +29 +-9 +-30 +32 +-7 +-27 +28 +-8 +-24 +40 +3 +-17 +39 +4 +-18 +28 +-10 +-26 +42 +-1 +-26 +27 +-11 +-27 +32 +-3 +-25 +35 +-4 +-27 +26 +-2 +-28 +30 +-6 +-30 +29 +-9 +-31 +30 +-10 +-12 +32 +-5 +-13 +30 +-10 +-19 +32 +-8 +-30 +33 +-3 +-26 +32 +-7 +-22 +35 +-2 +-27 +27 +0 +-27 +35 +-4 +-29 +29 +-9 +-32 +32 +-7 +-28 +32 +-5 +-26 +25 +-7 +-23 +31 +-7 +-27 +28 +-10 +-22 +35 +-2 +-13 +49 +3 +-12 +29 +-10 +-28 +28 +-11 +-32 +43 +0 +-26 +34 +-7 +-30 +30 +-9 +-32 +30 +-9 +-18 +31 +-8 +-25 +29 +-6 +-28 +28 +-9 +-16 +44 +0 +-25 +28 +-6 +-29 +26 +-6 +-25 +26 +46 +22 +15 +13 +15 +8 +10 +10 +10 +16 +25 +4 +10 +6 +11 +1 +3 +-5 +-1 +-2 +-2 +-2 +5 +5 +-6 +-1 +-3 +15 +0 +2 +5 +1 +4 +-3 +-2 +11 +-2 +-5 +1 +7 +-4 +5 +10 +1 +-4 +-4 +-3 +-6 +-4 +-3 +0 +-1 +-4 +2 +-1 +-2 +-3 +4 +-2 +6 +1 +0 +5 +12 +2 +-4 +10 +-3 +-1 +-4 +-4 +6 +1 +-3 +-1 +0 +9 +1 +-2 +4 +-1 +-5 +1 +-3 +-3 +4 +2 +2 +2 +-3 +11 +15 +7 +-6 +-6 +-3 +-4 +-4 +0 +-1 +10 +-2 +-3 +-3 +1 +-4 +-3 +4 +-3 +-1 +16 +0 +-2 +10 +1 +-2 +-2 +-6 +11 +11 +-1 +-4 +0 +-8 +1 +2 +-4 +-3 +-35 +-52 +17 +-20 +-35 +30 +-11 +-38 +29 +-11 +-36 +21 +-9 +-34 +25 +-12 +-31 +25 +-9 +-31 +24 +-12 +-24 +26 +-4 +-27 +30 +-9 +-15 +36 +0 +-18 +28 +-9 +-29 +30 +-8 +-20 +32 +-2 +-25 +43 +0 +-28 +33 +-7 +-17 +36 +-4 +-29 +26 +-13 +-27 +25 +-3 +-28 +41 +-3 +-20 +33 +-7 +-24 +35 +-7 +-30 +36 +-4 +-30 +35 +-6 +-20 +39 +-3 +-27 +27 +-12 +-29 +25 +-12 +-21 +30 +-5 +-17 +43 +0 +-25 +32 +-9 +-29 +28 +-11 +-32 +27 +-8 +-28 +26 +-10 +-25 +29 +3 +-23 +32 +0 +-17 +30 +-9 +-29 +30 +-9 +-23 +29 +-8 +-25 +31 +-7 +-28 +29 +-9 +-29 +37 +1 +-24 +40 +-1 +-26 +28 +-9 +-30 +35 +-4 +-26 +29 +-8 +-27 +33 +-7 +-28 +35 +-3 +-27 +31 +2 +-20 +27 +30 +20 +26 +14 +13 +13 +9 +23 +19 +4 +3 +9 +12 +0 +0 +0 +0 +20 +4 +-3 +10 +2 +-2 +-1 +-2 +0 +-1 +4 +-2 +-2 +8 +5 +0 +4 +0 +-2 +5 +3 +6 +-2 +2 +-3 +-3 +-4 +-3 +6 +-1 +1 +-2 +-2 +8 +11 +-1 +-4 +-5 +-2 +1 +-4 +-6 +-4 +-1 +4 +12 +6 +1 +-2 +3 +-2 +1 +1 +2 +-2 +6 +-3 +-5 +3 +0 +5 +6 +15 +1 +-5 +-6 +-4 +-3 +3 +6 +-1 +-5 +-4 +-1 +3 +2 +-4 +7 +-2 +4 +-1 +-5 +-4 +-2 +-2 +18 +2 +5 +-4 +-2 +8 +1 +-7 +-2 +7 +-4 +5 +-3 +3 +-5 +9 +-3 +0 +-1 +8 +-2 +3 +-3 +-7 +2 +-4 +-36 +6 +-27 +-46 +13 +-23 +-34 +17 +-17 +-37 +24 +-12 +-31 +24 +-8 +-29 +41 +-1 +-28 +36 +-5 +-29 +27 +-10 +-20 +40 +0 +-28 +32 +-7 +-30 +29 +-9 +-27 +39 +-2 +-22 +29 +-10 +-24 +30 +-10 +-29 +31 +-7 +-29 +26 +-9 +-27 +40 +-2 +-27 +35 +-5 +-26 +25 +-4 +-28 +29 +-10 +-24 +32 +-5 +-29 +31 +-8 +-25 +36 +-5 +-23 +33 +-5 +-27 +31 +-7 +-26 +34 +-6 +-17 +30 +-5 +-27 +39 +-1 +-16 +28 +-9 +-19 +29 +-10 +-29 +31 +-8 +-26 +28 +-7 +-24 +29 +-7 +-28 +48 +3 +-21 +27 +-10 +-28 +40 +-2 +-15 +28 +-9 +-30 +29 +-6 +-19 +26 +-7 +-29 +27 +-6 +-28 +30 +-8 +-20 +32 +-8 +-26 +31 +-1 +-20 +32 +-7 +-27 +32 +-7 +-29 +30 +-9 +-27 +37 +-3 +-23 +31 +-8 +19 +27 +21 +15 +19 +21 +18 +13 +19 +5 +5 +3 +4 +2 +9 +-1 +0 +2 +0 +16 +2 +13 +16 +14 +1 +-6 +2 +-2 +7 +-5 +6 +7 +0 +4 +-5 +-4 +0 +-7 +12 +0 +-4 +1 +-5 +-2 +-4 +-3 +-3 +-2 +-1 +-4 +9 +-3 +6 +-2 +0 +-2 +-2 +-2 +4 +-1 +-2 +-1 +-5 +5 +7 +14 +2 +-4 +-1 +11 +1 +4 +-2 +10 +1 +9 +0 +-5 +0 +-7 +4 +2 +-1 +-2 +-1 +-5 +-5 +12 +2 +7 +-2 +4 +-4 +-9 +3 +-3 +6 +1 +-4 +-6 +-4 +0 +-5 +3 +2 +8 +-2 +2 +1 +0 +0 +7 +-2 +-4 +-1 +4 +2 +16 +2 +-2 +-4 +0 +1 +-3 +-3 +-1 +-5 +9 +3 +0 +4 +2 +-6 +-2 +1 +-2 +1 +-5 +0 +-2 +-1 +3 +12 +10 +3 +0 +-5 +-5 +-3 +1 +5 +-4 +12 +5 +-4 +-1 +-3 +10 +-3 +1 +-6 +-7 +-3 +-4 +18 +1 +0 +-3 +-1 +-4 +-3 +-2 +-3 +12 +5 +0 +11 +9 +-4 +1 +-1 +-4 +-4 +-5 +-5 +2 +-2 +2 +0 +0 +-2 +-5 +4 +1 +14 +3 +-1 +-2 +-4 +3 +10 +2 +-2 +8 +-1 +-4 +9 +-1 +10 +-1 +-6 +-5 +-2 +11 +10 +7 +-6 +-5 +0 +-8 +-6 +0 +3 +-1 +-3 +-4 +4 +11 +-2 +-3 +-4 +16 +1 +-1 +-4 +-5 +-5 +4 +1 +-3 +3 +-2 +1 +13 +6 +-4 +-2 +13 +-2 +-4 +-4 +2 +-3 +-1 +2 +-6 +16 +-23 +-42 +10 +-25 +-43 +12 +-20 +-35 +23 +-14 +-33 +22 +-6 +-22 +22 +-11 +-32 +40 +-3 +-25 +32 +-8 +-29 +26 +-9 +-30 +37 +-3 +-28 +27 +-11 +-30 +32 +-6 +-26 +28 +-9 +-28 +33 +-6 +-28 +30 +-2 +-26 +39 +-2 +-27 +32 +-7 +-25 +40 +-2 +-24 +37 +-5 +-12 +29 +-9 +-22 +26 +-12 +-24 +25 +-12 +-28 +27 +-10 +-29 +35 +-5 +-25 +32 +-8 +-10 +34 +-4 +-27 +27 +-9 +-28 +26 +-9 +-27 +36 +-6 +-26 +36 +-2 +-23 +43 +0 +-26 +29 +-6 +-28 +29 +-1 +-20 +27 +-10 +-26 +33 +-7 +-27 +28 +-8 +-29 +28 +-8 +-24 +32 +-3 +-25 +32 +-5 +-26 +31 +-6 +-24 +30 +-8 +-8 +34 +-5 +-28 +30 +0 +-24 +41 +1 +-27 +26 +-10 +-25 +27 +-9 +-29 +42 +-1 +-18 +36 +-5 +-29 +28 +-11 +-23 +30 +-9 +-24 +44 +0 +-26 +33 +-6 +-27 +32 +-9 +-23 +31 +-8 +-26 +45 +1 +-24 +27 +-9 +-29 +39 +1 +-23 +23 +-12 +-32 +32 +-5 +-26 +26 +-10 +-30 +38 +-3 +-27 +28 +-7 +-16 +36 +-5 +-27 +31 +4 +-24 +29 +-9 +-16 +31 +-9 +-30 +29 +-8 +-16 +47 +4 +-24 +28 +-5 +-22 +28 +-8 +-28 +34 +-3 +-23 +25 +-3 +-29 +27 +-10 +-25 +34 +-1 +-22 +30 +-10 +-25 +34 +-6 +-29 +26 +-4 +-25 +33 +-5 +-28 +41 +-1 +-23 +32 +-7 +-25 +39 +-4 +-28 +32 +-8 +-13 +30 +-9 +-31 +26 +-11 +-24 +26 +-10 +-27 +44 +6 +-24 +30 +-9 +-26 +41 +-1 +-27 +30 +-9 +-31 +27 +-10 +-22 +28 +-10 +-29 +32 +-8 +-28 +29 +1 +-23 +30 +-8 +-11 +32 +-8 +-21 +28 +-10 +-26 +24 +23 +27 +18 +25 +20 +12 +12 +8 +5 +8 +16 +12 +5 +4 +2 +15 +12 +0 +-4 +-2 +-2 +0 +3 +3 +-3 +10 +-2 +-2 +12 +10 +-4 +-1 +-2 +16 +0 +4 +-5 +-2 +-2 +-4 +8 +-3 +-1 +4 +9 +16 +-2 +-6 +9 +-4 +-7 +1 +-4 +4 +9 +4 +-6 +-7 +-5 +-3 +2 +-6 +1 +4 +-2 +14 +0 +-4 +1 +-6 +-5 +6 +-4 +0 +-1 +6 +10 +1 +-3 +-3 +-5 +6 +0 +6 +5 +1 +-2 +-1 +3 +19 +-1 +3 +-8 +-2 +-9 +-7 +-3 +-3 +6 +-1 +-1 +5 +5 +0 +-1 +-6 +-4 +1 +-5 +6 +5 +-2 +7 +4 +-3 +-3 +-4 +11 +1 +-2 +11 +4 +0 +-3 +-7 +1 +-2 +11 +-26 +-40 +14 +-23 +-45 +15 +-22 +-39 +15 +-20 +-38 +22 +-12 +-29 +26 +-5 +-28 +28 +-5 +-17 +38 +-3 +-30 +28 +-7 +-28 +27 +-8 +-30 +29 +-5 +-27 +28 +-9 +-29 +46 +2 +-26 +30 +-1 +-27 +26 +-12 +-27 +29 +-6 +-14 +43 +2 +-19 +31 +-8 +-19 +32 +-9 +-31 +29 +-3 +-29 +28 +-11 +-27 +33 +-7 +-30 +32 +-8 +-29 +29 +-9 +-27 +38 +-4 +-27 +31 +-6 +-26 +49 +3 +-24 +28 +-9 +-30 +36 +-6 +-27 +28 +-10 +-27 +33 +-7 +-26 +28 +-7 +-29 +41 +8 +-22 +32 +-7 +-29 +27 +-10 +-23 +43 +0 +-25 +27 +-8 +-19 +28 +-11 +-30 +27 +-10 +-11 +32 +-7 +-28 +27 +-6 +-21 +30 +-8 +-27 +33 +-6 +-28 +45 +4 +-25 +28 +-10 +-21 +28 +-10 +-26 +28 +-8 +-23 +45 +2 +-21 +16 +20 +26 +19 +14 +16 +10 +15 +8 +6 +16 +5 +21 +5 +6 +1 +-1 +6 +18 +1 +2 +-4 +9 +6 +-6 +-1 +-2 +6 +1 +-5 +-2 +-2 +2 +-1 +-2 +-1 +-2 +-1 +4 +1 +0 +8 +11 +-3 +-4 +9 +-3 +-4 +3 +-4 +2 +-4 +9 +14 +4 +-6 +-3 +-7 +-1 +10 +0 +-4 +-2 +7 +-3 +-5 +-4 +1 +12 +0 +4 +2 +-3 +10 +-2 +2 +-2 +5 +-3 +1 +-5 +-5 +-2 +1 +-2 +11 +8 +0 +-5 +-6 +-4 +0 +4 +-4 +-1 +-3 +8 +15 +6 +-5 +1 +3 +1 +-7 +-6 +-4 +16 +2 +2 +-5 +-3 +-2 +-1 +1 +-1 +2 +1 +2 +-5 +-5 +3 +-1 +-2 +-4 +1 +4 +-4 +-1 +22 +-18 +-44 +10 +-15 +-41 +14 +-22 +-42 +31 +-9 +-32 +24 +-16 +-32 +23 +-11 +-33 +43 +-1 +-28 +28 +-9 +-17 +27 +-11 +-32 +26 +-11 +-18 +28 +-9 +-29 +35 +-4 +-30 +35 +-4 +-23 +32 +-8 +-26 +43 +-1 +-15 +29 +-7 +-31 +25 +-13 +-30 +25 +-11 +29 +-7 +-30 +29 +-5 +-29 +37 +-4 +-27 +45 +1 +-21 +25 +-9 +-29 +28 +-9 +-30 +27 +-9 +-30 +28 +-9 +-20 +33 +-5 +-22 +42 +-1 +-20 +29 +-8 +-25 +37 +-4 +-29 +35 +-6 +-29 +32 +-7 +-18 +37 +-5 +-30 +31 +-5 +-21 +24 +-11 +-29 +26 +-10 +-29 +32 +3 +-16 +37 +-1 +-21 +25 +-12 +-29 +30 +-9 +-29 +31 +-8 +-26 +28 +-10 +-27 +28 +-8 +-10 +34 +-6 +-24 +34 +-4 +-27 +32 +-8 +-27 +31 +-7 +-25 +37 +-4 +-25 +26 +28 +36 +27 +13 +14 +10 +8 +7 +12 +6 +23 +8 +4 +4 +-2 +-1 +4 +1 +0 +-1 +12 +0 +1 +-2 +0 +2 +1 +8 +17 +0 +0 +-2 +-1 +6 +1 +4 +3 +-2 +-5 +3 +8 +8 +-4 +8 +-3 +2 +-1 +16 +-1 +-3 +0 +-8 +1 +-4 +-3 +15 +0 +-7 +-3 +-1 +-1 +-3 +-4 +2 +-3 +1 +1 +5 +4 +-4 +10 +8 +7 +4 +6 +0 +-3 +2 +-7 +0 +-5 +-1 +-6 +15 +0 +-4 +8 +1 +-7 +-6 +-4 +-4 +5 +-5 +0 +-2 +7 +-1 +-2 +-4 +-4 +-3 +3 +9 +2 +-3 +4 +-3 +10 +4 +-3 +-4 +-2 +3 +0 +3 +-4 +0 +4 +5 +-2 +1 +-4 +1 +2 +5 +-1 +-5 +-36 +-43 +23 +-16 +-39 +14 +-13 +-38 +18 +-19 +-35 +28 +-11 +-22 +26 +-3 +-28 +24 +-13 +-32 +28 +-9 +-19 +42 +-1 +-26 +31 +-8 +-22 +38 +-4 +-30 +31 +-9 +-29 +28 +-10 +-25 +43 +0 +-27 +25 +-12 +-29 +24 +-13 +-30 +31 +-7 +-28 +42 +-1 +-25 +32 +-7 +-25 +26 +-11 +-29 +36 +-2 +-23 +31 +2 +-24 +27 +4 +-24 +34 +-5 +-16 +42 +1 +-26 +26 +-12 +-31 +41 +-1 +-28 +26 +-9 +-31 +31 +-8 +-26 +44 +-1 +-27 +33 +-2 +-24 +31 +-2 +-26 +29 +-7 +-22 +25 +-10 +-24 +25 +-12 +-30 +30 +-6 +-24 +28 +-9 +-20 +29 +-6 +-23 +30 +-8 +-28 +33 +-6 +-18 +29 +-9 +-22 +30 +-8 +-27 +34 +-5 +-26 +35 +-6 +-21 +29 +-8 +-29 +32 +5 +-21 +45 +2 +-27 +31 +-9 +-30 +30 +32 +23 +24 +21 +12 +8 +9 +8 +2 +14 +12 +22 +7 +-2 +1 +5 +9 +2 +14 +3 +-2 +7 +-2 +-3 +0 +11 +0 +5 +-3 +-7 +-1 +4 +8 +-4 +-4 +-2 +-1 +3 +-4 +-4 +-2 +9 +0 +-4 +8 +-2 +-1 +-5 +-3 +-2 +0 +4 +10 +-2 +-2 +13 +1 +3 +-4 +1 +12 +2 +7 +-6 +5 +-1 +-3 +-2 +15 +-1 +-2 +2 +0 +0 +-2 +-4 +4 +-5 +-3 +-4 +1 +16 +0 +0 +-3 +3 +9 +-6 +-2 +1 +-2 +3 +1 +13 +2 +-6 +1 +-4 +10 +-5 +-6 +-3 +3 +-5 +-8 +-4 +8 +0 +-7 +-6 +3 +17 +0 +-5 +-2 +13 +-2 +-1 +0 +13 +-1 +-5 +5 +-3 +8 +4 +1 +-4 +-37 +-46 +7 +-27 +-33 +16 +-21 +-40 +23 +-12 +-31 +23 +-14 +-35 +25 +-11 +-31 +30 +-5 +-27 +27 +-10 +-22 +31 +-8 +-28 +40 +-2 +-19 +29 +-10 +-30 +32 +-8 +-26 +39 +-2 +-20 +27 +-11 +-29 +30 +-5 +-29 +36 +-4 +-26 +28 +-7 +-29 +31 +-7 +-28 +38 +-2 +-26 +43 +-1 +-25 +37 +-1 +-27 +26 +-13 +-31 +32 +-4 +-12 +33 +-3 +-22 +25 +-10 +-20 +41 +2 +-22 +24 +-13 +-28 +29 +-7 +-29 +28 +-8 +-15 +29 +-10 +-28 +34 +-6 +-21 +27 +-11 +-26 +28 +-9 +-26 +26 +-10 +-27 +32 +-5 +-27 +30 +-7 +-27 +44 +2 +-24 +29 +-4 +-17 +52 +6 +-18 +26 +-13 +-31 +34 +-7 +-27 +32 +-9 +-19 +33 +-7 +-28 +27 +-6 +-25 +46 +2 +-24 +27 +-4 +-28 +26 +-10 +-28 +30 +-10 +-31 +23 +26 +23 +19 +20 +15 +12 +14 +10 +7 +22 +25 +8 +14 +3 +4 +3 +2 +4 +-1 +-3 +2 +1 +-4 +-2 +-2 +7 +-2 +0 +-1 +15 +2 +-3 +0 +14 +-2 +2 +-6 +-3 +-3 +-3 +6 +-3 +5 +1 +2 +4 +0 +-2 +-4 +-2 +8 +-2 +-5 +-1 +2 +-1 +0 +4 +0 +3 +3 +-1 +-4 +-7 +-4 +13 +6 +0 +-2 +3 +-2 +-3 +0 +2 +10 +-3 +-2 +1 +1 +-4 +3 +-3 +4 +4 +3 +13 +1 +14 +-1 +0 +-4 +-9 +-2 +-2 +-2 +-1 +-4 +13 +15 +-1 +-5 +-2 +3 +-3 +-4 +-2 +0 +2 +1 +1 +-4 +-4 +0 +-4 +12 +2 +-2 +3 +12 +0 +-4 +-1 +7 +-5 +5 +0 +1 +0 +-2 +9 +18 +-1 +-2 +-6 +-2 +-7 +-7 +-1 +6 +7 +-3 +1 +1 +-7 +-6 +0 +0 +-1 +-2 +5 +10 +-3 +16 +0 +-1 +-5 +-8 +-3 +0 +0 +2 +-1 +2 +-4 +-3 +-4 +2 +-1 +3 +7 +3 +-1 +16 +2 +-3 +5 +-2 +-5 +2 +7 +-3 +-5 +0 +-5 +-2 +1 +-3 +-2 +-2 +10 +6 +2 +-1 +0 +-2 +-1 +-2 +-1 +-1 +-2 +2 +7 +11 +3 +5 +0 +-5 +0 +0 +-4 +-4 +-2 +-6 +4 +3 +-2 +-2 +8 +3 +-3 +2 +4 +1 +-2 +-4 +4 +-2 +0 +-2 +-2 +-1 +7 +0 +12 +-1 +-1 +-3 +1 +7 +5 +9 +4 +0 +0 +-2 +-3 +-3 +-6 +10 +5 +-1 +7 +1 +-2 +-5 +-3 +-36 +-51 +23 +-17 +-38 +20 +-12 +-34 +15 +-21 +-37 +22 +-14 +-31 +39 +-4 +-16 +36 +-6 +-29 +26 +-12 +-32 +26 +-10 +-27 +29 +-10 +-25 +46 +3 +-26 +28 +-12 +-27 +26 +-11 +26 +-11 +-32 +29 +-9 +-29 +32 +-7 +-27 +28 +-7 +-23 +27 +-5 +-27 +38 +2 +-23 +39 +-2 +-27 +28 +-9 +-30 +32 +-5 +-28 +30 +-2 +-26 +29 +-7 +-29 +32 +-7 +-28 +34 +-5 +-28 +32 +-5 +-21 +36 +-1 +-27 +29 +-8 +-26 +28 +-8 +-21 +35 +-6 +-28 +30 +-7 +-28 +26 +-11 +-26 +28 +-5 +-25 +40 +0 +-19 +30 +-8 +-27 +32 +-7 +-26 +35 +-4 +-20 +30 +3 +-22 +32 +-6 +-28 +37 +-3 +-24 +33 +-6 +-18 +29 +-7 +-28 +31 +-7 +-27 +29 +-10 +-25 +31 +-1 +-12 +31 +-8 +-29 +31 +-8 +-30 +30 +-8 +-29 +29 +-8 +-22 +49 +4 +-22 +26 +-11 +-24 +33 +-7 +-22 +37 +-4 +-29 +38 +-4 +-27 +36 +-5 +-26 +29 +-10 +-28 +34 +-6 +-29 +31 +-9 +-27 +33 +-4 +-29 +36 +-6 +-16 +28 +-9 +-28 +26 +1 +-23 +26 +-10 +-24 +31 +-9 +-29 +31 +-7 +-27 +38 +2 +-16 +33 +-6 +-26 +29 +-9 +-29 +44 +4 +-26 +31 +-4 +-20 +29 +-7 +-26 +38 +-4 +-28 +24 +-12 +-25 +33 +-3 +-26 +29 +-5 +-20 +33 +-8 +-20 +34 +-5 +-29 +26 +-9 +-30 +26 +-11 +-26 +28 +-10 +-24 +39 +-3 +-23 +30 +-9 +-29 +32 +0 +-9 +31 +-6 +-29 +28 +-10 +-27 +30 +-2 +-24 +31 +-6 +-16 +46 +1 +-27 +28 +-10 +-24 +25 +-12 +-30 +38 +-1 +-26 +34 +-2 +-25 +44 +4 +-23 +24 +-12 +-29 +38 +-1 +-25 +31 +35 +16 +13 +14 +10 +12 +13 +6 +4 +7 +13 +7 +3 +1 +1 +5 +11 +3 +-2 +16 +15 +-1 +-4 +-1 +-3 +-2 +-2 +0 +2 +-3 +5 +1 +-1 +2 +-4 +-1 +-2 +3 +10 +3 +-4 +0 +6 +1 +-1 +-3 +6 +11 +-2 +-5 +1 +1 +-3 +-1 +-1 +2 +14 +1 +-6 +0 +-1 +-4 +-4 +-1 +4 +1 +-4 +-2 +4 +1 +2 +1 +-1 +-1 +5 +12 +-3 +4 +9 +14 +-2 +-4 +9 +10 +-5 +-7 +-7 +-5 +-5 +5 +-5 +1 +4 +5 +1 +-2 +-3 +3 +-5 +-2 +-5 +2 +3 +11 +0 +-4 +-2 +-7 +-3 +1 +-2 +6 +4 +6 +4 +1 +14 +-3 +4 +-5 +-4 +8 +12 +7 +-7 +-7 +-6 +-6 +-39 +-53 +11 +-23 +-42 +31 +-10 +-22 +19 +-16 +-35 +23 +-12 +-34 +29 +-10 +-26 +26 +-12 +-25 +27 +-7 +-30 +35 +-6 +-16 +44 +0 +-25 +24 +-14 +-33 +25 +-7 +-27 +35 +-6 +-26 +32 +-6 +28 +-10 +-31 +44 +0 +-26 +22 +-14 +-33 +34 +-7 +-23 +26 +-7 +-22 +25 +-1 +-25 +29 +-8 +-16 +41 +-2 +-16 +34 +-7 +-31 +24 +-14 +-21 +30 +-5 +-20 +41 +-3 +-27 +29 +-9 +-29 +46 +1 +-25 +26 +-11 +-27 +44 +0 +-28 +28 +-7 +-32 +28 +-3 +-29 +34 +-5 +-16 +43 +3 +-24 +22 +-7 +-26 +27 +-10 +-33 +36 +0 +-16 +30 +-10 +-32 +25 +-11 +-25 +27 +-10 +-29 +35 +-4 +-28 +28 +-10 +-25 +28 +-9 +-29 +29 +-9 +-28 +46 +3 +-22 +34 +-6 +-23 +44 +0 +-18 +26 +-13 +-16 +28 +-8 +6 +18 +17 +19 +11 +18 +11 +8 +7 +10 +6 +21 +9 +6 +2 +3 +2 +9 +18 +4 +3 +-1 +0 +4 +2 +4 +10 +11 +12 +-3 +-7 +-6 +-8 +0 +-2 +6 +-5 +-6 +14 +15 +7 +-5 +-3 +-6 +-4 +2 +10 +-3 +0 +-5 +-4 +-4 +-5 +-2 +-2 +-3 +2 +1 +9 +0 +-2 +-4 +-3 +9 +-1 +-1 +-2 +7 +-3 +-4 +3 +1 +-3 +7 +-2 +-4 +2 +-1 +-1 +13 +9 +-3 +5 +0 +-3 +-3 +-3 +2 +-3 +3 +9 +3 +13 +0 +-3 +7 +-5 +-5 +12 +-3 +-4 +7 +-5 +-6 +-5 +-3 +-5 +10 +-3 +14 +-1 +-6 +1 +0 +-6 +-5 +2 +-3 +-1 +-5 +4 +5 +0 +2 +0 +0 +-2 +-3 +17 +-21 +-47 +11 +-25 +-44 +13 +-21 +-41 +20 +-16 +-34 +26 +-10 +-32 +25 +-13 +-27 +29 +-9 +-26 +35 +-4 +-27 +28 +-8 +-15 +37 +-1 +-9 +30 +-9 +-29 +33 +1 +-25 +32 +-8 +-24 +26 +-10 +-28 +28 +-4 +-29 +31 +-9 +-28 +28 +-4 +-24 +31 +-4 +-18 +27 +-10 +-27 +36 +-5 +-24 +26 +-6 +-24 +32 +-6 +31 +-7 +-29 +27 +-9 +-30 +32 +-5 +-26 +29 +-8 +-25 +31 +-7 +-26 +29 +-4 +-21 +33 +-6 +-25 +31 +0 +-24 +27 +-5 +-28 +30 +-1 +-12 +34 +-7 +-28 +31 +-7 +-29 +31 +-1 +-21 +29 +-9 +-24 +32 +-7 +-28 +30 +-6 +-26 +28 +-6 +-26 +34 +-2 +-25 +45 +7 +-20 +33 +-6 +-29 +30 +-8 +-17 +31 +-6 +-31 +29 +-11 +-26 +37 +-4 +-29 +30 +-1 +-25 +26 +-8 +-29 +26 +48 +23 +21 +16 +14 +12 +9 +7 +5 +7 +5 +6 +2 +6 +4 +3 +5 +4 +6 +4 +3 +0 +-1 +1 +4 +5 +2 +1 +3 +-1 +-2 +5 +7 +9 +7 +9 +11 +8 +11 +3 +7 +-2 +-3 +-8 +-7 +2 +-4 +1 +-5 +-7 +-1 +-3 +-1 +-5 +-5 +1 +-4 +13 +-1 +-3 +11 +9 +12 +-1 +3 +3 +7 +3 +-3 +0 +-2 +-7 +-7 +1 +-7 +-2 +-2 +-4 +-4 +4 +4 +-1 +-6 +8 +-3 +10 +-1 +-4 +-4 +1 +-4 +-1 +3 +-3 +7 +7 +0 +-3 +0 +4 +-6 +-6 +5 +12 +0 +-3 +-3 +0 +-3 +-2 +2 +5 +1 +6 +-3 +-3 +-6 +-5 +-3 +-1 +-2 +-1 +3 +5 +1 +5 +11 +9 +-29 +-49 +8 +-26 +-42 +28 +-12 +-27 +21 +-16 +-33 +37 +-6 +-32 +31 +-9 +-31 +20 +-14 +-24 +35 +-6 +-21 +28 +-12 +-30 +36 +-2 +-27 +26 +-11 +-29 +27 +-12 +-15 +30 +-10 +-31 +25 +-11 +-31 +35 +-5 +-22 +28 +-9 +-28 +31 +-9 +-23 +31 +-6 +-27 +34 +-4 +-22 +46 +4 +-24 +30 +-8 +-31 +27 +-9 +-30 +49 +3 +-23 +28 +-7 +-27 +25 +-12 +-30 +37 +-3 +-25 +33 +-6 +-20 +33 +-5 +-26 +28 +-5 +-25 +30 +-3 +-27 +29 +-9 +-28 +34 +1 +-18 +30 +-7 +-14 +29 +-9 +-30 +37 +-5 +-26 +32 +1 +-18 +31 +-7 +-21 +26 +-12 +-31 +43 +-1 +-27 +27 +-6 +-28 +28 +-10 +-28 +34 +-1 +-25 +27 +-8 +-28 +27 +-6 +-24 +38 +-3 +-27 +31 +-2 +-24 +33 +-7 +-25 +30 +-1 +-25 +40 +29 +24 +16 +15 +16 +11 +7 +9 +6 +5 +7 +8 +18 +16 +3 +14 +-1 +0 +0 +6 +10 +0 +0 +8 +1 +-4 +-6 +-4 +-7 +0 +-1 +8 +3 +8 +-2 +-1 +-2 +7 +-4 +3 +-2 +-4 +-2 +16 +0 +0 +-2 +-3 +-4 +1 +-3 +-3 +-4 +5 +3 +3 +9 +0 +1 +-3 +-2 +-1 +-4 +1 +-4 +1 +9 +-1 +-1 +7 +-4 +0 +3 +-5 +-3 +10 +-1 +9 +6 +3 +-1 +-1 +3 +7 +14 +6 +-2 +-6 +-4 +5 +4 +-5 +0 +5 +-6 +0 +1 +-2 +-5 +0 +-2 +6 +3 +6 +-4 +11 +-3 +-2 +-8 +1 +-4 +5 +17 +6 +9 +-4 +-6 +-6 +-6 +-6 +0 +1 +-4 +-1 +0 +7 +1 +-6 +-1 +-3 +-4 +-1 +0 +1 +1 +2 +-2 +-1 +-1 +-1 +-4 +3 +6 +12 +0 +-1 +2 +-3 +5 +7 +11 +0 +-4 +-1 +4 +4 +-3 +2 +-2 +-5 +16 +1 +-1 +2 +-6 +-5 +-4 +1 +3 +7 +7 +0 +-5 +4 +1 +-6 +-4 +-2 +3 +4 +0 +-2 +1 +0 +-4 +0 +2 +-2 +-1 +1 +-2 +5 +15 +7 +-5 +1 +-4 +14 +-1 +-5 +-6 +0 +8 +15 +5 +1 +-4 +-7 +-6 +0 +0 +-4 +2 +1 +6 +-4 +-7 +-3 +-3 +2 +4 +-2 +-2 +-3 +12 +2 +2 +-3 +-4 +1 +-2 +12 +-2 +-3 +-6 +6 +6 +-1 +8 +3 +14 +10 +0 +-4 +-6 +1 +-3 +-2 +-8 +8 +-4 +14 +-2 +9 +3 +8 +-30 +-51 +17 +-21 +-43 +11 +-24 +-42 +24 +-10 +-31 +25 +-15 +-30 +21 +-14 +-35 +32 +-9 +-30 +24 +-9 +-31 +31 +-9 +-29 +32 +-7 +-25 +31 +-8 +-28 +31 +-7 +-22 +29 +-7 +-14 +52 +6 +-21 +30 +-9 +-22 +30 +-9 +-29 +27 +-4 +-28 +28 +-10 +-29 +38 +-5 +-27 +28 +-9 +-28 +41 +-1 +-27 +27 +-1 +-21 +31 +-9 +-25 +34 +-5 +-24 +25 +-13 +-30 +29 +-7 +-25 +32 +-7 +-27 +32 +4 +-23 +31 +-8 +-27 +35 +-6 +-28 +40 +-3 +-27 +31 +-7 +-25 +32 +-6 +-23 +26 +-7 +-29 +30 +-8 +-28 +37 +-2 +-28 +31 +-8 +-25 +28 +5 +-23 +38 +-4 +-28 +31 +-6 +-27 +39 +-3 +-27 +31 +-8 +-23 +37 +-4 +-24 +32 +-4 +-28 +28 +-11 +-30 +32 +-7 +-22 +29 +-10 +-26 +37 +4 +-23 +35 +38 +19 +14 +19 +14 +29 +10 +14 +7 +2 +2 +18 +5 +6 +1 +6 +0 +-2 +2 +11 +2 +12 +2 +3 +-3 +-4 +-3 +-2 +-3 +-2 +-2 +1 +8 +-2 +-4 +-3 +-2 +5 +8 +-2 +-5 +-4 +1 +4 +-1 +9 +6 +-3 +-3 +-3 +2 +7 +1 +-2 +4 +9 +-4 +-2 +-1 +5 +3 +-4 +-4 +3 +1 +3 +13 +11 +-5 +-5 +-4 +-1 +-4 +-7 +8 +0 +-3 +-1 +-1 +0 +-5 +8 +12 +3 +-3 +0 +-3 +-4 +1 +6 +4 +-1 +0 +0 +-4 +-2 +3 +-2 +1 +7 +2 +-2 +4 +0 +-4 +5 +-3 +0 +-5 +-2 +-2 +10 +2 +5 +8 +-3 +-1 +2 +5 +-4 +9 +5 +4 +-3 +0 +-1 +-2 +6 +-31 +-50 +12 +-24 +-35 +18 +-18 +-38 +27 +-12 +-36 +21 +-15 +-30 +22 +-6 +-28 +23 +-14 +-31 +27 +-10 +-25 +32 +-2 +-26 +28 +-1 +-22 +33 +-5 +-24 +26 +-11 +-28 +30 +-8 +-23 +40 +-1 +-19 +33 +-7 +-27 +32 +-6 +-26 +28 +-9 +-24 +43 +0 +-11 +30 +-9 +-25 +27 +-11 +-29 +29 +-10 +-28 +44 +5 +-25 +35 +-3 +-9 +30 +-9 +-30 +30 +-10 +-26 +28 +-6 +-27 +27 +-11 +-29 +27 +-4 +-11 +34 +-7 +-17 +40 +-2 +-28 +28 +-8 +-30 +27 +-7 +-28 +44 +1 +-26 +26 +-10 +-30 +32 +-9 +-28 +33 +-6 +-27 +28 +-9 +-29 +35 +3 +-22 +27 +-2 +-26 +33 +-5 +-21 +27 +-11 +-30 +42 +1 +-26 +30 +-2 +-27 +30 +-9 +-26 +28 +-3 +-26 +34 +-5 +-21 +29 +-9 +-16 +45 +1 +-28 +22 +25 +21 +15 +21 +11 +10 +8 +26 +9 +12 +11 +0 +19 +3 +-3 +-6 +7 +-1 +-2 +-1 +-1 +2 +11 +16 +16 +11 +-5 +-6 +0 +-3 +7 +7 +-5 +3 +-4 +-4 +11 +-1 +0 +2 +-6 +-6 +-6 +-5 +-4 +-3 +0 +-2 +-2 +-4 +10 +4 +-4 +-2 +1 +15 +-2 +2 +-1 +6 +-3 +4 +6 +-5 +-5 +2 +-1 +-3 +2 +5 +3 +-2 +1 +-3 +-1 +-3 +-4 +-1 +4 +-5 +0 +5 +-1 +-5 +4 +6 +1 +10 +-2 +-1 +3 +-2 +4 +3 +-2 +4 +-4 +-5 +2 +4 +6 +-4 +3 +-4 +-6 +3 +-1 +-1 +-1 +-4 +-4 +-4 +11 +3 +1 +-2 +1 +3 +-3 +5 +1 +7 +-2 +1 +11 +-1 +-3 +1 +-34 +-49 +15 +-20 +-43 +20 +-14 +-37 +25 +-9 +-27 +26 +-13 +-33 +34 +-6 +-31 +27 +-9 +-30 +22 +-9 +-19 +32 +-7 +-30 +26 +-11 +-27 +29 +-8 +-28 +39 +0 +-25 +26 +-9 +-28 +30 +-8 +29 +-9 +-30 +31 +-9 +-26 +28 +3 +-24 +28 +2 +-24 +30 +-8 +-30 +30 +-9 +-24 +29 +-9 +-28 +29 +-9 +-25 +29 +-6 +-27 +31 +-4 +-25 +29 +-3 +-23 +43 +5 +-18 +47 +3 +-26 +27 +-8 +-30 +28 +-9 +-25 +45 +3 +-25 +25 +-13 +-32 +34 +-7 +-26 +31 +-8 +-28 +37 +2 +-24 +28 +-8 +-26 +28 +-10 +-28 +29 +-9 +-27 +47 +3 +-25 +33 +-6 +-27 +33 +-7 +-30 +28 +-8 +-27 +28 +-1 +-16 +28 +-7 +-23 +28 +-9 +-22 +31 +-8 +-21 +36 +-1 +-17 +35 +-5 +-30 +37 +-5 +-29 +26 +-8 +-28 +32 +-8 +-24 +38 +-4 +-26 +28 +-11 +-22 +26 +-3 +-22 +27 +-11 +-23 +29 +-8 +-28 +45 +6 +-22 +34 +-6 +-28 +32 +-9 +-29 +41 +6 +-23 +32 +-7 +-26 +36 +-3 +-28 +26 +-8 +-30 +33 +-5 +-26 +25 +-9 +-29 +31 +-6 +-28 +39 +-2 +-26 +28 +-11 +-28 +26 +-6 +-27 +29 +-7 +-15 +30 +-9 +-29 +35 +-2 +-26 +47 +2 +-22 +30 +-9 +-29 +30 +-10 +-26 +28 +-10 +-28 +31 +-7 +-27 +31 +-2 +-26 +42 +5 +-13 +29 +-10 +-28 +31 +-9 +-25 +30 +-8 +-11 +32 +-8 +-24 +28 +-8 +-19 +28 +-10 +-27 +29 +-5 +-25 +27 +-9 +-25 +30 +-7 +-27 +36 +-5 +-27 +44 +1 +-23 +37 +-3 +-26 +30 +-8 +-25 +29 +-11 +-28 +25 +-11 +-27 +32 +-6 +-28 +31 +-5 +-15 +46 +2 +-21 +34 +29 +17 +18 +10 +10 +21 +13 +13 +16 +4 +19 +23 +4 +1 +-3 +16 +1 +-1 +-3 +8 +-4 +-5 +-5 +-3 +-1 +4 +2 +4 +22 +2 +12 +-1 +0 +-9 +-7 +2 +7 +-1 +-3 +-1 +5 +-3 +-6 +-4 +-5 +14 +0 +-3 +-1 +-2 +-3 +-3 +2 +-4 +0 +-1 +-3 +2 +16 +-1 +3 +-5 +-3 +-4 +-1 +9 +7 +-3 +-1 +1 +-1 +-2 +1 +0 +3 +-1 +-2 +0 +4 +-6 +-2 +4 +8 +6 +7 +-1 +-4 +-4 +5 +14 +1 +-3 +-6 +-4 +-2 +10 +10 +-4 +5 +-1 +5 +4 +4 +-6 +-1 +1 +-4 +-6 +-3 +12 +0 +3 +-1 +-3 +-5 +-1 +-2 +-5 +-3 +-3 +-2 +9 +3 +-4 +2 +-1 +4 +9 +-6 +-3 +-2 +-2 +7 +9 +-2 +-1 +3 +0 +1 +12 +0 +-4 +-3 +-1 +-4 +1 +1 +2 +-2 +0 +15 +5 +11 +8 +6 +11 +-4 +-7 +-4 +2 +-5 +-6 +-6 +10 +8 +1 +-3 +-2 +5 +-5 +5 +2 +-6 +3 +5 +0 +-3 +-1 +-6 +-1 +-5 +-3 +-2 +-1 +0 +-5 +-1 +4 +4 +-3 +0 +2 +-2 +0 +3 +1 +-2 +-3 +14 +12 +13 +6 +-6 +14 +-2 +-1 +0 +3 +4 +-7 +1 +-6 +-1 +-1 +-6 +9 +14 +-1 +-6 +-4 +0 +0 +1 +-1 +-2 +6 +-5 +-6 +-1 +5 +-5 +-4 +3 +-2 +-2 +-1 +3 +0 +3 +0 +-5 +5 +8 +-3 +10 +-4 +-2 +3 +-5 +11 +0 +-6 +0 +-2 +-4 +4 +-27 +-44 +9 +-25 +-42 +14 +-20 +-36 +22 +-14 +-34 +23 +-7 +-31 +33 +-6 +-25 +23 +-3 +-27 +34 +-4 +-26 +37 +-5 +-29 +33 +-6 +-29 +32 +-7 +-28 +26 +-12 +-29 +28 +-8 +-26 +36 +-5 +-28 +36 +-3 +-26 +47 +8 +-22 +34 +2 +-26 +22 +-10 +-25 +30 +-8 +-25 +25 +-12 +-31 +35 +-5 +-19 +41 +-2 +-24 +24 +-11 +-31 +44 +4 +-19 +25 +-12 +-29 +35 +-6 +-26 +26 +-10 +-31 +27 +-10 +-24 +35 +-5 +-26 +31 +-8 +-25 +40 +-2 +-28 +31 +-8 +-26 +33 +-5 +-25 +46 +1 +-26 +31 +-9 +-30 +33 +-6 +-29 +28 +-10 +-29 +27 +-11 +-25 +26 +-10 +-29 +38 +3 +-14 +30 +-3 +-26 +32 +-8 +-29 +33 +-4 +-28 +30 +-7 +-21 +30 +1 +-25 +30 +-7 +-23 +33 +2 +-25 +38 +-4 +-24 +34 +23 +17 +14 +13 +27 +15 +9 +8 +8 +8 +22 +9 +3 +10 +3 +-2 +0 +16 +1 +-1 +-2 +-1 +6 +12 +3 +0 +-1 +14 +4 +-5 +-3 +-3 +1 +2 +-5 +12 +11 +0 +6 +12 +6 +-3 +-1 +-7 +-4 +-10 +-6 +-1 +-3 +-3 +0 +-2 +-3 +-1 +2 +3 +4 +19 +1 +3 +11 +4 +-6 +-1 +4 +-2 +-6 +1 +-3 +-8 +1 +-2 +0 +-1 +13 +-2 +3 +-1 +-4 +2 +1 +15 +0 +-4 +4 +-4 +-8 +-6 +2 +-2 +-1 +-6 +1 +18 +1 +-1 +-4 +-1 +9 +6 +3 +-3 +-5 +-1 +-4 +1 +7 +-2 +4 +-4 +3 +-2 +0 +-2 +11 +19 +2 +-8 +2 +-3 +0 +-4 +-6 +-8 +-3 +18 +2 +10 +-26 +-50 +13 +-25 +-38 +14 +-22 +-32 +19 +-18 +-35 +17 +-11 +-24 +25 +-14 +-30 +26 +-11 +-32 +36 +-5 +-28 +26 +-7 +-29 +28 +-8 +-25 +28 +-9 +-29 +39 +-4 +-26 +28 +-9 +-19 +31 +-5 +-28 +34 +-5 +-23 +31 +-9 +-23 +41 +-1 +-26 +27 +-10 +-28 +28 +-3 +-27 +28 +-4 +-27 +28 +-9 +-22 +31 +-7 +-27 +30 +-7 +-24 +31 +-8 +-26 +46 +3 +-25 +29 +-10 +-29 +30 +-7 +-28 +31 +-7 +-27 +41 +3 +-20 +28 +-10 +-28 +41 +0 +-24 +29 +-9 +-28 +40 +0 +-23 +37 +-4 +-24 +28 +-10 +-29 +32 +-8 +-28 +28 +-7 +-25 +28 +-8 +-18 +30 +1 +-24 +32 +-5 +-25 +32 +-8 +-24 +28 +-9 +-28 +27 +-7 +-28 +32 +-8 +-14 +39 +8 +-22 +34 +-6 +-27 +28 +-1 +-9 +30 +-10 +-27 +27 +40 +18 +21 +28 +11 +8 +12 +4 +11 +2 +13 +3 +16 +6 +12 +3 +-2 +0 +-2 +-1 +-4 +-4 +-1 +-1 +5 +2 +-4 +13 +8 +-1 +2 +-3 +5 +0 +3 +-4 +0 +-4 +-1 +3 +-3 +4 +-1 +-4 +-2 +16 +4 +0 +8 +0 +-6 +-4 +-3 +-3 +-1 +0 +15 +12 +13 +1 +-3 +-2 +-4 +-2 +4 +2 +-3 +3 +6 +-5 +1 +-2 +-3 +-4 +-2 +-4 +-2 +-4 +11 +-1 +-3 +-2 +-3 +0 +11 +14 +2 +3 +1 +4 +-4 +12 +9 +-5 +-6 +6 +-5 +-7 +-4 +-6 +2 +-1 +-3 +4 +-3 +-4 +4 +10 +-3 +-4 +-5 +5 +5 +-4 +3 +0 +3 +-5 +6 +-2 +1 +-2 +6 +10 +1 +-6 +-3 +-2 +-36 +-51 +9 +-25 +-33 +19 +-18 +-36 +23 +-15 +-33 +31 +-9 +-30 +27 +-11 +-27 +23 +-13 +-25 +26 +-11 +-24 +30 +-8 +-27 +47 +3 +-22 +30 +-6 +-30 +27 +-8 +-29 +38 +0 +-25 +30 +-9 +-28 +28 +-10 +-26 +30 +-9 +-24 +26 +-9 +-26 +30 +-3 +-12 +47 +3 +-26 +27 +-9 +-23 +27 +-10 +-27 +39 +-3 +-24 +29 +-8 +-31 +32 +-8 +-21 +36 +-4 +-23 +32 +-8 +-26 +26 +-9 +-28 +30 +-9 +-26 +46 +2 +-26 +39 +-4 +-16 +39 +3 +-27 +25 +-14 +-33 +36 +-5 +-30 +29 +-6 +-26 +31 +-8 +-27 +27 +-8 +-28 +36 +-4 +-29 +28 +-9 +-22 +46 +3 +-20 +27 +-11 +-29 +34 +-3 +-21 +31 +-8 +-30 +25 +-8 +-28 +27 +-10 +-27 +29 +-7 +-27 +29 +-5 +-25 +33 +-6 +-12 +32 +-8 +-16 +29 +24 +17 +18 +24 +13 +16 +10 +12 +7 +12 +5 +12 +12 +19 +14 +12 +-2 +-5 +-3 +-5 +-3 +8 +3 +-7 +5 +-3 +-1 +11 +-1 +-4 +-1 +-2 +0 +-5 +-3 +-4 +5 +12 +8 +-1 +-4 +2 +1 +-1 +-2 +-4 +2 +2 +14 +11 +11 +0 +-4 +0 +-7 +-1 +-2 +-4 +-3 +-3 +-2 +-1 +-1 +7 +-1 +14 +3 +0 +-4 +3 +4 +4 +-4 +4 +-4 +-4 +5 +-5 +5 +-4 +-3 +11 +5 +-6 +1 +1 +-4 +-2 +-4 +-1 +12 +-2 +-1 +-7 +-3 +11 +16 +1 +-3 +15 +-1 +-6 +-7 +0 +2 +1 +-6 +-1 +-6 +-6 +-6 +0 +5 +11 +4 +8 +12 +13 +12 +-2 +-9 +-8 +-6 +-6 +-5 +-7 +6 +3 +-33 +-51 +11 +-25 +-44 +20 +-18 +-38 +29 +-11 +-34 +30 +-9 +-29 +23 +-12 +-30 +25 +-8 +-14 +30 +-9 +-16 +26 +-9 +-32 +29 +-10 +-18 +37 +-4 +-28 +29 +-6 +-29 +25 +-11 +-31 +30 +-7 +-28 +32 +-3 +-21 +33 +-7 +-17 +36 +-5 +-26 +26 +-1 +-25 +32 +-7 +-28 +34 +-7 +-23 +29 +-9 +-27 +30 +-8 +-22 +29 +-9 +-28 +39 +-3 +-23 +31 +-1 +-17 +38 +-4 +-27 +31 +-6 +-30 +33 +-4 +-27 +30 +-7 +-29 +36 +-2 +-26 +34 +-6 +-28 +33 +-7 +-16 +30 +-5 +-29 +26 +-6 +-20 +38 +-3 +-28 +33 +-4 +-27 +38 +6 +-24 +30 +-10 +-27 +30 +-8 +-31 +33 +-3 +-14 +44 +1 +-28 +30 +-10 +-32 +30 +0 +-28 +31 +-10 +-31 +34 +-4 +-24 +31 +-4 +-26 +30 +-6 +-28 +26 +-11 +-28 +27 +26 +19 +34 +16 +15 +11 +15 +14 +8 +7 +5 +4 +7 +9 +2 +2 +0 +4 +3 +5 +1 +-1 +-2 +2 +1 +11 +4 +2 +-3 +5 +15 +8 +0 +-2 +5 +-5 +5 +-3 +1 +6 +8 +-6 +-1 +-6 +-6 +-3 +-1 +-3 +2 +9 +4 +-4 +0 +2 +-1 +-2 +-1 +2 +6 +-2 +-5 +-3 +5 +5 +-1 +-1 +7 +-1 +-7 +-6 +3 +-1 +-1 +-1 +5 +6 +-2 +-1 +3 +-3 +4 +-3 +-1 +-1 +5 +0 +-1 +1 +-3 +-1 +1 +-3 +7 +14 +14 +-2 +11 +-3 +-6 +-5 +-5 +-2 +-5 +-2 +4 +-4 +2 +-1 +-2 +16 +1 +-3 +0 +-4 +-3 +-1 +5 +-4 +0 +2 +-1 +15 +11 +12 +-1 +4 +8 +4 +-32 +-51 +16 +-23 +-43 +11 +-21 +-38 +14 +-20 +-35 +19 +-13 +-33 +22 +-14 +-32 +39 +-3 +-28 +39 +-3 +-29 +25 +-12 +-31 +29 +-9 +-20 +29 +0 +-24 +42 +0 +-17 +27 +-9 +-30 +38 +-4 +-16 +34 +-6 +-28 +45 +0 +-27 +25 +-10 +-32 +34 +-6 +-30 +27 +-6 +-28 +26 +-7 +-23 +26 +-10 +-31 +34 +-6 +-10 +31 +-6 +-30 +39 +-3 +-25 +28 +-10 +-22 +31 +-8 +-28 +45 +1 +-20 +41 +-2 +-18 +35 +-5 +-20 +33 +-8 +-31 +25 +-7 +-31 +31 +-9 +-27 +33 +-3 +-29 +32 +-9 +-28 +28 +-9 +-28 +32 +-3 +-27 +32 +-5 +-29 +25 +-10 +-28 +29 +-8 +-24 +32 +-7 +-24 +31 +-7 +-18 +35 +-1 +-20 +29 +-9 +-29 +29 +-8 +-28 +37 +-4 +-27 +36 +-2 +-25 +33 +-4 +-19 +29 +-2 +-24 +28 +26 +33 +20 +15 +16 +9 +17 +12 +5 +4 +9 +12 +3 +2 +2 +0 +1 +2 +5 +-1 +6 +5 +1 +1 +7 +0 +5 +2 +4 +-2 +-1 +2 +-1 +4 +-2 +9 +3 +-3 +-4 +-2 +9 +7 +-1 +6 +-1 +-3 +7 +10 +-4 +0 +-3 +0 +9 +0 +-5 +-8 +1 +-5 +-1 +-2 +-2 +7 +-3 +-3 +4 +-5 +3 +-1 +0 +7 +1 +-2 +5 +-2 +0 +1 +2 +4 +1 +-4 +-2 +5 +-3 +2 +-3 +0 +-2 +0 +-2 +-1 +-2 +7 +-1 +-1 +2 +2 +-2 +4 +-1 +6 +0 +5 +1 +-3 +2 +0 +-4 +4 +4 +3 +-2 +5 +-1 +-4 +-6 +3 +4 +7 +5 +0 +-1 +10 +4 +5 +-3 +0 +-3 +-3 +-36 +2 +-29 +-48 +14 +-23 +-41 +17 +-15 +-37 +21 +-9 +-13 +27 +-10 +-33 +25 +-9 +-28 +32 +-7 +-19 +27 +-12 +-22 +40 +1 +-21 +39 +-4 +-29 +25 +-11 +-32 +28 +-7 +-30 +27 +-11 +-26 +33 +-8 +-27 +31 +-7 +-26 +33 +1 +-24 +28 +-1 +-24 +44 +0 +-24 +28 +-7 +-26 +31 +-9 +-29 +44 +1 +-25 +28 +0 +-27 +31 +-8 +-26 +33 +-8 +-29 +42 +1 +-27 +28 +-12 +-31 +27 +-9 +-18 +32 +-7 +-16 +30 +-9 +-16 +32 +-3 +-25 +27 +0 +-27 +27 +-5 +-22 +32 +-7 +-25 +33 +-5 +-28 +29 +-7 +-29 +33 +-8 +-26 +29 +-9 +-16 +30 +-10 +-28 +38 +-4 +-24 +27 +-12 +-28 +29 +-6 +-25 +32 +-1 +-24 +28 +-9 +-28 +31 +-2 +-24 +31 +-7 +-27 +29 +-3 +-24 +39 +-2 +-24 +42 +-1 +17 +20 +28 +21 +23 +20 +9 +6 +13 +10 +7 +2 +0 +-1 +6 +9 +1 +13 +4 +-2 +0 +5 +-4 +-3 +0 +8 +5 +0 +-2 +-1 +1 +2 +-2 +5 +3 +-1 +-2 +8 +2 +-2 +6 +1 +6 +-4 +11 +-2 +-2 +-2 +6 +-1 +9 +-4 +0 +-4 +0 +-2 +-3 +0 +-3 +-3 +5 +-3 +17 +0 +1 +-4 +-2 +-5 +16 +0 +0 +-1 +-4 +-1 +5 +14 +-3 +-4 +-5 +-1 +-1 +-5 +2 +0 +-4 +16 +2 +0 +-4 +-3 +5 +-2 +-4 +-3 +-5 +-6 +-4 +-1 +9 +9 +16 +-1 +3 +-5 +-2 +-1 +11 +-1 +-2 +0 +-3 +0 +-4 +-2 +2 +0 +-2 +-1 +2 +8 +0 +4 +8 +8 +-2 +5 +19 +-1 +9 +-28 +-49 +4 +-26 +-30 +15 +-21 +-39 +21 +-14 +-30 +26 +-4 +-31 +21 +-15 +-34 +24 +-12 +-24 +28 +-10 +-27 +33 +-6 +-18 +30 +-8 +-27 +33 +-8 +-26 +27 +-10 +-14 +35 +-7 +-26 +36 +-5 +-29 +29 +-11 +-27 +33 +-8 +-28 +29 +-9 +-25 +28 +-10 +-28 +29 +-8 +-26 +33 +-5 +-27 +34 +-5 +-26 +28 +-4 +-26 +33 +-6 +-26 +29 +-7 +-26 +42 +1 +-24 +31 +-5 +-24 +33 +-5 +-19 +45 +1 +-26 +37 +-4 +-28 +29 +-9 +-29 +29 +-9 +-18 +38 +-1 +-17 +42 +2 +-27 +23 +-14 +-32 +27 +-9 +-20 +33 +-5 +-29 +27 +-8 +-26 +26 +-11 +-27 +30 +-7 +-22 +39 +6 +-23 +28 +1 +-24 +31 +-7 +-24 +38 +-1 +-26 +27 +-10 +-32 +26 +-13 +-28 +33 +-1 +-22 +48 +3 +-24 +28 +-10 +-18 +20 +16 +27 +21 +32 +16 +9 +6 +4 +10 +7 +5 +3 +6 +15 +14 +7 +2 +3 +-3 +-2 +-1 +-4 +2 +2 +-4 +13 +-1 +3 +-3 +3 +-4 +1 +1 +2 +-3 +-3 +-2 +-2 +5 +11 +6 +-1 +9 +3 +-4 +-2 +-4 +9 +11 +2 +13 +8 +-2 +-4 +-7 +-3 +-2 +-1 +3 +1 +-6 +0 +2 +20 +0 +-1 +-2 +-4 +-4 +-5 +-6 +0 +2 +1 +-5 +1 +-3 +1 +-3 +11 +8 +-2 +6 +7 +-1 +-4 +-4 +5 +6 +12 +2 +-7 +7 +5 +0 +11 +-5 +-6 +-2 +-6 +-5 +8 +-2 +-4 +-1 +-1 +4 +3 +-7 +8 +0 +-6 +-2 +-4 +-8 +-6 +-4 +-3 +15 +17 +-1 +-1 +4 +15 +13 +1 +-6 +8 +-29 +-45 +9 +-24 +-47 +14 +-22 +-42 +17 +-14 +-33 +19 +-6 +-30 +28 +-7 +-32 +25 +-12 +-22 +26 +-10 +-32 +42 +-1 +-27 +27 +-10 +-31 +36 +1 +-27 +27 +-10 +-28 +26 +-12 +-21 +35 +-5 +-28 +36 +-3 +-25 +28 +0 +-22 +46 +1 +-27 +26 +2 +-26 +34 +-7 +-30 +30 +-7 +-17 +30 +-10 +-31 +28 +-10 +-30 +27 +-10 +-29 +28 +-8 +-26 +32 +-7 +-21 +29 +-7 +-25 +39 +-2 +-25 +39 +-3 +-24 +29 +-9 +-28 +30 +-6 +-29 +41 +-2 +-23 +28 +-7 +-27 +27 +-7 +-24 +31 +-6 +-27 +44 +4 +-12 +34 +-7 +-29 +27 +-9 +-29 +38 +-3 +-21 +40 +-1 +-26 +30 +-2 +-27 +25 +-2 +-26 +44 +1 +-26 +28 +-10 +-32 +26 +-11 +-29 +27 +-5 +-15 +46 +2 +-13 +30 +-11 +-30 +24 +-11 +-31 +18 +23 +22 +26 +17 +13 +14 +24 +9 +5 +8 +5 +1 +15 +21 +4 +-1 +1 +-1 +3 +5 +0 +1 +-4 +0 +5 +3 +17 +1 +10 +11 +-5 +6 +-6 +3 +-5 +-2 +0 +-2 +1 +3 +-2 +1 +-6 +-5 +0 +4 +2 +-3 +-2 +-1 +-3 +1 +4 +-2 +-4 +13 +9 +-2 +-5 +5 +-2 +-2 +-2 +-1 +3 +10 +-2 +-5 +-3 +3 +1 +3 +5 +-1 +1 +10 +16 +-1 +-4 +-5 +-3 +0 +5 +-2 +9 +-4 +-4 +12 +-3 +-5 +4 +-1 +-5 +6 +8 +-3 +-6 +-7 +10 +-2 +-6 +-6 +-4 +0 +15 +1 +10 +3 +3 +-1 +-4 +-5 +1 +-2 +-1 +8 +5 +1 +-5 +-5 +-3 +-2 +7 +5 +-4 +-2 +-3 +14 +-24 +-47 +12 +-23 +-45 +15 +-22 +-39 +16 +-19 +-25 +23 +-13 +-34 +32 +-7 +-31 +24 +-11 +-28 +31 +-7 +-26 +28 +-6 +-9 +31 +-6 +-21 +27 +-11 +-17 +37 +-3 +-23 +34 +-8 +-30 +37 +-4 +-25 +27 +-11 +-31 +38 +-3 +-27 +31 +0 +-26 +41 +-1 +-25 +25 +-11 +-29 +23 +-11 +-15 +32 +-8 +-26 +36 +-4 +-16 +30 +-3 +-19 +24 +-4 +-24 +28 +-10 +-31 +27 +-10 +-29 +37 +-3 +-22 +41 +-1 +-21 +26 +-13 +-20 +26 +-9 +-30 +33 +-7 +-27 +40 +2 +-12 +31 +-9 +-26 +25 +-7 +-17 +27 +-11 +-26 +36 +-5 +-27 +26 +-11 +-19 +32 +-7 +-22 +42 +0 +-27 +30 +-8 +-15 +32 +-9 +-23 +47 +3 +-24 +23 +-3 +-28 +28 +-10 +-25 +29 +-8 +-28 +46 +2 +-26 +32 +-7 +-25 +29 +-10 +-32 +30 +-9 +-21 +30 +-9 +-31 +33 +-8 +-27 +31 +-7 +-30 +45 +5 +-13 +42 +1 +-26 +21 +-15 +-25 +24 +-10 +-32 +25 +-11 +-29 +28 +-9 +-30 +35 +-4 +-26 +32 +-1 +-22 +28 +-11 +-28 +33 +-5 +-26 +29 +-7 +-29 +32 +-2 +-24 +46 +4 +-21 +30 +-9 +-24 +27 +-9 +-22 +31 +-3 +-28 +28 +2 +-24 +29 +-9 +-24 +37 +-4 +-24 +37 +-3 +-26 +33 +-8 +-29 +32 +-7 +-27 +37 +-3 +-26 +35 +-6 +-22 +41 +-3 +-25 +35 +-5 +-18 +32 +-9 +-30 +27 +-1 +-28 +29 +-7 +-28 +42 +-1 +-26 +37 +-6 +-25 +36 +-1 +-29 +28 +-11 +-30 +40 +-2 +-30 +25 +-12 +-28 +32 +-8 +-21 +30 +-4 +-21 +25 +-7 +-24 +27 +-1 +-26 +39 +4 +-23 +27 +-11 +-30 +24 +-12 +-26 +30 +-9 +-25 +46 +2 +-21 +15 +27 +28 +19 +16 +20 +15 +12 +12 +11 +4 +2 +8 +5 +5 +1 +2 +-2 +5 +7 +10 +11 +2 +-4 +-4 +-4 +4 +1 +-2 +-1 +0 +-2 +8 +1 +15 +0 +1 +5 +-4 +3 +16 +0 +-2 +-5 +12 +13 +10 +-7 +-5 +-5 +-4 +8 +1 +-4 +-5 +-1 +-5 +-1 +-2 +-5 +18 +0 +-2 +2 +-5 +-8 +11 +-3 +0 +-3 +-2 +-4 +3 +9 +1 +-2 +3 +0 +-2 +-5 +-2 +-3 +-4 +-1 +0 +9 +1 +-1 +6 +-1 +2 +-6 +-2 +-1 +5 +-1 +14 +4 +-4 +-5 +1 +3 +-5 +-5 +2 +4 +2 +2 +-5 +-2 +5 +0 +-2 +2 +10 +2 +-1 +-3 +0 +0 +2 +0 +2 +-3 +13 +-1 +0 +-2 +5 +11 +-2 +-7 +6 +15 +15 +-3 +-5 +-2 +-5 +-4 +-4 +-5 +-1 +-3 +-2 +14 +2 +-5 +-4 +4 +4 +-5 +2 +8 +4 +-4 +-5 +-2 +9 +-4 +-2 +3 +7 +0 +-4 +-4 +-1 +-2 +-2 +-2 +9 +-2 +-5 +0 +3 +-3 +-1 +0 +3 +-3 +12 +6 +-4 +-3 +-2 +3 +4 +6 +3 +-3 +-3 +3 +-3 +5 +0 +13 +10 +-2 +-5 +-4 +6 +-3 +0 +-4 +6 +-4 +-1 +6 +1 +-4 +13 +0 +-4 +-3 +-5 +2 +2 +-3 +-1 +-1 +9 +11 +11 +2 +-3 +-4 +-6 +2 +-3 +-2 +-2 +-1 +-6 +0 +2 +6 +4 +3 +14 +11 +3 +-1 +-4 +-5 +4 +15 +-1 +-6 +-6 +-8 +0 +0 +-2 +6 +-2 +1 +13 +-25 +-48 +8 +-27 +-46 +18 +-19 +-36 +18 +-16 +-37 +30 +-6 +-29 +24 +-13 +-31 +26 +-11 +-27 +29 +-4 +-27 +30 +-8 +-23 +34 +0 +-27 +29 +-9 +-30 +28 +-9 +-26 +46 +2 +-11 +45 +1 +-28 +29 +-11 +-27 +26 +-9 +-23 +30 +-10 +-18 +34 +-7 +-23 +40 +-4 +-28 +25 +-12 +-31 +31 +-9 +-20 +27 +-8 +-27 +34 +-1 +-25 +27 +-10 +-21 +30 +-10 +-30 +29 +-6 +-18 +33 +-6 +-23 +43 +2 +-26 +27 +-11 +-31 +38 +-3 +-25 +27 +-11 +-25 +27 +-7 +-29 +31 +-3 +-14 +34 +-5 +-26 +30 +-10 +-30 +29 +-8 +-23 +29 +-10 +-24 +30 +-6 +-24 +30 +-8 +-26 +32 +1 +-23 +31 +-7 +-27 +43 +5 +-24 +37 +-4 +-28 +28 +-6 +-15 +35 +-6 +-30 +38 +-3 +-29 +33 +-8 +-27 +28 +-8 +-26 +17 +22 +26 +16 +19 +22 +28 +22 +9 +4 +11 +9 +2 +-1 +0 +4 +4 +1 +2 +5 +2 +0 +4 +0 +5 +-2 +0 +13 +5 +-3 +4 +-1 +3 +-3 +-4 +1 +0 +-5 +2 +0 +-2 +1 +5 +7 +1 +3 +12 +-1 +-3 +1 +-3 +10 +3 +-1 +-5 +2 +0 +8 +-2 +6 +-3 +-4 +-3 +-4 +12 +-1 +3 +4 +0 +-2 +15 +0 +-1 +2 +-5 +6 +-4 +14 +-1 +-6 +3 +10 +10 +-5 +-4 +-6 +-5 +-7 +-1 +-4 +1 +-5 +-1 +2 +0 +-2 +-2 +-2 +-1 +9 +-1 +-3 +-1 +0 +-2 +3 +-5 +0 +1 +-1 +2 +-3 +2 +2 +-2 +7 +3 +-2 +1 +-1 +-2 +1 +9 +9 +1 +12 +6 +13 +-24 +6 +-29 +-51 +9 +-27 +-44 +13 +-16 +-26 +20 +-18 +-36 +25 +-11 +-32 +25 +-13 +-30 +27 +-10 +-22 +30 +-9 +-26 +27 +-10 +-30 +39 +-3 +-12 +33 +-6 +-30 +29 +-6 +-22 +38 +0 +-25 +33 +-8 +-25 +33 +-4 +-26 +26 +-11 +-16 +28 +-9 +-20 +30 +-10 +-29 +36 +-5 +-16 +29 +-10 +-31 +47 +3 +-22 +30 +-4 +-26 +33 +-1 +-28 +27 +-12 +-29 +29 +-3 +-27 +39 +0 +-23 +27 +-10 +-31 +27 +-11 +-30 +33 +-6 +-24 +39 +1 +-16 +34 +-6 +-26 +33 +-5 +-25 +25 +-12 +-30 +29 +-8 +-26 +30 +-8 +-21 +42 +-1 +-26 +40 +-1 +-25 +30 +-8 +-25 +27 +-11 +-27 +41 +0 +-20 +26 +-6 +-19 +27 +-11 +-31 +29 +4 +-25 +31 +-9 +-30 +33 +-7 +-29 +27 +-11 +-19 +29 +-9 +-22 +29 +-8 +27 +23 +28 +17 +25 +25 +28 +7 +3 +18 +11 +0 +8 +-2 +9 +0 +3 +4 +-2 +-2 +2 +-3 +0 +-3 +5 +-2 +1 +0 +-1 +-1 +2 +-3 +3 +0 +0 +8 +0 +-2 +4 +-1 +-1 +18 +3 +-2 +-5 +-3 +-2 +1 +-2 +-2 +2 +0 +6 +9 +-3 +0 +-1 +10 +10 +7 +0 +-5 +-4 +2 +-3 +-1 +-6 +-3 +7 +1 +5 +10 +0 +-1 +-3 +-4 +8 +-4 +8 +6 +-4 +-4 +11 +-1 +-5 +-3 +-2 +-8 +5 +7 +0 +9 +-1 +-8 +-5 +3 +2 +-4 +-2 +-6 +0 +-4 +-2 +2 +-2 +-1 +1 +-4 +15 +10 +-2 +-3 +1 +13 +3 +-3 +-1 +3 +12 +-1 +4 +-2 +-3 +1 +-3 +-4 +-4 +-2 +7 +-21 +-45 +12 +-25 +-44 +20 +-18 +-37 +21 +-16 +-28 +27 +-13 +-32 +28 +-10 +-31 +27 +-11 +-28 +25 +-7 +-30 +31 +-7 +-25 +27 +-9 +-28 +33 +-7 +-24 +29 +-7 +-11 +33 +-7 +-27 +28 +-10 +-25 +29 +-6 +-23 +29 +-7 +-8 +34 +-4 +-27 +30 +-7 +-25 +30 +-8 +-20 +32 +-6 +-24 +39 +0 +-23 +39 +0 +-27 +27 +-6 +-29 +27 +-8 +-23 +28 +-6 +-28 +32 +-6 +-24 +28 +-8 +-29 +33 +-4 +-24 +28 +-7 +-25 +28 +-8 +-27 +40 +-2 +-23 +30 +-5 +-29 +28 +-11 +-28 +32 +-3 +-25 +30 +-7 +-18 +46 +7 +-23 +27 +-6 +-24 +43 +1 +-25 +26 +-10 +-31 +32 +-6 +-29 +31 +3 +-24 +37 +-4 +-26 +25 +-6 +-9 +29 +-8 +-31 +28 +-9 +-29 +31 +-7 +-30 +28 +-8 +-22 +33 +-6 +-23 +21 +23 +24 +35 +20 +20 +11 +14 +11 +4 +15 +6 +8 +0 +2 +4 +8 +3 +0 +0 +10 +-3 +-3 +9 +3 +-2 +4 +-2 +15 +16 +15 +8 +1 +-3 +-6 +-5 +-5 +-3 +11 +-2 +8 +-4 +14 +0 +-1 +-7 +-2 +-6 +-4 +5 +10 +-5 +5 +-5 +-6 +-2 +10 +-1 +2 +1 +3 +-5 +-4 +-1 +-2 +-3 +-1 +-1 +-1 +-1 +0 +2 +3 +15 +2 +-2 +-2 +-1 +-2 +-1 +-1 +-1 +10 +1 +-3 +0 +4 +8 +-4 +-6 +-4 +3 +-4 +-3 +4 +13 +2 +-5 +-2 +-4 +-4 +-3 +-5 +-3 +6 +-2 +-1 +6 +2 +-1 +-1 +-2 +2 +-4 +1 +7 +4 +8 +5 +8 +1 +7 +-4 +-5 +-5 +5 +2 +9 +20 +-17 +-44 +9 +-27 +-44 +17 +-21 +-32 +15 +-17 +-31 +22 +-9 +-32 +18 +-16 +-29 +30 +-11 +-30 +35 +-5 +-26 +43 +-1 +-24 +25 +-12 +-28 +25 +-11 +-24 +34 +-6 +-26 +34 +0 +-23 +34 +-2 +-23 +27 +-10 +-27 +26 +-10 +-27 +33 +-8 +-29 +29 +5 +-22 +27 +-11 +-21 +41 +-1 +-20 +32 +-6 +-20 +37 +-5 +-27 +32 +-9 +-21 +24 +-13 +-30 +28 +-11 +-28 +35 +-4 +-29 +27 +-8 +-24 +33 +-2 +-23 +34 +-2 +-27 +31 +-7 +-29 +30 +-4 +-27 +29 +-4 +-19 +31 +-9 +-26 +30 +-5 +-28 +35 +-3 +-27 +33 +-3 +-28 +28 +-8 +-28 +35 +3 +-12 +31 +-9 +-27 +31 +-7 +-29 +33 +-4 +32 +-7 +-30 +30 +-6 +-29 +28 +-6 +-27 +31 +-8 +-26 +43 +-1 +-27 +34 +-5 +-30 +28 +-9 +-29 +20 +34 +31 +19 +17 +10 +9 +14 +9 +7 +11 +4 +4 +17 +5 +7 +0 +3 +1 +0 +6 +1 +4 +1 +-1 +15 +15 +15 +0 +-1 +-6 +-5 +-2 +12 +-4 +-3 +5 +13 +12 +3 +0 +-5 +-8 +-6 +-10 +-1 +2 +0 +11 +8 +-3 +4 +12 +-1 +-3 +2 +2 +-5 +-7 +-5 +-5 +-6 +5 +-3 +-7 +6 +0 +9 +5 +2 +4 +-2 +-6 +6 +11 +2 +-7 +-2 +-4 +-4 +-2 +11 +1 +5 +2 +-4 +-5 +-5 +-1 +11 +10 +-2 +-6 +-1 +-4 +0 +-4 +-5 +-4 +3 +14 +-1 +0 +-2 +2 +-4 +1 +2 +-1 +-2 +-2 +3 +-3 +-2 +-3 +5 +4 +2 +1 +8 +-4 +3 +1 +14 +2 +-5 +6 +9 +-4 +-37 +-54 +13 +-24 +-38 +20 +-15 +-37 +20 +-16 +-37 +19 +-16 +-27 +24 +-12 +-26 +26 +-7 +-29 +28 +-10 +29 +-9 +-26 +27 +-4 +-24 +26 +-10 +-18 +30 +-9 +-28 +32 +-8 +-28 +28 +-9 +-28 +38 +-4 +-23 +28 +-10 +-27 +49 +4 +-24 +34 +-6 +-14 +31 +-8 +-29 +34 +-2 +-29 +28 +-10 +-29 +36 +-4 +-22 +26 +-10 +-30 +28 +-8 +-28 +46 +1 +-22 +31 +-6 +-26 +35 +-7 +-29 +30 +-8 +-24 +33 +-2 +-15 +38 +-4 +-30 +32 +-9 +-29 +24 +-12 +-26 +29 +-8 +-17 +36 +-1 +-23 +36 +-6 +-24 +26 +-10 +-30 +33 +-7 +-30 +35 +-1 +-14 +31 +-8 +-30 +39 +-2 +-24 +32 +-8 +-30 +26 +-10 +-24 +42 +-2 +-25 +28 +-9 +-18 +36 +-6 +-28 +30 +-9 +-30 +30 +3 +-23 +28 +-7 +-23 +26 +24 +21 +19 +22 +15 +12 +13 +10 +10 +10 +9 +3 +9 +0 +-1 +0 +7 +5 +0 +-1 +-1 +3 +0 +-1 +4 +2 +4 +0 +2 +1 +-1 +1 +-1 +-1 +0 +1 +13 +16 +11 +-1 +-3 +-5 +-4 +10 +9 +-3 +0 +-1 +11 +-1 +-2 +-6 +-4 +-3 +-7 +-5 +-2 +8 +12 +7 +-4 +3 +-5 +0 +14 +1 +-2 +2 +-3 +4 +2 +-6 +-5 +-5 +3 +-4 +-4 +-2 +18 +1 +14 +0 +-4 +11 +13 +6 +-7 +-5 +-7 +-2 +1 +-5 +-6 +4 +-4 +-3 +-5 +-1 +-2 +-3 +-4 +3 +1 +1 +16 +3 +2 +-4 +-3 +3 +-3 +-1 +13 +5 +0 +4 +16 +2 +-2 +-4 +-7 +-5 +-4 +-4 +-5 +-3 +2 +4 +-32 +5 +-28 +-36 +32 +-10 +-37 +24 +-14 +-38 +20 +-17 +-37 +34 +-5 +-31 +29 +-11 +-27 +26 +-13 +-28 +33 +-8 +-30 +33 +-9 +-32 +26 +-8 +-29 +30 +-10 +-16 +36 +-1 +-28 +45 +0 +-27 +31 +-6 +-29 +26 +-13 +-31 +27 +-4 +-23 +32 +-7 +-29 +29 +-6 +-23 +35 +-6 +-17 +31 +-7 +-28 +31 +-9 +-25 +25 +-12 +-27 +34 +-2 +-19 +33 +-4 +-22 +31 +-9 +-30 +31 +4 +-24 +32 +-8 +-25 +25 +-10 +-25 +41 +-3 +-27 +27 +-10 +-17 +35 +-7 +-13 +31 +-9 +-28 +37 +-5 +-23 +35 +-6 +-29 +31 +-5 +-24 +25 +-11 +-32 +28 +-8 +-29 +28 +-9 +-28 +29 +-8 +-23 +41 +-1 +-23 +31 +-9 +-28 +35 +3 +-12 +41 +0 +-27 +27 +-8 +-28 +24 +-13 +-29 +27 +-8 +-28 +34 +-4 +-25 +33 +-5 +15 +33 +29 +32 +16 +13 +18 +7 +16 +6 +9 +9 +15 +1 +4 +10 +4 +-3 +-4 +1 +2 +-2 +7 +-1 +-3 +-3 +-2 +5 +2 +9 +-1 +-2 +-1 +-2 +-3 +-3 +0 +-1 +2 +4 +3 +10 +-1 +5 +0 +5 +16 +1 +4 +-4 +0 +-6 +-2 +-6 +-1 +1 +-3 +5 +4 +2 +1 +0 +3 +4 +4 +1 +-3 +-2 +7 +3 +-5 +3 +-3 +-3 +-4 +-5 +-2 +-4 +6 +8 +2 +0 +0 +4 +-2 +-1 +-1 +-2 +2 +-2 +1 +3 +-3 +-1 +2 +7 +11 +4 +2 +-4 +-3 +3 +13 +2 +-1 +14 +0 +1 +-4 +-3 +-4 +2 +-4 +8 +-3 +0 +-3 +1 +15 +5 +-4 +-2 +-8 +2 +-2 +3 +-5 +-4 +25 +-14 +-42 +21 +-16 +-38 +10 +-25 +-45 +22 +-17 +-38 +19 +-17 +-37 +30 +-6 +-31 +24 +-12 +-33 +35 +-5 +-29 +26 +-11 +-26 +25 +-11 +-22 +34 +-6 +-28 +30 +-9 +-28 +33 +-6 +-20 +31 +-7 +-28 +34 +-6 +-23 +31 +-8 +-27 +31 +-7 +-26 +40 +-2 +-22 +41 +2 +-22 +32 +-9 +-30 +27 +-7 +-27 +30 +-8 +-23 +35 +-2 +-24 +32 +-8 +-25 +29 +-9 +-28 +32 +-8 +-24 +35 +-3 +-24 +43 +-1 +-24 +36 +-3 +-29 +29 +-10 +-29 +42 +2 +-23 +28 +-7 +-26 +30 +-6 +-30 +29 +-8 +-27 +29 +-8 +-26 +27 +-11 +-23 +33 +-4 +-23 +45 +0 +-26 +44 +3 +-26 +24 +-11 +-23 +32 +-5 +-20 +29 +-11 +-19 +37 +-5 +-29 +30 +-9 +-28 +22 +-14 +-29 +30 +2 +-23 +25 +-11 +-24 +31 +-8 +-19 +24 +24 +20 +16 +16 +18 +17 +14 +11 +6 +7 +16 +7 +4 +3 +5 +6 +0 +10 +21 +5 +-2 +-3 +16 +3 +2 +-3 +-2 +-2 +5 +0 +-2 +9 +-3 +-1 +1 +-4 +-4 +0 +6 +2 +1 +-4 +0 +-4 +5 +0 +-2 +-2 +3 +0 +11 +10 +-3 +0 +-6 +6 +14 +-4 +1 +-1 +2 +-6 +5 +7 +15 +6 +-2 +-7 +-1 +-8 +9 +-3 +8 +12 +5 +-10 +-2 +-1 +-8 +11 +-1 +-6 +-3 +-3 +-7 +-5 +-3 +7 +-5 +-4 +-1 +2 +-2 +0 +1 +-2 +4 +8 +0 +4 +9 +-3 +11 +12 +0 +-4 +-2 +-6 +-2 +2 +7 +8 +-2 +0 +4 +-5 +-5 +9 +1 +-2 +8 +-3 +-6 +-7 +-4 +-5 +4 +9 +-25 +-47 +18 +-21 +-44 +13 +-22 +-42 +22 +-13 +-33 +25 +-12 +-30 +24 +-12 +-31 +34 +-6 +-24 +26 +-12 +-29 +38 +5 +-23 +27 +-11 +-19 +40 +-2 +-21 +36 +-1 +-25 +24 +-9 +-29 +30 +-10 +-19 +40 +-2 +-22 +32 +-9 +-32 +24 +-12 +-32 +43 +-1 +-24 +42 +3 +-15 +28 +-12 +-27 +38 +-4 +-28 +28 +-12 +-31 +24 +-5 +-20 +42 +0 +-25 +41 +2 +-28 +29 +-11 +-32 +26 +-11 +-32 +35 +-3 +-25 +32 +-4 +-28 +22 +-12 +-28 +29 +-8 +-27 +30 +-6 +-26 +25 +-9 +-25 +34 +-6 +-25 +30 +-8 +-20 +42 +-1 +-19 +30 +-6 +-29 +30 +-7 +-17 +35 +-5 +-21 +29 +-10 +-29 +32 +-7 +-23 +38 +-4 +-27 +30 +-7 +-22 +28 +-9 +-22 +31 +-5 +-26 +44 +1 +-25 +27 +-8 +-30 +31 +-8 +-28 +17 +26 +24 +22 +16 +16 +19 +13 +14 +13 +25 +10 +4 +13 +1 +-2 +11 +5 +-3 +10 +2 +-3 +0 +14 +-2 +15 +0 +1 +-5 +-1 +-2 +-5 +-5 +0 +-2 +-7 +12 +3 +-3 +-2 +-2 +-1 +2 +-1 +-1 +-2 +-3 +1 +-3 +-2 +2 +1 +3 +-3 +0 +6 +8 +-2 +-2 +5 +3 +17 +-1 +-4 +-1 +7 +11 +1 +-2 +1 +-5 +4 +-3 +-2 +4 +-3 +2 +2 +-2 +6 +-3 +4 +-2 +-2 +1 +-3 +-5 +-3 +1 +-2 +4 +15 +2 +-2 +-4 +-3 +-2 +3 +-1 +-1 +16 +9 +-2 +-3 +-3 +-7 +-4 +6 +-3 +9 +13 +13 +-2 +-4 +10 +13 +5 +-6 +-3 +-1 +-4 +4 +-5 +9 +13 +-5 +-4 +14 +-25 +8 +-29 +-52 +9 +-26 +-44 +11 +-24 +-40 +16 +-19 +-30 +21 +-15 +-33 +34 +-4 +-27 +33 +-6 +-18 +30 +-9 +-27 +25 +-4 +-24 +32 +-7 +-23 +28 +-11 +-29 +34 +-3 +-23 +36 +-5 +-27 +26 +-9 +-28 +33 +-8 +-20 +27 +-10 +-29 +29 +-9 +-27 +28 +-6 +-23 +39 +-3 +-20 +31 +-8 +-22 +41 +3 +-17 +33 +-5 +-28 +28 +-11 +-29 +30 +-6 +-19 +51 +5 +-22 +31 +-7 +-16 +28 +-11 +-32 +35 +-6 +-22 +25 +-12 +-29 +23 +-1 +-26 +28 +-10 +-27 +34 +-6 +-21 +32 +-9 +-29 +26 +-8 +-14 +29 +-7 +-29 +33 +-6 +-24 +34 +-4 +-27 +29 +-8 +-25 +29 +-9 +-9 +32 +-3 +-28 +29 +-8 +-28 +34 +-5 +-28 +28 +-10 +-24 +27 +-8 +-19 +30 +-7 +-27 +30 +4 +-23 +33 +-7 +-27 +34 +1 +26 +25 +17 +21 +20 +13 +16 +11 +11 +7 +13 +6 +16 +6 +-1 +-2 +2 +-2 +5 +1 +-1 +0 +1 +0 +4 +6 +5 +6 +14 +8 +-4 +-4 +11 +9 +-5 +-4 +-6 +-5 +0 +-1 +7 +-3 +-3 +-3 +-1 +-3 +1 +-2 +-4 +1 +4 +5 +-2 +9 +-2 +3 +5 +8 +-4 +-4 +-5 +1 +9 +-4 +-3 +-2 +7 +-2 +6 +13 +-1 +-4 +1 +-2 +-6 +19 +1 +6 +-1 +-5 +-2 +3 +10 +1 +-2 +-4 +-4 +-2 +6 +9 +2 +0 +-4 +-3 +0 +-3 +5 +-3 +-4 +2 +-3 +15 +0 +0 +-5 +-1 +0 +3 +-4 +-2 +-4 +4 +-6 +1 +-2 +4 +2 +6 +-1 +-2 +-4 +-1 +14 +5 +-5 +0 +-3 +-3 +12 +-25 +-49 +11 +-23 +-41 +17 +-19 +-39 +20 +-17 +-34 +22 +-14 +-32 +25 +-10 +-30 +37 +-1 +-24 +42 +2 +-25 +39 +-2 +-28 +24 +-9 +-31 +30 +-7 +-29 +28 +-11 +-28 +32 +-8 +-27 +32 +-6 +-27 +37 +-4 +-17 +45 +3 +-25 +26 +-9 +-29 +27 +-6 +-29 +34 +-1 +-18 +37 +-6 +-26 +30 +-9 +-25 +33 +-6 +-26 +28 +-2 +-17 +29 +-10 +-24 +29 +-2 +-25 +26 +-9 +-30 +29 +-9 +-17 +50 +3 +-25 +26 +-5 +-30 +31 +-9 +-31 +44 +1 +-25 +30 +-8 +-30 +26 +-7 +-30 +26 +-4 +-15 +43 +3 +-27 +24 +-15 +-26 +25 +-10 +-25 +36 +-5 +-26 +29 +1 +-26 +31 +-8 +-25 +43 +0 +-28 +30 +-10 +-29 +43 +0 +-28 +27 +-11 +-27 +26 +-9 +-26 +30 +-10 +-28 +28 +-8 +-30 +28 +-7 +-21 +26 +29 +28 +22 +19 +15 +13 +14 +16 +9 +3 +3 +11 +7 +19 +9 +5 +4 +3 +-1 +1 +4 +-4 +-2 +2 +5 +10 +8 +8 +-3 +1 +-6 +-2 +0 +-5 +0 +-1 +-4 +13 +-1 +3 +8 +-4 +5 +0 +2 +3 +-3 +-5 +0 +11 +12 +-5 +-3 +-5 +-4 +-6 +-3 +1 +6 +2 +-3 +2 +5 +5 +8 +-1 +3 +1 +-5 +-2 +-4 +-6 +3 +4 +-1 +9 +-3 +2 +-2 +1 +-2 +-4 +4 +-3 +-3 +5 +0 +1 +7 +-5 +11 +-2 +-2 +-3 +-5 +-2 +12 +1 +2 +1 +-2 +-7 +-4 +-4 +-1 +-3 +-3 +16 +1 +0 +12 +1 +2 +-6 +3 +-1 +-2 +4 +-2 +-5 +0 +1 +-1 +-4 +4 +0 +0 +25 +-15 +-44 +4 +-29 +-46 +15 +-16 +-25 +19 +-17 +-26 +37 +-4 +-31 +20 +-10 +-31 +24 +-13 +-30 +28 +-11 +-26 +27 +-10 +-30 +31 +0 +-25 +30 +-7 +-28 +33 +-4 +-27 +27 +-10 +-27 +28 +-4 +-25 +47 +3 +-25 +33 +-7 +-29 +33 +-6 +-30 +28 +-8 +-20 +27 +-2 +-23 +45 +0 +-23 +26 +-10 +-31 +26 +-5 +-22 +30 +-5 +-25 +31 +0 +-23 +27 +-10 +-18 +34 +-7 +-29 +29 +-8 +-23 +31 +2 +-23 +29 +-7 +-26 +40 +-3 +-25 +27 +-10 +-13 +31 +-8 +-29 +33 +-5 +-15 +28 +-11 +-31 +26 +-11 +-30 +35 +-6 +-20 +46 +4 +-24 +28 +-2 +-23 +24 +-10 +-18 +29 +-10 +-30 +30 +-9 +-16 +45 +0 +-24 +40 +-2 +-30 +26 +-10 +-32 +30 +-9 +-23 +26 +-12 +-23 +26 +-5 +-21 +26 +-11 +-28 +32 +32 +22 +18 +18 +13 +12 +11 +17 +9 +5 +8 +18 +15 +1 +1 +0 +5 +2 +2 +12 +12 +-2 +-3 +1 +-1 +-1 +2 +16 +0 +2 +-3 +-5 +5 +-5 +0 +-3 +-2 +-1 +-3 +0 +-4 +-3 +-1 +1 +-1 +0 +-3 +0 +0 +8 +7 +-2 +15 +18 +-1 +-1 +-3 +-5 +-1 +-2 +4 +1 +-4 +1 +4 +6 +6 +1 +0 +-4 +4 +-6 +-5 +4 +0 +-5 +-4 +5 +9 +-5 +-5 +-4 +3 +4 +0 +-1 +2 +-4 +2 +0 +10 +0 +3 +-5 +-3 +12 +6 +-5 +-3 +16 +-1 +-1 +1 +0 +-3 +-6 +1 +-5 +3 +-4 +3 +-1 +-1 +2 +9 +3 +10 +0 +-2 +-6 +-1 +0 +-1 +-4 +2 +-6 +-1 +-33 +13 +-25 +-42 +9 +-25 +-43 +20 +-11 +-34 +24 +-14 +-34 +21 +-13 +-19 +27 +-11 +-24 +28 +-10 +-29 +26 +-11 +-29 +33 +-7 +-27 +31 +-5 +-26 +30 +-8 +-26 +30 +-6 +-25 +42 +-1 +-18 +30 +-7 +-26 +31 +0 +-21 +26 +-10 +-24 +31 +-9 +-28 +29 +-8 +-27 +34 +-6 +-24 +30 +-1 +-24 +34 +-6 +-22 +46 +3 +-26 +28 +-11 +-22 +30 +-7 +-30 +28 +-7 +-26 +29 +4 +-23 +30 +-9 +-27 +30 +-7 +-28 +37 +2 +-22 +36 +-2 +-23 +27 +-12 +-31 +27 +-9 +-27 +28 +-9 +-27 +32 +1 +-24 +33 +-5 +-20 +29 +-9 +-24 +40 +0 +-18 +29 +-10 +-29 +30 +-5 +-16 +29 +-9 +-30 +26 +-10 +-25 +42 +-1 +-23 +31 +-9 +-25 +31 +-2 +-26 +33 +-7 +-19 +29 +-6 +-29 +33 +-6 +-18 +32 +-7 +14 +22 +19 +32 +32 +15 +20 +9 +6 +5 +23 +5 +1 +4 +20 +3 +1 +-5 +-3 +1 +-3 +6 +-2 +0 +2 +0 +1 +-1 +-2 +3 +-2 +-2 +10 +6 +-4 +-2 +-1 +-2 +6 +0 +-1 +13 +2 +-4 +0 +-1 +0 +0 +8 +-1 +-4 +3 +-4 +-5 +1 +13 +9 +10 +10 +-4 +-2 +0 +7 +7 +-6 +-4 +-4 +-5 +-3 +-3 +-3 +-5 +16 +1 +0 +9 +1 +11 +5 +-6 +-1 +11 +-5 +-4 +5 +-6 +-7 +-3 +-1 +-5 +1 +-3 +0 +10 +6 +6 +-4 +-6 +-6 +1 +0 +-1 +-4 +-4 +0 +-3 +-2 +2 +2 +-3 +1 +-3 +3 +-2 +0 +-2 +13 +3 +1 +-4 +6 +3 +10 +4 +-6 +-5 +-6 +-2 +11 +-26 +-48 +21 +-16 +-41 +10 +-17 +-31 +32 +-9 +-33 +18 +-17 +-32 +22 +-14 +-30 +28 +-11 +-31 +29 +-9 +-30 +29 +-7 +-24 +32 +-8 +-19 +30 +-7 +-15 +50 +4 +-24 +23 +-13 +-32 +42 +1 +-27 +25 +-11 +-32 +27 +-11 +-28 +33 +-5 +-29 +39 +-3 +-23 +37 +-4 +-29 +31 +-6 +-25 +44 +1 +-21 +25 +-9 +-27 +30 +-5 +-30 +27 +-11 +-26 +34 +3 +-19 +37 +-4 +-24 +23 +-11 +-22 +39 +-3 +-22 +26 +-3 +-26 +25 +-12 +-25 +34 +-3 +-29 +41 +-2 +-27 +24 +-11 +-30 +29 +-6 +-28 +36 +-4 +-27 +30 +-8 +-21 +27 +-9 +-27 +41 +0 +-24 +29 +-6 +-28 +29 +-6 +-28 +30 +-8 +-19 +31 +-9 +-27 +30 +-5 +-26 +36 +-4 +-26 +31 +-4 +-13 +31 +-5 +-28 +39 +-2 +-24 +25 +-9 +-27 +21 +29 +24 +22 +19 +18 +19 +11 +27 +11 +7 +2 +2 +2 +2 +2 +1 +6 +-1 +9 +11 +1 +12 +9 +3 +3 +-2 +-2 +-3 +-4 +9 +-2 +-4 +-4 +15 +4 +-4 +11 +11 +-3 +-7 +-1 +-3 +1 +3 +12 +1 +0 +-4 +-4 +-5 +2 +-5 +-2 +-3 +17 +0 +5 +-2 +-5 +-4 +1 +4 +12 +-2 +-5 +-4 +-4 +6 +5 +11 +-2 +-3 +-8 +2 +-4 +-4 +0 +-3 +17 +1 +-3 +-2 +3 +1 +2 +-2 +-1 +-2 +3 +1 +11 +1 +-3 +0 +-3 +11 +-2 +-7 +1 +0 +-3 +-1 +14 +0 +-2 +-5 +-4 +-3 +2 +7 +3 +-2 +-1 +-4 +-2 +-3 +0 +3 +5 +-4 +-1 +-2 +-4 +8 +6 +3 +2 +16 +-22 +-45 +11 +-24 +-45 +14 +-22 +-39 +15 +-13 +-32 +28 +-11 +-33 +24 +-11 +-30 +28 +-8 +-28 +28 +-9 +-19 +27 +0 +-26 +29 +-1 +-11 +40 +-2 +-29 +32 +-9 +-21 +37 +-5 +-29 +26 +-12 +-28 +29 +-6 +-29 +31 +-7 +-24 +43 +4 +-26 +27 +-5 +-14 +27 +-10 +-32 +36 +0 +-25 +31 +-9 +-28 +39 +-2 +-26 +25 +-12 +-29 +26 +-11 +-24 +44 +2 +-22 +27 +-12 +-30 +29 +-9 +-29 +32 +-7 +-25 +28 +-9 +-29 +32 +-6 +-18 +34 +-3 +-27 +41 +2 +-24 +31 +-8 +-28 +27 +-10 +-29 +33 +-7 +-26 +34 +1 +-13 +33 +-7 +-26 +32 +-8 +-30 +26 +-9 +-29 +27 +-5 +-27 +34 +-3 +-23 +28 +-9 +-17 +33 +-5 +-18 +32 +-3 +-25 +27 +-12 +-30 +29 +-9 +-24 +31 +-7 +-20 +29 +-9 +-28 +24 +24 +25 +22 +17 +23 +21 +19 +7 +9 +6 +16 +4 +16 +11 +3 +1 +-1 +6 +8 +-2 +0 +5 +14 +0 +12 +12 +0 +0 +-5 +-5 +-5 +2 +-1 +3 +8 +-2 +-6 +-5 +-2 +-1 +-6 +-6 +-2 +0 +-2 +-2 +2 +6 +3 +5 +2 +5 +-2 +8 +4 +10 +15 +-1 +-6 +-5 +4 +-6 +1 +4 +6 +-3 +2 +-2 +4 +-2 +3 +-2 +4 +-5 +-7 +-1 +-1 +-1 +1 +3 +-5 +-1 +-3 +3 +-2 +-2 +4 +6 +1 +10 +-1 +15 +1 +-6 +6 +5 +-5 +0 +-5 +-5 +-1 +-7 +-3 +1 +1 +9 +0 +2 +12 +18 +-1 +-6 +0 +-7 +1 +-5 +-4 +-5 +11 +8 +2 +-5 +2 +9 +-2 +-2 +-6 +7 +-28 +-50 +12 +-24 +-44 +9 +-24 +-38 +22 +-16 +-31 +38 +-3 +-27 +23 +-13 +-33 +27 +-9 +-21 +29 +0 +-26 +22 +-11 +-32 +27 +-9 +-28 +30 +-6 +-12 +31 +-8 +-29 +26 +-7 +-24 +38 +-4 +-28 +32 +-6 +-15 +29 +-9 +-30 +31 +-3 +-26 +43 +1 +-24 +27 +-11 +-30 +29 +-11 +-29 +36 +-4 +-26 +29 +0 +-25 +36 +-5 +-24 +30 +-9 +-22 +36 +-3 +-23 +27 +-9 +-26 +29 +-9 +-30 +28 +-10 +-27 +37 +0 +-24 +32 +-7 +-19 +32 +-7 +-27 +32 +-5 +-24 +33 +-6 +-20 +38 +-4 +-28 +48 +3 +-23 +43 +-1 +-27 +34 +-7 +-27 +27 +-12 +-33 +27 +-10 +-32 +34 +-7 +-22 +26 +-12 +-27 +31 +-7 +-21 +29 +-5 +-29 +45 +1 +-26 +34 +-4 +-29 +29 +-10 +-25 +35 +-3 +-26 +26 +-11 +-29 +18 +33 +27 +25 +28 +14 +20 +15 +11 +9 +2 +3 +9 +14 +0 +12 +12 +-2 +-1 +1 +10 +5 +2 +-3 +-7 +-6 +16 +2 +1 +-2 +-4 +1 +-4 +-4 +-3 +4 +-2 +1 +-2 +-1 +4 +12 +17 +14 +12 +10 +-6 +2 +-3 +-8 +-3 +-8 +-5 +-4 +-3 +-3 +-3 +-4 +3 +5 +-4 +11 +2 +-2 +-3 +-1 +-1 +-5 +-4 +9 +-2 +-5 +13 +-1 +3 +0 +10 +4 +1 +-6 +-5 +-3 +-1 +-3 +-1 +0 +2 +1 +-3 +7 +-1 +2 +-1 +-3 +5 +-1 +6 +8 +0 +-4 +-5 +-1 +5 +9 +4 +5 +0 +13 +-2 +-3 +-3 +-3 +-1 +-6 +-2 +0 +-5 +8 +-5 +4 +-4 +-3 +13 +-3 +-4 +3 +-1 +0 +-34 +15 +-24 +-45 +7 +-27 +-33 +22 +-17 +-39 +16 +-14 +-35 +23 +-7 +-23 +36 +-3 +-27 +27 +-12 +-14 +28 +-11 +-32 +34 +-6 +-30 +27 +-9 +-29 +28 +-1 +-13 +28 +-9 +-19 +33 +-8 +-27 +24 +-7 +-28 +30 +-2 +-25 +28 +-7 +-24 +30 +-7 +-25 +45 +3 +-14 +37 +-3 +-26 +30 +-9 +-31 +43 +-1 +-28 +29 +-9 +-26 +32 +-9 +-27 +38 +-3 +-23 +28 +-9 +-28 +26 +-12 +-28 +42 +-2 +-24 +41 +-1 +-29 +29 +-7 +-16 +43 +-1 +-29 +38 +-3 +-30 +24 +-13 +-29 +33 +-7 +-30 +32 +-6 +-26 +30 +-2 +-13 +41 +-2 +-30 +26 +-10 +-29 +26 +-12 +-31 +29 +-9 +-25 +26 +-7 +-28 +28 +-10 +-23 +32 +-6 +-28 +30 +-8 +-25 +30 +-5 +-27 +31 +-4 +-20 +36 +-3 +-27 +46 +2 +-23 +32 +-5 +12 +25 +32 +21 +17 +13 +10 +15 +6 +4 +9 +11 +4 +8 +3 +3 +16 +2 +5 +8 +-4 +-2 +-2 +1 +-2 +-3 +0 +5 +3 +2 +6 +8 +0 +-4 +-4 +2 +13 +13 +-3 +-5 +-4 +10 +-3 +5 +-1 +1 +-4 +9 +5 +-3 +-7 +-6 +-7 +1 +-2 +-1 +4 +-2 +7 +-2 +-1 +0 +11 +6 +-1 +-4 +-3 +0 +-5 +-4 +1 +18 +0 +-3 +-4 +11 +9 +5 +1 +-4 +10 +0 +-7 +1 +4 +8 +-3 +-6 +8 +-4 +-9 +-7 +5 +-3 +0 +-2 +-5 +-3 +1 +-1 +0 +0 +-2 +3 +2 +15 +15 +-1 +-5 +13 +-3 +-2 +-5 +-6 +-5 +-5 +2 +-4 +-1 +-3 +-3 +14 +-1 +1 +-2 +3 +2 +-3 +21 +-18 +-39 +6 +-28 +-44 +11 +-21 +-39 +16 +-10 +-33 +25 +-3 +-30 +27 +-11 +-31 +42 +0 +-28 +26 +-1 +-27 +26 +-10 +-31 +27 +-11 +-30 +44 +6 +-13 +37 +-5 +-24 +30 +-8 +-26 +42 +-2 +-28 +28 +-10 +-33 +28 +-11 +-18 +26 +-12 +-32 +28 +-8 +-28 +26 +-8 +-27 +30 +1 +-22 +38 +-4 +-28 +30 +-9 +-26 +42 +6 +-22 +44 +0 +-23 +27 +-10 +-31 +31 +-9 +-27 +28 +-9 +-29 +42 +-1 +-25 +44 +1 +-25 +23 +-15 +-28 +44 +0 +-28 +26 +-12 +-27 +35 +0 +-16 +27 +-12 +-32 +36 +-3 +-26 +28 +-9 +-25 +28 +-9 +-24 +41 +0 +-25 +29 +-10 +-14 +33 +-9 +-27 +26 +-12 +-32 +37 +-4 +-23 +26 +-6 +-27 +34 +-6 +-19 +27 +-5 +-27 +28 +-9 +-26 +28 +-9 +-27 +30 +-9 +-24 +40 +-2 +-26 +31 +-6 +-16 +40 +-2 +-23 +37 +-5 +-29 +26 +-10 +-31 +30 +-10 +-24 +30 +-8 +-15 +46 +3 +-26 +27 +1 +-26 +25 +-9 +-29 +23 +-10 +-27 +35 +-2 +-24 +28 +-6 +-23 +32 +-4 +-23 +28 +-7 +-24 +42 +0 +-24 +29 +-8 +-23 +31 +-10 +-28 +27 +-8 +-22 +35 +-6 +-29 +39 +-3 +-24 +43 +-1 +-28 +28 +-9 +-32 +27 +-11 +-26 +27 +-8 +-27 +37 +-2 +-25 +34 +-6 +-28 +29 +-9 +-28 +30 +-6 +-19 +34 +-7 +-27 +34 +-6 +-27 +35 +-5 +-24 +30 +-9 +-23 +29 +-10 +-21 +27 +-8 +-28 +40 +-1 +-25 +30 +-6 +-25 +31 +-7 +-25 +36 +-2 +-25 +29 +-7 +-20 +30 +-4 +-28 +28 +-11 +-27 +33 +-6 +-26 +30 +-8 +-22 +35 +-6 +-26 +31 +-6 +-25 +30 +-9 +-24 +38 +-3 +-25 +19 +28 +26 +24 +17 +13 +19 +10 +9 +10 +13 +10 +4 +10 +16 +11 +1 +2 +6 +-3 +-4 +-1 +6 +5 +-2 +0 +3 +1 +4 +-1 +-1 +11 +1 +-2 +-1 +1 +-4 +8 +2 +-4 +-4 +0 +0 +-2 +0 +3 +-2 +1 +5 +6 +-2 +-1 +14 +4 +-5 +-4 +4 +6 +-1 +-1 +-3 +-2 +13 +3 +-5 +-5 +-4 +-2 +-2 +-4 +-4 +15 +0 +0 +5 +1 +-2 +7 +-3 +3 +-1 +2 +-2 +3 +-2 +0 +7 +3 +-4 +-4 +1 +-4 +0 +-4 +-3 +1 +-1 +3 +7 +17 +15 +-1 +-5 +-7 +-7 +-3 +10 +1 +0 +-3 +-2 +3 +1 +-3 +-4 +7 +4 +-3 +-3 +-1 +12 +1 +-4 +-1 +-2 +-3 +0 +5 +21 +-19 +-45 +5 +-30 +-46 +17 +-17 +-38 +21 +-15 +-33 +23 +-9 +-31 +38 +-5 +-27 +28 +-11 +-27 +26 +-11 +-30 +35 +-6 +-28 +29 +-10 +-25 +44 +1 +-27 +28 +-10 +-29 +28 +-9 +-23 +31 +-8 +-29 +36 +-1 +-24 +36 +-5 +-21 +28 +-11 +-27 +27 +-10 +-28 +45 +2 +-23 +28 +-2 +-26 +26 +-9 +-29 +30 +-8 +-26 +30 +-4 +-26 +33 +-7 +-17 +32 +-7 +-26 +32 +-6 +-27 +29 +-1 +-24 +29 +-9 +-25 +35 +-5 +-27 +32 +-3 +-21 +33 +-5 +-28 +36 +-4 +-24 +29 +-6 +-25 +33 +-6 +-27 +41 +-1 +-26 +32 +-7 +-27 +28 +-4 +-20 +37 +-5 +-25 +35 +-1 +-24 +26 +-12 +-23 +28 +-8 +-29 +32 +-7 +-27 +29 +-2 +-27 +33 +3 +-22 +29 +-8 +-21 +28 +-11 +-30 +28 +-9 +-19 +36 +2 +-24 +21 +22 +20 +27 +34 +24 +10 +13 +6 +9 +5 +5 +6 +5 +1 +14 +4 +0 +-1 +4 +7 +6 +2 +-2 +-2 +14 +8 +2 +-1 +-2 +-4 +-2 +11 +4 +-4 +-5 +-4 +2 +-3 +7 +-4 +-4 +2 +1 +-4 +-3 +2 +5 +-4 +-2 +11 +9 +-3 +3 +-5 +-2 +-5 +-1 +-4 +-1 +-1 +2 +0 +1 +0 +4 +-1 +-1 +-2 +2 +12 +15 +9 +7 +-3 +10 +-1 +5 +-3 +-3 +-10 +3 +-3 +5 +10 +1 +-6 +-5 +12 +2 +-1 +-8 +-6 +-2 +-5 +-1 +11 +8 +16 +-1 +-3 +-8 +-4 +12 +-4 +-3 +-5 +-2 +-2 +-3 +-6 +-1 +4 +12 +10 +-5 +-5 +-4 +-4 +0 +0 +1 +-6 +3 +14 +15 +0 +7 +-29 +8 +-27 +-49 +3 +-18 +-41 +19 +-15 +-37 +19 +-16 +-26 +30 +-10 +-31 +26 +-3 +-29 +32 +-9 +-31 +30 +-10 +-32 +22 +-14 +-30 +28 +-9 +-25 +37 +-4 +-26 +30 +-5 +-28 +34 +-6 +-28 +28 +-7 +-28 +30 +-3 +-26 +30 +-7 +-27 +30 +-8 +-25 +30 +-2 +-22 +31 +-6 +-17 +29 +-9 +-25 +32 +-4 +-26 +32 +-4 +-10 +32 +-8 +-28 +36 +-4 +-27 +37 +-5 +-27 +31 +-8 +-26 +32 +-5 +-27 +36 +-5 +-16 +42 +1 +-25 +41 +1 +-17 +36 +-6 +-18 +36 +-6 +-32 +23 +-8 +-27 +27 +-11 +-32 +35 +-7 +-27 +39 +-3 +-28 +31 +-9 +-32 +27 +-10 +-32 +28 +3 +-23 +29 +-5 +-29 +41 +4 +-20 +27 +-11 +-25 +26 +-11 +-26 +39 +-3 +-26 +29 +-6 +-26 +36 +-2 +-15 +38 +-4 +-25 +31 +-5 +8 +18 +16 +19 +13 +12 +9 +23 +19 +4 +15 +2 +5 +-2 +-2 +17 +9 +-2 +4 +-1 +-6 +2 +1 +0 +0 +-2 +1 +9 +1 +-3 +-2 +9 +1 +6 +-3 +-1 +-3 +-2 +12 +-1 +2 +0 +-4 +1 +2 +0 +5 +12 +7 +-4 +-4 +-4 +-1 +0 +-2 +3 +7 +-4 +-1 +-2 +13 +9 +4 +1 +-3 +-3 +-6 +-4 +1 +11 +-4 +-5 +-3 +-4 +-5 +15 +1 +1 +1 +-7 +-3 +3 +-3 +4 +1 +1 +-6 +10 +2 +2 +-1 +11 +3 +5 +18 +-1 +-2 +-4 +-1 +-6 +8 +-5 +-8 +-5 +6 +5 +-6 +-5 +-4 +11 +-3 +-5 +-3 +5 +-2 +3 +-6 +11 +-2 +-4 +-4 +0 +0 +14 +-2 +6 +2 +3 +-3 +5 +-2 +0 +1 +3 +4 +-4 +15 +-1 +-5 +-7 +-3 +4 +-4 +12 +9 +-5 +-7 +-5 +-6 +-3 +11 +-3 +-3 +-1 +10 +-2 +-3 +-4 +-3 +1 +9 +-4 +-3 +6 +-4 +4 +0 +-3 +0 +4 +-4 +3 +4 +-1 +1 +-3 +1 +2 +-3 +-1 +2 +-1 +2 +5 +-1 +1 +1 +11 +5 +-3 +0 +-1 +0 +-1 +0 +-3 +-4 +-2 +-2 +5 +0 +13 +3 +13 +-3 +-3 +-4 +-3 +-4 +-5 +-1 +-2 +5 +16 +-2 +-4 +-6 +-2 +-4 +2 +-1 +5 +-2 +-2 +2 +-3 +12 +2 +4 +1 +0 +-3 +3 +-3 +-2 +9 +-3 +0 +3 +1 +12 +12 +9 +-3 +-4 +-4 +-3 +-5 +-4 +0 +-5 +-4 +0 +-3 +0 +14 +12 +-25 +-48 +12 +-24 +-44 +24 +-12 +-38 +17 +-17 +-37 +22 +-14 +-31 +23 +-12 +-25 +33 +-7 +-27 +36 +-4 +-26 +29 +-6 +-30 +33 +-5 +-25 +27 +-11 +-29 +27 +-11 +-16 +36 +-1 +-21 +43 +-1 +-28 +35 +-6 +-21 +33 +-7 +-29 +24 +-4 +-29 +35 +-7 +-28 +29 +-8 +-23 +26 +-12 +-28 +37 +-3 +-26 +32 +-6 +-16 +46 +2 +-18 +29 +-7 +-31 +27 +-10 +-26 +32 +-8 +-29 +37 +-4 +-26 +26 +-10 +-30 +29 +-8 +-20 +35 +-5 +-27 +27 +-5 +-27 +33 +-6 +-27 +30 +-8 +-29 +28 +-8 +-25 +46 +4 +-16 +45 +2 +-24 +36 +-5 +-30 +26 +-11 +-21 +25 +-8 +-28 +29 +-8 +-28 +37 +-3 +-29 +30 +-7 +-17 +30 +-8 +-24 +27 +-10 +-30 +31 +-5 +-29 +30 +-7 +-28 +31 +-8 +-23 +27 +-7 +-27 +25 +27 +25 +21 +21 +13 +17 +26 +12 +11 +26 +8 +8 +5 +10 +4 +-3 +-2 +4 +3 +0 +-1 +-4 +17 +3 +2 +7 +14 +6 +-6 +-6 +4 +6 +3 +0 +-5 +9 +-4 +0 +-2 +-2 +2 +7 +-3 +-5 +1 +4 +10 +5 +-5 +-5 +-5 +-4 +-3 +9 +-3 +-4 +1 +-2 +-4 +-5 +-3 +5 +-3 +-1 +0 +11 +0 +-2 +4 +1 +16 +2 +-5 +-4 +-2 +6 +8 +1 +6 +-4 +-8 +-8 +12 +-1 +-6 +-8 +4 +9 +0 +-2 +1 +-6 +-2 +-4 +-3 +-4 +-2 +-4 +4 +11 +1 +2 +15 +2 +4 +-4 +1 +-5 +-5 +-5 +-2 +1 +10 +8 +6 +-1 +1 +11 +13 +1 +4 +2 +-4 +-4 +-2 +-6 +-8 +6 +-25 +-44 +20 +-20 +-43 +14 +-22 +-42 +19 +-13 +-35 +31 +-9 +-32 +22 +-5 +-29 +28 +-11 +-21 +35 +-7 +-31 +27 +-10 +-25 +27 +-11 +-30 +28 +-8 +-26 +27 +-11 +-28 +35 +-5 +-27 +30 +1 +-20 +27 +-9 +-22 +37 +-4 +-25 +32 +-7 +-16 +40 +-3 +-27 +38 +-2 +-29 +27 +-10 +-25 +25 +-4 +-19 +42 +0 +-22 +48 +3 +-25 +23 +-15 +-25 +28 +1 +-27 +30 +-8 +-23 +27 +-12 +-25 +25 +-13 +-32 +38 +-3 +-20 +26 +-10 +-31 +28 +-7 +-30 +34 +-4 +-22 +28 +-8 +-29 +37 +0 +-25 +29 +1 +-21 +28 +-10 +-28 +32 +-7 +-27 +31 +-2 +-24 +28 +-9 +-24 +35 +-5 +-26 +30 +-7 +-28 +33 +-7 +-27 +30 +-6 +-18 +43 +-1 +-23 +40 +0 +-25 +33 +-7 +-19 +29 +-5 +-27 +29 +-10 +-30 +34 +-2 +-27 +30 +-9 +-25 +25 +-7 +-29 +33 +-7 +-21 +31 +-8 +-29 +31 +-7 +-18 +32 +-8 +-29 +29 +-8 +-24 +34 +-4 +-27 +30 +-9 +-25 +46 +2 +-16 +28 +-8 +-26 +25 +-9 +-13 +34 +-7 +-27 +26 +-7 +-28 +40 +4 +-14 +37 +-3 +-17 +29 +-11 +-32 +26 +-11 +-26 +37 +-5 +-26 +29 +-5 +-29 +25 +-11 +-30 +28 +-5 +-21 +30 +-9 +-28 +39 +-1 +-27 +28 +-8 +-17 +48 +4 +-26 +30 +-8 +-30 +28 +-7 +-21 +31 +-9 +-27 +33 +-7 +-29 +29 +-8 +-23 +41 +5 +-23 +26 +-13 +-17 +28 +-11 +-30 +30 +-4 +-17 +27 +-10 +-29 +35 +1 +-18 +31 +-6 +-22 +27 +-8 +-27 +32 +-2 +-25 +42 +-1 +-27 +43 +-1 +-26 +29 +-11 +-26 +23 +-11 +-29 +35 +-5 +-28 +30 +-7 +-25 +26 +-10 +-30 +17 +24 +29 +23 +35 +16 +11 +9 +15 +8 +11 +9 +3 +11 +4 +15 +4 +2 +-2 +-1 +-2 +-2 +-4 +5 +-3 +9 +0 +-2 +-2 +0 +-2 +0 +0 +19 +3 +0 +-3 +-1 +0 +6 +-4 +1 +15 +2 +2 +-3 +-1 +-3 +10 +-3 +-2 +-3 +2 +0 +7 +6 +2 +6 +0 +-5 +-7 +-2 +-1 +17 +1 +0 +12 +9 +-5 +-5 +-6 +-2 +-6 +-3 +-4 +-3 +0 +-3 +8 +10 +-3 +3 +-2 +4 +-4 +-4 +-4 +6 +3 +0 +1 +-1 +-1 +1 +1 +-3 +1 +-2 +4 +-3 +1 +3 +-2 +16 +13 +-3 +-2 +-4 +-2 +0 +14 +0 +-4 +-3 +-2 +-8 +-1 +0 +-4 +4 +-4 +-2 +-4 +1 +2 +6 +0 +0 +1 +-2 +7 +5 +3 +10 +-2 +-4 +4 +-3 +0 +1 +5 +-2 +11 +4 +-3 +-1 +-7 +14 +1 +11 +4 +9 +2 +-7 +-2 +-5 +3 +-1 +-1 +-8 +-2 +-3 +-6 +0 +-4 +-3 +2 +-5 +6 +2 +-2 +1 +-2 +3 +-3 +-3 +0 +13 +2 +-2 +4 +-3 +10 +3 +9 +-3 +7 +14 +13 +14 +-5 +-10 +-6 +-8 +-6 +4 +-6 +-9 +-8 +-1 +7 +1 +2 +6 +6 +5 +10 +-3 +-2 +4 +-7 +-5 +0 +1 +-3 +2 +-1 +-1 +-1 +1 +6 +8 +0 +-4 +5 +8 +-1 +-4 +10 +-3 +0 +-4 +-6 +4 +-2 +-5 +-4 +11 +3 +9 +-3 +-3 +-1 +-5 +-6 +-4 +-1 +1 +10 +-3 +-4 +-2 +5 +-4 +0 +1 +-32 +14 +-23 +-42 +9 +-23 +-38 +14 +-21 +-30 +21 +-7 +-31 +30 +-7 +-31 +34 +-7 +-27 +31 +-7 +-29 +26 +-9 +-25 +27 +-10 +-29 +36 +1 +-26 +36 +-6 +-27 +34 +-5 +-30 +35 +-4 +-29 +32 +-5 +-27 +29 +-10 +-27 +26 +-11 +-28 +30 +-7 +-27 +29 +-8 +-23 +36 +-5 +-27 +32 +-6 +-16 +31 +-8 +-28 +29 +-8 +-25 +31 +-7 +-23 +28 +-7 +-25 +41 +4 +-22 +28 +-8 +-29 +30 +-6 +-19 +35 +4 +-23 +30 +-8 +-28 +33 +-6 +-24 +39 +-3 +-23 +32 +-7 +-25 +44 +1 +-17 +25 +-11 +-29 +33 +-6 +-29 +30 +-8 +-26 +27 +-8 +-22 +27 +-9 +-24 +40 +-1 +-24 +49 +4 +-24 +23 +-13 +-20 +49 +4 +-27 +27 +-11 +-20 +32 +-8 +-28 +22 +-15 +-20 +28 +-9 +-31 +27 +-11 +-30 +33 +-5 +20 +24 +19 +17 +20 +13 +11 +14 +6 +8 +4 +23 +8 +17 +2 +5 +-1 +8 +0 +13 +2 +-1 +14 +1 +3 +-1 +16 +0 +-4 +2 +-2 +3 +-5 +-2 +12 +3 +3 +13 +1 +9 +-3 +-7 +-11 +-4 +-7 +-6 +2 +0 +10 +-2 +-5 +-3 +6 +-5 +-1 +-1 +-2 +-4 +-2 +7 +5 +5 +-2 +-2 +-5 +2 +-5 +13 +1 +-2 +6 +-4 +9 +1 +-6 +-1 +-5 +1 +0 +-3 +0 +0 +7 +1 +5 +6 +-3 +2 +-4 +-4 +-1 +-2 +6 +1 +2 +-3 +-5 +4 +-1 +-4 +6 +-2 +-1 +-2 +-1 +-1 +2 +5 +0 +-2 +4 +3 +14 +4 +1 +2 +-5 +-4 +-5 +-1 +7 +-2 +-2 +4 +3 +-1 +0 +1 +-31 +14 +-23 +-33 +11 +-24 +-43 +24 +-16 +-37 +21 +-13 +-36 +25 +-11 +-29 +45 +1 +-27 +28 +-11 +-32 +23 +-13 +-22 +24 +-12 +-30 +37 +-1 +-26 +28 +-8 +-29 +26 +-5 +-27 +32 +-1 +-26 +29 +-8 +-26 +52 +6 +-18 +27 +-10 +-30 +33 +-8 +-17 +30 +-9 +-31 +26 +-9 +-29 +37 +-4 +-27 +41 +-2 +-19 +36 +-5 +-19 +26 +-12 +-32 +27 +-8 +-18 +32 +-9 +-21 +27 +-9 +-27 +27 +-5 +-19 +30 +-7 +-26 +37 +-5 +-28 +26 +-10 +-27 +27 +-8 +-23 +31 +-8 +-17 +43 +0 +-23 +40 +4 +-23 +35 +-7 +-29 +37 +-2 +-29 +29 +-10 +-23 +28 +-10 +-32 +27 +-10 +-30 +28 +-10 +-22 +31 +-8 +-26 +34 +-6 +-25 +45 +3 +-20 +30 +-5 +-23 +35 +-7 +-21 +29 +-7 +-29 +25 +-10 +-30 +29 +-8 +-27 +29 +-9 +-28 +29 +-7 +-26 +31 +-5 +-26 +32 +-6 +-26 +32 +-7 +-25 +30 +-5 +-22 +32 +-4 +-25 +34 +-5 +-25 +38 +-4 +-19 +44 +1 +-25 +33 +-8 +-26 +32 +-1 +-18 +41 +-3 +-25 +24 +-13 +-24 +30 +-6 +-29 +28 +-6 +-30 +29 +-1 +-27 +41 +-1 +-19 +30 +-10 +-30 +25 +-12 +-18 +43 +6 +-24 +35 +-4 +-30 +24 +-13 +-31 +26 +-7 +-28 +27 +-8 +-29 +30 +-6 +-25 +50 +4 +-23 +26 +-11 +-29 +27 +-10 +-23 +43 +0 +-27 +29 +-9 +-29 +32 +-5 +-23 +29 +-4 +-25 +35 +-5 +-19 +42 +-1 +-14 +28 +-10 +-23 +32 +-9 +-30 +26 +-10 +-19 +44 +-1 +-23 +25 +-11 +-17 +42 +-1 +-28 +22 +-13 +-27 +32 +-9 +-29 +25 +-8 +-30 +31 +-7 +-28 +27 +-10 +-24 +36 +-5 +-12 +33 +-5 +13 +22 +32 +17 +14 +13 +11 +12 +7 +11 +21 +6 +1 +1 +15 +11 +3 +1 +13 +6 +13 +5 +-6 +0 +3 +-8 +0 +9 +6 +8 +14 +-2 +-5 +7 +-4 +-7 +-8 +-7 +-3 +-5 +-1 +8 +7 +6 +14 +-3 +-1 +0 +-8 +-7 +2 +6 +1 +-6 +0 +-5 +-1 +-3 +2 +1 +-5 +3 +12 +-1 +7 +2 +5 +-6 +-2 +0 +-3 +9 +5 +-6 +-5 +0 +9 +6 +2 +-1 +-6 +-2 +-4 +-6 +-5 +0 +-5 +-4 +-4 +2 +1 +3 +12 +0 +-2 +-5 +10 +5 +-4 +-3 +2 +7 +0 +-3 +-1 +-3 +3 +10 +12 +15 +13 +1 +-8 +-10 +-10 +0 +-7 +-5 +-2 +-2 +-2 +-1 +11 +4 +-4 +-3 +0 +3 +-1 +4 +-3 +-3 +12 +3 +-3 +-3 +0 +-3 +-3 +8 +-4 +-1 +7 +1 +-1 +-4 +5 +9 +-3 +1 +10 +-2 +-2 +-2 +-4 +-3 +3 +-4 +-2 +2 +2 +3 +-2 +10 +8 +11 +-5 +-5 +-4 +-1 +1 +-4 +-6 +2 +1 +1 +-4 +2 +-3 +-3 +-4 +-2 +4 +-3 +2 +1 +0 +9 +-2 +-4 +-4 +2 +1 +16 +3 +-2 +-1 +1 +-3 +0 +-4 +-4 +15 +4 +-4 +0 +-3 +5 +-2 +0 +5 +-4 +5 +1 +3 +2 +2 +-4 +-2 +8 +-1 +-4 +-1 +-3 +-4 +3 +1 +2 +2 +4 +11 +5 +-4 +2 +0 +-3 +0 +1 +-2 +0 +4 +3 +4 +-5 +-4 +-3 +-3 +3 +10 +14 +1 +-1 +3 +-2 +-6 +-7 +15 +-22 +-47 +6 +-25 +-46 +10 +-21 +-40 +24 +-13 +-26 +22 +-14 +-28 +23 +-14 +-19 +47 +3 +-26 +29 +-7 +-26 +22 +-7 +-22 +25 +-12 +-28 +41 +-1 +-27 +31 +-4 +-29 +27 +-11 +-31 +37 +-5 +-28 +29 +0 +-25 +29 +-8 +-30 +25 +-11 +-27 +30 +-5 +-23 +37 +-1 +-23 +39 +-3 +-19 +30 +-4 +-11 +30 +-10 +-29 +28 +-6 +-27 +45 +0 +-9 +29 +-9 +-27 +22 +-10 +-28 +25 +-11 +-30 +40 +-2 +-27 +27 +-10 +-27 +45 +0 +-23 +29 +-5 +-30 +29 +-11 +-25 +35 +-6 +-26 +29 +-10 +-27 +29 +-5 +-25 +26 +-11 +-28 +30 +-5 +-23 +47 +2 +-25 +31 +-3 +-23 +27 +-9 +-23 +28 +-8 +-27 +30 +-7 +-29 +31 +-4 +-21 +42 +-1 +-25 +30 +3 +-22 +26 +-11 +-26 +31 +-8 +-28 +33 +-8 +-23 +36 +23 +24 +29 +22 +22 +11 +17 +8 +7 +0 +1 +7 +1 +4 +4 +18 +8 +11 +7 +-3 +-5 +-1 +2 +-2 +-1 +-3 +-1 +2 +1 +-2 +1 +-1 +14 +10 +-1 +-2 +10 +4 +-5 +-3 +1 +13 +10 +-4 +-3 +-6 +7 +-6 +-3 +2 +-5 +6 +0 +8 +-1 +-5 +-3 +0 +-2 +-4 +-3 +-3 +-3 +2 +1 +-1 +2 +0 +1 +-2 +-1 +3 +7 +-2 +3 +-1 +7 +1 +-2 +0 +1 +-1 +-5 +-2 +19 +2 +1 +-1 +3 +-3 +3 +5 +4 +-4 +-5 +-1 +-3 +-3 +0 +-2 +-4 +0 +-2 +1 +-1 +-2 +3 +-2 +9 +5 +1 +4 +-3 +-2 +7 +3 +4 +5 +3 +-1 +-2 +-4 +2 +2 +-1 +2 +-2 +8 +-27 +-48 +8 +-27 +-40 +29 +-12 +-34 +23 +-15 +-33 +19 +-16 +-32 +39 +-3 +-28 +24 +-12 +-30 +26 +-10 +-31 +34 +-2 +-18 +27 +-11 +-31 +25 +-11 +-29 +39 +-2 +-22 +32 +-6 +-28 +28 +-9 +-29 +45 +2 +-22 +34 +-5 +-21 +30 +-9 +-15 +28 +-6 +-21 +40 +-2 +-21 +23 +-10 +-31 +28 +-6 +-30 +28 +-9 +-27 +40 +-2 +-25 +30 +-8 +-25 +41 +0 +-25 +25 +-13 +-29 +31 +-7 +-24 +32 +-7 +-28 +28 +-9 +-19 +32 +-7 +-27 +27 +-9 +-24 +39 +2 +-24 +27 +-7 +-28 +31 +-4 +-13 +32 +-7 +-27 +28 +-5 +-27 +28 +-5 +-26 +29 +-9 +-24 +46 +2 +-24 +28 +-9 +-29 +36 +-4 +-27 +29 +-9 +-29 +32 +-6 +-25 +36 +0 +-17 +28 +-9 +-24 +33 +-7 +-15 +33 +-7 +-22 +26 +-1 +-26 +25 +19 +25 +19 +15 +14 +11 +17 +22 +24 +22 +5 +-1 +0 +6 +-1 +-2 +1 +1 +0 +1 +0 +3 +-1 +-1 +3 +-2 +6 +0 +-2 +-1 +0 +2 +2 +5 +0 +-2 +5 +-2 +-1 +-2 +-2 +1 +2 +-2 +6 +3 +0 +-2 +8 +1 +1 +7 +5 +-3 +1 +-1 +-3 +1 +-1 +-1 +-2 +-3 +-2 +-2 +3 +0 +8 +-1 +4 +11 +3 +-4 +-3 +3 +5 +0 +-3 +-1 +-3 +0 +5 +-3 +-2 +-2 +0 +-1 +0 +-3 +-1 +-3 +1 +1 +9 +3 +-1 +-1 +1 +3 +5 +-2 +9 +14 +12 +-2 +-2 +9 +1 +-5 +-6 +-4 +-5 +15 +0 +-5 +1 +-2 +-4 +-3 +4 +16 +1 +10 +8 +5 +-7 +-5 +-2 +-34 +6 +-22 +-45 +11 +-23 +-43 +18 +-18 +-23 +31 +-6 +-33 +17 +-18 +-36 +21 +-13 +-32 +29 +-10 +-29 +30 +-8 +-16 +29 +0 +-24 +37 +-4 +-28 +29 +-10 +-23 +30 +-9 +-28 +29 +-10 +-27 +30 +-7 +-28 +30 +-7 +-19 +32 +0 +-22 +28 +-10 +-24 +44 +5 +-19 +35 +-3 +-22 +34 +-7 +-19 +29 +-11 +-30 +27 +-8 +-30 +35 +-6 +-27 +27 +-9 +-29 +30 +-8 +-26 +37 +4 +-23 +28 +-10 +-20 +37 +-3 +-19 +34 +-7 +-24 +24 +-4 +-23 +38 +-4 +-28 +26 +-7 +-27 +26 +-2 +-17 +41 +-2 +-27 +29 +-9 +-23 +26 +-9 +-17 +42 +-2 +-26 +30 +-6 +-30 +25 +-13 +-30 +28 +-9 +-21 +35 +-6 +-21 +28 +-9 +-30 +27 +-10 +-10 +31 +-6 +-25 +28 +-7 +-23 +27 +-8 +-18 +30 +-8 +-28 +33 +2 +25 +26 +21 +14 +16 +21 +15 +10 +13 +7 +9 +9 +10 +2 +6 +16 +4 +0 +6 +1 +6 +2 +-2 +7 +-1 +-3 +-2 +-1 +3 +-6 +-1 +-1 +12 +15 +15 +-1 +-3 +-3 +-4 +-5 +9 +0 +-5 +-2 +-4 +-3 +-3 +-2 +-4 +13 +-2 +10 +7 +-2 +0 +-4 +-5 +-2 +13 +1 +-4 +-1 +-4 +0 +-1 +-3 +-5 +-2 +0 +5 +1 +15 +0 +-1 +-5 +-2 +2 +0 +-1 +-3 +0 +-1 +-2 +-1 +5 +8 +8 +-4 +-4 +5 +-2 +6 +-1 +-4 +-5 +6 +-3 +-3 +4 +11 +-4 +3 +-3 +2 +9 +2 +-4 +-3 +-2 +-2 +-4 +7 +-2 +-3 +-2 +11 +-2 +8 +2 +-1 +1 +-2 +-6 +-3 +0 +6 +2 +-3 +10 +-26 +-37 +15 +-23 +-41 +12 +-21 +-35 +17 +-18 +-31 +20 +-14 +-24 +23 +-12 +-29 +35 +3 +-25 +31 +-6 +-24 +33 +0 +-17 +26 +-13 +-29 +37 +-5 +-29 +29 +-2 +-26 +26 +-7 +-30 +31 +-8 +-28 +42 +0 +-14 +32 +-7 +-22 +27 +-10 +-17 +26 +-12 +-26 +43 +0 +-26 +37 +-5 +-26 +27 +-9 +-31 +31 +-9 +-29 +27 +-8 +-22 +32 +-7 +-19 +28 +-10 +-26 +27 +-9 +-22 +43 +1 +-25 +31 +-5 +-8 +30 +-6 +-31 +28 +-9 +-27 +25 +-12 +-24 +31 +-4 +-25 +32 +-4 +-24 +28 +-8 +-27 +44 +1 +-27 +31 +-8 +-25 +26 +-11 +-27 +25 +-11 +-29 +31 +-1 +-23 +34 +-7 +-25 +30 +-7 +-27 +46 +2 +-25 +33 +-4 +-27 +31 +-7 +-25 +37 +-2 +-26 +27 +-9 +-29 +30 +-8 +-28 +35 +-6 +-22 +21 +21 +24 +21 +17 +15 +13 +11 +11 +9 +7 +16 +5 +8 +5 +3 +6 +9 +3 +3 +-2 +0 +8 +0 +0 +5 +3 +20 +3 +-3 +3 +-2 +12 +3 +0 +1 +-4 +-4 +-5 +-1 +12 +-1 +1 +12 +-2 +8 +2 +1 +8 +1 +0 +-2 +-7 +-1 +-3 +-1 +3 +5 +7 +-3 +-4 +2 +0 +-1 +-2 +-5 +-6 +-5 +0 +4 +1 +-5 +-5 +7 +7 +-3 +4 +0 +11 +7 +-5 +0 +-5 +-4 +5 +-2 +-1 +-2 +-1 +0 +5 +3 +-2 +-1 +3 +4 +1 +-3 +-2 +-1 +-3 +12 +1 +5 +-4 +1 +2 +-1 +0 +17 +0 +-2 +5 +-1 +-5 +-6 +-1 +12 +15 +15 +-4 +-4 +-5 +9 +-3 +-6 +-7 +-2 +-35 +12 +-22 +-44 +7 +-26 +-41 +14 +-21 +-38 +35 +-4 +-31 +26 +-3 +-28 +23 +-14 +-32 +26 +-11 +-31 +37 +-4 +-16 +32 +-7 +-30 +37 +0 +-23 +41 +-2 +-27 +28 +-11 +-30 +25 +-8 +-23 +30 +-9 +-27 +29 +-11 +-29 +34 +-4 +-26 +29 +-3 +-15 +35 +0 +-23 +40 +-3 +-28 +27 +-8 +-31 +25 +-10 +-30 +27 +-8 +-28 +39 +-3 +-27 +42 +4 +-25 +30 +-7 +-21 +28 +-10 +-26 +30 +-9 +-22 +31 +-8 +-28 +48 +3 +-24 +35 +-6 +-30 +31 +-10 +-22 +27 +-9 +-29 +38 +-1 +-25 +35 +-6 +-28 +43 +-1 +-28 +27 +-9 +-31 +26 +-6 +-24 +29 +-8 +-24 +26 +-8 +-28 +33 +-6 +-27 +41 +-2 +-25 +37 +-3 +-28 +36 +0 +-26 +31 +3 +-25 +27 +-3 +-12 +37 +-3 +-28 +45 +0 +-28 +24 +-8 +-32 +23 +-11 +-30 +38 +1 +-25 +39 +-4 +-29 +40 +3 +-27 +25 +-13 +-19 +27 +-12 +-20 +25 +-11 +-27 +30 +-9 +-28 +37 +-6 +-27 +36 +5 +-25 +29 +-10 +-31 +31 +-7 +-25 +41 +0 +-28 +39 +-3 +-30 +33 +-9 +-24 +25 +-11 +-13 +29 +-10 +-30 +40 +-1 +-29 +25 +-11 +-22 +25 +-11 +-30 +41 +-1 +-26 +32 +1 +-26 +32 +-9 +-24 +30 +-9 +-31 +30 +-8 +-28 +30 +-7 +-28 +32 +-8 +-27 +28 +-9 +-28 +29 +-6 +-25 +41 +1 +-11 +33 +-8 +-24 +31 +-7 +-27 +28 +-7 +-28 +28 +-8 +-28 +31 +-7 +-20 +42 +1 +-24 +36 +-6 +-27 +28 +-9 +-29 +32 +-7 +-23 +30 +-8 +-19 +46 +1 +-25 +27 +-10 +-30 +35 +-6 +-22 +30 +-8 +-28 +27 +-9 +-24 +28 +-7 +-27 +31 +-5 +-27 +32 +-6 +13 +23 +22 +38 +19 +18 +11 +8 +24 +26 +6 +5 +1 +5 +5 +7 +-1 +3 +2 +11 +14 +6 +-1 +-3 +5 +8 +-3 +-5 +-4 +-3 +1 +-2 +4 +-3 +4 +8 +0 +-3 +-3 +-3 +-5 +8 +17 +-1 +-5 +-1 +-1 +3 +-4 +-7 +11 +7 +-6 +-4 +0 +5 +4 +-3 +0 +13 +-1 +2 +15 +13 +7 +6 +-9 +-4 +-8 +-8 +0 +-4 +-2 +-7 +-1 +7 +-3 +7 +-4 +-6 +1 +-3 +-1 +-3 +-3 +0 +-1 +-2 +13 +5 +4 +-2 +3 +7 +-5 +11 +-1 +2 +2 +-1 +-8 +-2 +-5 +-2 +-4 +6 +8 +-3 +-1 +4 +5 +-5 +3 +5 +-5 +-1 +10 +-4 +1 +5 +-1 +-2 +11 +-3 +1 +-1 +-2 +2 +-22 +6 +-28 +-41 +9 +-25 +-42 +19 +-15 +-27 +22 +-15 +-36 +37 +-4 +-29 +30 +-8 +-32 +27 +-12 +-32 +31 +-6 +-28 +26 +-12 +-30 +44 +1 +-22 +30 +-9 +-19 +27 +-5 +-28 +28 +-8 +-21 +41 +-1 +-27 +31 +-9 +-29 +31 +-6 +-29 +30 +-9 +-28 +29 +-9 +-20 +28 +-7 +-27 +31 +-7 +-28 +35 +-6 +-24 +29 +-9 +-29 +30 +-4 +-26 +30 +-7 +-27 +42 +-1 +-23 +34 +4 +-15 +28 +-8 +-27 +28 +-9 +-28 +27 +-9 +-28 +31 +-4 +-26 +32 +-2 +-24 +46 +4 +-23 +31 +-8 +-29 +29 +-8 +-29 +28 +-9 +-29 +29 +-5 +-26 +30 +-6 +-22 +36 +5 +-22 +41 +-1 +-27 +27 +-10 +-29 +35 +0 +-23 +27 +-9 +-29 +32 +-1 +-24 +35 +-5 +-25 +32 +-2 +-14 +49 +4 +-24 +29 +-11 +-28 +34 +-5 +16 +18 +16 +14 +10 +11 +9 +9 +12 +13 +3 +11 +2 +3 +6 +9 +2 +0 +9 +4 +1 +0 +-1 +8 +9 +2 +-3 +1 +10 +2 +-4 +5 +0 +3 +-4 +-3 +10 +9 +-3 +-3 +-4 +-2 +-4 +1 +-4 +-2 +17 +0 +-4 +-4 +-6 +14 +1 +-3 +2 +0 +9 +10 +-4 +0 +3 +11 +-2 +-6 +-6 +-2 +10 +2 +-4 +-4 +-1 +0 +-5 +-1 +-1 +-2 +9 +11 +5 +-3 +6 +-2 +0 +1 +0 +-8 +8 +7 +-2 +-2 +13 +-1 +-4 +-7 +-6 +-5 +0 +-4 +-1 +-1 +4 +-1 +-4 +-4 +-3 +-3 +-2 +1 +14 +12 +2 +-3 +7 +-2 +4 +-5 +-4 +3 +3 +0 +-2 +-2 +-4 +-2 +6 +12 +9 +3 +-2 +-3 +6 +6 +2 +8 +-4 +4 +-6 +-7 +-7 +-5 +-4 +0 +-3 +3 +0 +3 +1 +-1 +-1 +-2 +7 +2 +6 +0 +3 +10 +-4 +2 +1 +-1 +5 +-3 +-4 +0 +-2 +-4 +-5 +-2 +-1 +-3 +0 +3 +6 +11 +8 +16 +-1 +-3 +-4 +-3 +0 +1 +-7 +6 +-3 +-4 +6 +-3 +0 +-4 +3 +1 +0 +-4 +5 +-3 +1 +0 +4 +1 +-1 +5 +8 +6 +12 +2 +-7 +-1 +0 +9 +11 +7 +-4 +-8 +-4 +-2 +-7 +-4 +13 +0 +-4 +0 +1 +3 +-6 +0 +2 +0 +3 +-3 +1 +-1 +-4 +-1 +-4 +-2 +2 +1 +-3 +8 +-3 +-3 +-1 +-5 +0 +17 +5 +15 +-1 +-1 +-3 +-2 +1 +-3 +-5 +2 +-34 +-50 +12 +-24 +-42 +21 +-17 +-39 +18 +-17 +-28 +20 +-15 +-33 +32 +-8 +-27 +32 +-8 +-28 +33 +-3 +-26 +31 +-9 +-22 +44 +1 +-27 +38 +-3 +-25 +26 +-9 +-25 +37 +-6 +-27 +28 +-10 +-24 +28 +-10 +-27 +27 +-3 +-19 +32 +-6 +-25 +26 +-11 +-27 +35 +-6 +-26 +31 +-5 +-21 +42 +-2 +-21 +39 +-3 +-27 +42 +5 +-25 +30 +-9 +-29 +25 +-10 +-18 +25 +-9 +-28 +24 +-12 +-31 +27 +-9 +-28 +29 +-5 +-19 +29 +-4 +-27 +31 +-6 +-28 +30 +-6 +-25 +39 +1 +-21 +42 +1 +-26 +44 +1 +-26 +39 +1 +-28 +25 +-11 +-31 +24 +-11 +-32 +27 +-9 +-25 +29 +-8 +-27 +42 +-1 +-26 +28 +-6 +-29 +28 +-9 +-27 +45 +2 +-23 +40 +-1 +-27 +28 +-5 +-25 +30 +-7 +-29 +29 +-5 +-18 +29 +-9 +-25 +32 +-4 +-23 +33 +-7 +-28 +32 +-7 +-28 +32 +-3 +-22 +27 +-9 +-29 +35 +0 +-25 +28 +-8 +-29 +44 +1 +-16 +34 +-4 +-28 +30 +-9 +-29 +42 +2 +-27 +30 +-10 +-17 +30 +0 +-27 +26 +-11 +-13 +29 +-10 +-30 +25 +-13 +-21 +27 +-7 +-30 +27 +-10 +-26 +29 +-8 +-25 +29 +-10 +-24 +31 +-1 +-11 +33 +-7 +-24 +32 +-5 +-18 +39 +-3 +-28 +28 +-5 +-21 +26 +-9 +-27 +38 +-2 +-19 +47 +1 +-26 +26 +-5 +-26 +36 +-6 +-29 +27 +-1 +-28 +25 +-12 +-30 +30 +3 +-25 +31 +-5 +-26 +36 +-5 +-29 +32 +-6 +-28 +34 +-5 +-29 +30 +-6 +-27 +27 +-10 +-27 +33 +-3 +-27 +38 +-3 +-27 +37 +-3 +-23 +25 +-10 +-30 +28 +-9 +-27 +38 +0 +-24 +28 +-10 +-25 +39 +-1 +-25 +34 +29 +27 +20 +13 +10 +13 +18 +20 +5 +7 +11 +2 +2 +5 +2 +-2 +2 +-2 +-2 +-2 +9 +0 +0 +0 +8 +5 +6 +-2 +0 +2 +-2 +4 +-2 +0 +-3 +1 +1 +6 +-2 +8 +-1 +4 +2 +1 +4 +-2 +1 +11 +-2 +-3 +-4 +-3 +-3 +-1 +-1 +10 +-2 +8 +-2 +-1 +-2 +5 +12 +16 +3 +-5 +-1 +-5 +3 +-1 +8 +15 +-4 +0 +2 +-5 +-5 +-4 +-4 +-4 +2 +4 +-3 +-5 +0 +-3 +-6 +0 +6 +-2 +7 +2 +11 +2 +0 +8 +4 +1 +0 +-9 +-6 +0 +-5 +-5 +-3 +-5 +-3 +15 +18 +0 +-3 +3 +-5 +9 +12 +0 +-6 +-6 +14 +-3 +-7 +-4 +-5 +-6 +-4 +-4 +-2 +1 +-4 +-2 +-1 +5 +0 +8 +9 +0 +-6 +3 +-3 +-3 +-3 +12 +0 +5 +-2 +-2 +0 +2 +-1 +3 +6 +-1 +-5 +1 +0 +-1 +1 +4 +2 +-1 +5 +-3 +-5 +18 +2 +3 +-5 +-1 +-2 +9 +-4 +1 +-5 +10 +-2 +11 +-3 +5 +-3 +-3 +-4 +13 +16 +1 +-5 +-5 +-4 +-1 +-5 +-2 +6 +0 +0 +3 +7 +0 +-5 +-1 +-5 +-3 +3 +-1 +1 +12 +-2 +-6 +-4 +1 +9 +6 +14 +2 +0 +-1 +-7 +-6 +-4 +-7 +4 +-2 +3 +-1 +-5 +-3 +0 +3 +-5 +-5 +-3 +1 +2 +5 +3 +-2 +3 +1 +5 +-1 +-1 +1 +6 +-2 +-1 +13 +8 +1 +-1 +5 +2 +-4 +2 +0 +-7 +2 +-5 +3 +-33 +-33 +12 +-24 +-38 +14 +-13 +-23 +18 +-15 +-37 +18 +-9 +-27 +28 +-5 +-24 +23 +-10 +-27 +26 +-12 +-30 +39 +-2 +-18 +30 +-5 +-29 +33 +-7 +-29 +27 +-8 +-28 +35 +0 +-22 +32 +-7 +-23 +26 +-12 +-26 +25 +-9 +-26 +28 +-3 +-15 +38 +-2 +-18 +30 +-10 +-21 +30 +-9 +-23 +30 +-8 +-16 +32 +-8 +-29 +26 +-10 +-25 +24 +-4 +-9 +31 +-8 +-30 +29 +-9 +-27 +30 +-9 +-16 +35 +2 +-15 +37 +-5 +-22 +25 +-12 +-32 +26 +-7 +-14 +31 +-5 +-26 +32 +-9 +-26 +31 +-8 +-29 +31 +1 +-24 +33 +-7 +-26 +29 +-8 +-18 +27 +-9 +-27 +31 +-5 +-25 +32 +-5 +-25 +34 +-7 +-23 +31 +0 +-24 +36 +6 +-22 +25 +-3 +-27 +30 +-10 +-27 +23 +-11 +-22 +27 +-10 +-22 +33 +-6 +-27 +30 +26 +18 +19 +30 +30 +20 +23 +11 +4 +5 +24 +6 +0 +-1 +1 +3 +-1 +-1 +-2 +4 +0 +4 +-4 +17 +1 +2 +-3 +3 +5 +7 +0 +-2 +1 +1 +-4 +2 +-2 +-4 +1 +-4 +1 +-3 +-3 +0 +4 +1 +0 +-3 +-1 +-1 +4 +0 +-3 +-1 +-1 +-1 +-1 +9 +4 +-3 +6 +5 +3 +5 +-3 +8 +10 +1 +-5 +-3 +-6 +1 +-5 +-1 +0 +10 +10 +-3 +-1 +4 +-3 +1 +5 +-3 +-4 +4 +-4 +-3 +-1 +7 +-4 +1 +-4 +9 +0 +-4 +-3 +-2 +2 +0 +9 +-2 +7 +2 +-4 +-5 +12 +1 +-2 +-4 +11 +2 +-5 +-5 +-6 +16 +0 +-1 +3 +4 +-5 +-1 +6 +-5 +4 +5 +-1 +-1 +-36 +-50 +12 +-24 +-41 +21 +-18 +-34 +20 +-16 +-21 +26 +-11 +-33 +25 +-9 +-30 +42 +-1 +-28 +30 +-5 +-28 +29 +-10 +-17 +28 +-11 +-30 +33 +-7 +-18 +34 +-4 +-15 +37 +-6 +-27 +25 +-12 +-32 +34 +-7 +-22 +27 +-10 +-28 +28 +-10 +-30 +30 +-8 +-21 +50 +4 +-22 +36 +-3 +-28 +24 +-14 +-30 +25 +-11 +-31 +35 +0 +-24 +29 +-3 +-26 +29 +-7 +-21 +27 +-9 +-30 +28 +-7 +-25 +30 +-8 +-25 +30 +-1 +-16 +28 +-8 +-25 +47 +3 +-23 +29 +-9 +-25 +34 +-7 +-16 +34 +-4 +-25 +29 +-11 +-29 +37 +-4 +-28 +25 +-12 +-27 +32 +-7 +-23 +31 +-8 +-23 +27 +-7 +-29 +36 +2 +-21 +26 +-10 +-30 +31 +-8 +-27 +30 +-7 +-28 +36 +7 +-20 +40 +0 +-26 +47 +2 +-25 +27 +-6 +-29 +26 +20 +16 +18 +30 +16 +8 +10 +6 +6 +6 +13 +5 +5 +8 +9 +17 +1 +-1 +-3 +-2 +-1 +7 +1 +-3 +2 +2 +5 +8 +2 +-2 +0 +-3 +-1 +-2 +0 +9 +-3 +-3 +6 +4 +-2 +-4 +12 +11 +10 +17 +-1 +-2 +-1 +-7 +-7 +-4 +2 +-4 +1 +-3 +1 +7 +1 +9 +-4 +5 +0 +-2 +-3 +6 +4 +14 +12 +1 +-7 +0 +-6 +-4 +0 +-8 +2 +-2 +10 +3 +-2 +-3 +5 +-4 +-2 +9 +-1 +-1 +-1 +-8 +-5 +2 +5 +6 +-5 +-1 +-1 +12 +6 +-6 +0 +-1 +-4 +0 +-5 +-4 +-5 +4 +1 +7 +-3 +-5 +-5 +-3 +-3 +2 +16 +-1 +0 +-2 +-4 +0 +3 +3 +-1 +3 +6 +1 +-32 +-49 +5 +-25 +-42 +16 +-19 +-25 +20 +-13 +-19 +33 +-7 +-30 +27 +-8 +-22 +24 +-14 +-21 +43 +0 +-17 +29 +-11 +-31 +24 +-3 +-27 +29 +-11 +-25 +25 +-12 +-30 +30 +-10 +-28 +26 +-9 +-12 +32 +-7 +-24 +34 +-6 +-23 +35 +-6 +-19 +32 +-7 +-26 +29 +-3 +-20 +25 +-8 +-30 +37 +1 +-24 +27 +-9 +-26 +29 +-9 +-28 +26 +-5 +-27 +34 +-3 +-20 +31 +-8 +-28 +38 +3 +-17 +26 +-11 +-29 +38 +-2 +-16 +30 +-6 +-29 +30 +-1 +-17 +28 +-7 +-27 +32 +-8 +-29 +36 +-2 +-26 +30 +-10 +-28 +42 +0 +-18 +31 +-8 +-30 +30 +-7 +-27 +27 +-10 +-29 +30 +-8 +-27 +36 +-6 +-27 +29 +-8 +-25 +37 +5 +-22 +30 +-7 +-23 +40 +4 +-23 +31 +-8 +-31 +43 +-1 +-25 +40 +2 +-27 +25 +29 +24 +16 +11 +16 +23 +8 +3 +22 +6 +8 +-2 +8 +10 +13 +-3 +-6 +2 +0 +-1 +-4 +1 +2 +-2 +6 +1 +-1 +-2 +6 +10 +-3 +-4 +-3 +4 +0 +1 +-5 +1 +-1 +-2 +2 +16 +1 +1 +0 +16 +1 +-1 +-3 +-7 +-3 +6 +-3 +1 +-4 +-4 +-6 +1 +-2 +-3 +-3 +-2 +-4 +4 +-3 +3 +-4 +4 +-1 +7 +2 +14 +1 +-3 +-3 +2 +7 +0 +-4 +-3 +-1 +6 +5 +-3 +-3 +6 +-4 +-3 +-2 +2 +6 +-2 +-4 +7 +4 +5 +0 +-4 +10 +16 +1 +-5 +-7 +-5 +14 +0 +-4 +-4 +-5 +-4 +1 +5 +1 +0 +2 +-5 +-4 +-1 +-5 +-2 +-1 +0 +3 +-2 +3 +4 +17 +7 +-28 +-46 +10 +-25 +-42 +20 +-18 +-35 +18 +-17 +-33 +23 +-10 +-23 +35 +-6 +-20 +37 +-5 +-25 +30 +0 +-27 +22 +-10 +-32 +27 +-10 +-30 +32 +-8 +-27 +25 +-9 +-21 +28 +-10 +-25 +30 +-8 +-29 +32 +-8 +-27 +46 +3 +-18 +28 +-11 +-31 +30 +0 +-25 +27 +-8 +-28 +41 +0 +-21 +35 +-6 +-29 +27 +-3 +-28 +35 +-6 +-28 +26 +-2 +-27 +31 +-8 +-27 +30 +-7 +-27 +38 +-4 +-26 +36 +2 +-13 +28 +-10 +-28 +28 +0 +-21 +32 +-5 +-27 +29 +-9 +-24 +50 +4 +-22 +31 +-5 +-28 +30 +-10 +-30 +38 +3 +-26 +24 +-14 +-32 +31 +-8 +-26 +31 +-9 +-24 +25 +-11 +-27 +41 +1 +-17 +29 +-2 +-10 +29 +-10 +-27 +23 +-11 +-24 +30 +-9 +-20 +44 +0 +-26 +27 +-9 +-22 +30 +-9 +-28 +26 +28 +21 +17 +27 +17 +12 +20 +9 +7 +8 +10 +20 +3 +0 +0 +16 +14 +0 +-3 +-2 +6 +-4 +8 +-3 +4 +-3 +-2 +15 +-2 +8 +-2 +-3 +6 +4 +-5 +11 +-4 +-3 +-5 +-4 +3 +6 +2 +10 +13 +4 +2 +-9 +-5 +-4 +-4 +-8 +-7 +-1 +-5 +-4 +-6 +11 +2 +5 +8 +9 +-4 +1 +-4 +3 +-5 +-5 +-8 +-3 +4 +1 +3 +-2 +-2 +-2 +-3 +6 +14 +-1 +-4 +10 +1 +5 +4 +7 +-3 +-3 +-3 +14 +-2 +-1 +6 +2 +-2 +11 +-4 +-3 +12 +-4 +-7 +3 +4 +4 +-6 +-5 +-3 +-3 +-6 +-7 +-6 +16 +1 +11 +-2 +-7 +-3 +0 +-1 +-2 +3 +5 +2 +-4 +0 +-4 +-3 +-2 +-36 +5 +-23 +-43 +10 +-15 +-33 +27 +-7 +-33 +19 +-13 +-35 +27 +-10 +-29 +38 +-2 +-25 +27 +-7 +-25 +24 +-7 +-25 +31 +-9 +-20 +25 +-12 +-25 +25 +-6 +-19 +32 +-6 +-29 +35 +-1 +-17 +26 +-11 +-23 +32 +-7 +-23 +49 +5 +-17 +43 +-1 +-29 +21 +-9 +-32 +23 +-13 +-33 +25 +-6 +-30 +31 +-9 +-25 +25 +-11 +-29 +34 +-3 +-25 +30 +-3 +-27 +39 +-2 +-23 +28 +-9 +-28 +30 +-2 +-26 +29 +-6 +-26 +49 +4 +-24 +31 +-3 +-27 +40 +-2 +-16 +32 +-8 +-30 +26 +-12 +-21 +30 +-9 +-31 +28 +-9 +-21 +29 +2 +-24 +35 +-6 +-17 +37 +-5 +-25 +35 +-4 +-27 +24 +-12 +-31 +24 +-11 +-11 +31 +-8 +-25 +26 +-3 +-21 +30 +-5 +-29 +34 +-2 +-24 +27 +3 +-24 +27 +-10 +-28 +23 +-6 +-28 +48 +3 +-20 +37 +-4 +-28 +29 +-9 +-30 +24 +-11 +-14 +34 +0 +-17 +43 +1 +-24 +36 +-5 +-28 +37 +-4 +-29 +29 +-8 +-24 +33 +-7 +-31 +23 +-14 +-27 +26 +-11 +-14 +29 +0 +-26 +28 +-7 +-30 +27 +-7 +-16 +29 +-9 +-30 +26 +-11 +-25 +27 +-2 +-24 +42 +0 +-9 +30 +-8 +-27 +25 +-12 +-25 +28 +-6 +-12 +32 +-7 +-24 +37 +0 +-27 +30 +-4 +-10 +29 +-9 +-32 +27 +-9 +-31 +25 +-5 +-27 +27 +-11 +-25 +36 +-1 +-22 +41 +-2 +-13 +29 +-10 +-28 +25 +-12 +-30 +35 +2 +-25 +30 +-9 +-26 +32 +-5 +-23 +35 +-1 +-23 +41 +0 +-27 +36 +-5 +-29 +35 +-2 +-27 +29 +-11 +-23 +28 +-7 +-13 +28 +-11 +-15 +29 +-10 +-31 +42 +-1 +-27 +23 +-13 +-31 +29 +-10 +-28 +27 +-2 +14 +19 +19 +28 +15 +28 +20 +7 +8 +4 +4 +7 +10 +6 +6 +-1 +1 +-1 +14 +8 +0 +13 +-1 +-1 +13 +8 +-5 +-4 +-6 +-3 +-4 +2 +-1 +-3 +-5 +2 +9 +1 +-3 +13 +0 +-3 +-3 +-1 +-4 +1 +14 +6 +4 +-6 +17 +0 +-3 +12 +-4 +-5 +5 +-2 +-5 +-6 +10 +-1 +-6 +-3 +-4 +-6 +10 +-2 +-6 +-1 +-2 +-2 +-3 +-1 +5 +0 +1 +0 +8 +3 +7 +7 +-3 +-4 +-4 +-1 +-2 +16 +0 +-5 +-2 +7 +-4 +8 +4 +14 +-1 +-4 +-8 +-8 +-6 +-5 +9 +-1 +0 +6 +8 +-5 +-3 +-2 +0 +-1 +17 +1 +-2 +-3 +0 +-6 +1 +4 +12 +9 +-4 +11 +-2 +-4 +-7 +-3 +2 +10 +1 +7 +-5 +-3 +-3 +0 +10 +13 +-1 +-5 +-2 +0 +1 +-4 +6 +-5 +-4 +-6 +-1 +3 +2 +0 +-2 +-1 +4 +13 +11 +0 +-6 +-1 +0 +-5 +-4 +-2 +0 +0 +13 +9 +-4 +-6 +-1 +-5 +-3 +-2 +3 +-1 +-2 +0 +5 +0 +-3 +1 +-1 +-5 +-3 +3 +-2 +3 +0 +-2 +4 +-1 +-1 +-2 +8 +7 +-2 +-1 +2 +-2 +-2 +-1 +-2 +5 +0 +1 +-1 +1 +3 +-2 +4 +10 +9 +-2 +3 +0 +-3 +13 +14 +0 +-7 +-5 +-5 +-6 +4 +9 +0 +-3 +-5 +-4 +-4 +-3 +-3 +4 +6 +-2 +-1 +-2 +-3 +-1 +-1 +-1 +2 +2 +3 +-3 +-1 +0 +0 +6 +10 +-2 +5 +12 +16 +1 +-31 +3 +-31 +-42 +14 +-22 +-39 +18 +-18 +-37 +17 +-16 +-36 +24 +-13 +-29 +25 +-11 +-30 +32 +-8 +-23 +27 +-5 +-25 +39 +-2 +-19 +27 +-10 +-30 +41 +-2 +-26 +28 +-10 +-30 +26 +-10 +-24 +34 +-5 +-27 +41 +5 +-21 +26 +-9 +-26 +27 +-11 +-27 +32 +-5 +-22 +40 +-2 +-19 +29 +0 +-26 +31 +-9 +-27 +28 +-9 +-27 +28 +-4 +-13 +43 +1 +-12 +30 +-10 +-21 +25 +-12 +-32 +26 +-6 +-25 +30 +-1 +-26 +30 +-5 +-28 +28 +-9 +-16 +35 +-5 +-22 +28 +-9 +-21 +27 +-6 +-27 +37 +-4 +-27 +32 +-8 +-22 +32 +-7 +-29 +28 +-7 +-28 +28 +-2 +-20 +28 +-6 +-25 +32 +-7 +-19 +37 +-5 +-28 +29 +-9 +-13 +33 +-5 +-26 +27 +-10 +-29 +37 +-4 +-25 +45 +3 +-13 +33 +-8 +-23 +33 +-7 +10 +22 +13 +13 +20 +22 +13 +8 +12 +12 +7 +0 +15 +6 +-1 +-2 +8 +1 +-2 +5 +-1 +1 +1 +0 +1 +-1 +3 +-2 +-3 +9 +-2 +1 +-4 +6 +-2 +4 +6 +3 +-3 +-3 +3 +-1 +1 +-3 +5 +-3 +4 +-3 +4 +3 +-4 +4 +-2 +10 +3 +-3 +6 +1 +-6 +-4 +-4 +13 +20 +2 +-7 +-7 +-4 +4 +5 +-1 +11 +-2 +-6 +11 +0 +14 +-3 +-6 +3 +-1 +-4 +4 +-4 +2 +7 +-4 +4 +-5 +-5 +-6 +-3 +2 +-3 +-3 +-4 +-5 +17 +2 +8 +4 +-6 +0 +1 +-4 +-3 +4 +-2 +-4 +-3 +-2 +4 +10 +3 +2 +3 +0 +11 +1 +5 +-6 +12 +-2 +9 +9 +-2 +-4 +-6 +-4 +13 +-22 +-40 +4 +-31 +-48 +10 +-25 +-43 +15 +-21 +-32 +26 +-11 +-27 +26 +-12 +-29 +28 +-8 +-23 +27 +-11 +-31 +31 +-6 +-26 +33 +-3 +-25 +28 +-7 +-28 +34 +-5 +-26 +27 +-4 +-16 +31 +-9 +-26 +36 +-3 +-23 +37 +-4 +-22 +44 +0 +-26 +27 +-9 +-24 +38 +-3 +-29 +36 +-6 +-25 +25 +-12 +-13 +30 +-9 +-30 +27 +-10 +-29 +31 +-5 +-27 +30 +-1 +-25 +46 +2 +-25 +30 +-8 +-23 +32 +-8 +-14 +31 +-8 +-23 +30 +-10 +-28 +28 +-10 +-30 +32 +-7 +-28 +31 +-5 +-25 +34 +-6 +-26 +31 +-7 +-19 +30 +-10 +-29 +43 +3 +-21 +38 +2 +-15 +28 +-1 +-27 +28 +-11 +-32 +42 +0 +-27 +23 +-15 +-27 +24 +-3 +-22 +26 +-11 +-20 +27 +-8 +-25 +44 +0 +-22 +26 +-9 +-30 +31 +-1 +-12 +21 +20 +21 +16 +15 +11 +25 +12 +9 +10 +10 +5 +6 +20 +19 +14 +-2 +-1 +-5 +-3 +4 +14 +0 +-4 +7 +1 +-2 +-3 +-1 +0 +-2 +-2 +-1 +5 +2 +-2 +3 +-1 +0 +-2 +4 +9 +3 +-4 +10 +14 +8 +-4 +9 +-1 +3 +-6 +0 +13 +-3 +-5 +-5 +1 +5 +-1 +-5 +-4 +-4 +-2 +-1 +0 +20 +1 +4 +3 +-6 +-6 +5 +-2 +-4 +8 +2 +13 +-3 +2 +-3 +-3 +-4 +-4 +-5 +-2 +6 +-3 +-1 +-5 +1 +2 +5 +4 +-2 +1 +-3 +-4 +-1 +-5 +-2 +0 +2 +5 +1 +1 +-3 +7 +3 +7 +17 +1 +-5 +6 +-1 +-2 +-1 +9 +-3 +-4 +-6 +-4 +-5 +2 +-2 +-2 +11 +1 +24 +-17 +-45 +6 +-23 +-42 +11 +-17 +-40 +15 +-21 +-38 +19 +-16 +-33 +23 +-13 +-30 +26 +-8 +-28 +27 +-10 +-27 +28 +-8 +-27 +39 +-3 +-25 +31 +-3 +-25 +31 +-4 +-25 +47 +3 +-22 +29 +-10 +-29 +33 +-7 +-26 +32 +-8 +-27 +36 +-5 +-25 +40 +-3 +-29 +38 +-2 +-28 +27 +-10 +-28 +29 +-10 +-28 +29 +-8 +-22 +29 +-4 +-13 +41 +-2 +-25 +27 +-9 +-12 +31 +-5 +-29 +34 +-2 +-28 +24 +-8 +-19 +29 +-10 +-15 +36 +-3 +-25 +24 +-10 +-31 +27 +-6 +-28 +30 +-3 +-27 +27 +-11 +-24 +29 +-7 +-26 +34 +-6 +-19 +34 +-5 +-19 +41 +-2 +-26 +26 +-11 +-25 +32 +-6 +-28 +29 +-8 +-20 +36 +-6 +-29 +36 +-4 +-15 +36 +-7 +-29 +27 +-10 +-27 +27 +-8 +-28 +28 +-7 +-26 +29 +-8 +-18 +23 +37 +23 +24 +16 +13 +29 +14 +9 +8 +13 +4 +8 +8 +11 +2 +14 +8 +13 +3 +2 +1 +0 +-4 +12 +4 +-7 +-2 +-1 +-4 +0 +1 +12 +3 +0 +5 +-4 +-4 +-4 +2 +-1 +11 +10 +12 +-5 +-2 +9 +12 +6 +-6 +-10 +-2 +-8 +-9 +-9 +7 +-1 +-4 +0 +2 +-4 +-2 +5 +7 +-4 +-2 +12 +3 +-5 +-4 +11 +1 +-4 +2 +-4 +0 +-2 +0 +4 +-3 +-4 +14 +13 +13 +-3 +13 +-4 +-5 +1 +-7 +-5 +-2 +-4 +-6 +-3 +-2 +10 +9 +-4 +-4 +3 +5 +16 +1 +5 +-5 +-3 +9 +-1 +-2 +-4 +-4 +-5 +-1 +-2 +0 +-2 +-5 +-3 +2 +-3 +0 +-2 +-2 +-2 +6 +-3 +-2 +9 +-25 +-44 +7 +-27 +-43 +16 +-14 +-29 +30 +-11 +-24 +21 +-14 +-29 +26 +-13 +-30 +35 +-3 +-29 +27 +-11 +-28 +34 +-1 +-27 +30 +-7 +-22 +32 +-5 +-27 +42 +3 +-21 +25 +-12 +-32 +28 +-9 +-22 +30 +-8 +-24 +29 +-10 +-26 +31 +-7 +-10 +33 +-8 +-26 +38 +-3 +-27 +34 +-5 +-28 +25 +-10 +-30 +28 +-7 +-27 +27 +-8 +-27 +29 +-9 +-26 +32 +-6 +-23 +34 +-4 +-21 +29 +-7 +-24 +31 +-6 +-25 +31 +5 +-22 +32 +-7 +-24 +30 +-7 +-28 +30 +-4 +-25 +31 +-6 +-18 +31 +-6 +-24 +27 +-7 +-11 +34 +-7 +-28 +27 +2 +-23 +33 +1 +-23 +42 +-1 +-25 +29 +-10 +-29 +23 +-10 +-19 +31 +-8 +-22 +27 +-10 +-29 +33 +-7 +-24 +35 +-5 +-18 +32 +-8 +-28 +36 +-4 +-22 +30 +-8 +-28 +21 +30 +22 +27 +16 +14 +21 +15 +12 +9 +4 +6 +5 +9 +16 +5 +3 +1 +3 +4 +-1 +2 +1 +7 +-1 +2 +4 +1 +-3 +0 +-1 +-1 +0 +6 +2 +1 +-2 +-1 +8 +1 +7 +3 +1 +-2 +12 +7 +15 +-3 +-4 +-6 +1 +5 +7 +11 +-2 +4 +13 +-3 +-8 +-5 +-8 +9 +3 +0 +7 +-4 +-5 +-2 +0 +-5 +-8 +-1 +-5 +3 +12 +4 +3 +-5 +0 +-3 +-5 +8 +11 +-3 +6 +-5 +-5 +-1 +-7 +15 +-1 +2 +-5 +-2 +-6 +-5 +-1 +3 +-4 +-4 +-4 +4 +1 +2 +1 +3 +-4 +-2 +8 +-2 +-3 +0 +2 +-1 +16 +1 +0 +-5 +1 +-1 +5 +1 +1 +-3 +4 +-2 +-2 +8 +20 +-19 +-47 +17 +-22 +-45 +24 +-15 +-41 +17 +-17 +-37 +17 +-18 +-37 +31 +-10 +-27 +24 +-11 +-30 +25 +-11 +-24 +25 +-2 +-25 +29 +-9 +-28 +34 +-1 +-24 +29 +-5 +-25 +37 +0 +-23 +32 +-8 +-15 +38 +-4 +-29 +41 +-2 +-12 +28 +-11 +-32 +25 +-8 +-23 +29 +-6 +-14 +30 +-9 +-30 +28 +-10 +-28 +28 +-10 +-29 +29 +-7 +-27 +35 +-5 +-21 +35 +-5 +-26 +28 +-6 +-27 +35 +-3 +-24 +29 +-2 +-26 +35 +-1 +-24 +27 +-11 +-23 +26 +-10 +-16 +52 +6 +-22 +31 +-9 +-30 +26 +-7 +-20 +26 +-11 +-26 +27 +-11 +-26 +28 +-8 +-10 +33 +-7 +-25 +37 +0 +-25 +27 +-11 +-29 +38 +0 +-25 +30 +-10 +-23 +35 +-4 +-25 +29 +-11 +-20 +41 +-1 +-25 +27 +-7 +-27 +25 +-8 +-29 +37 +-5 +-27 +18 +20 +21 +25 +16 +15 +13 +9 +16 +13 +8 +6 +8 +5 +2 +3 +0 +14 +10 +8 +13 +24 +2 +-4 +-4 +-3 +-4 +-5 +0 +5 +4 +-2 +-2 +3 +-3 +0 +12 +3 +-5 +-4 +8 +-3 +-5 +2 +-3 +-5 +5 +4 +2 +-5 +12 +-2 +-4 +-2 +2 +-2 +-2 +13 +-2 +0 +-5 +-4 +5 +-4 +-4 +2 +-3 +1 +-4 +-2 +0 +1 +1 +-1 +0 +1 +0 +10 +-1 +7 +2 +13 +9 +1 +1 +-5 +6 +-1 +-3 +5 +-4 +1 +-1 +0 +-3 +-4 +-3 +-2 +6 +2 +-4 +-3 +-1 +18 +1 +0 +-1 +3 +-6 +-4 +-4 +-2 +2 +4 +3 +-5 +2 +3 +-3 +-1 +-1 +-1 +-3 +0 +1 +9 +4 +14 +13 +-24 +-41 +5 +-30 +-34 +23 +-16 +-39 +14 +-21 +-36 +21 +-5 +-30 +32 +-9 +-31 +30 +-2 +-29 +25 +-12 +-30 +26 +-11 +-27 +35 +-6 +-28 +29 +-8 +-17 +32 +-6 +-19 +37 +-4 +-27 +26 +-12 +-19 +31 +-8 +-27 +30 +-9 +-14 +42 +-1 +-25 +44 +0 +-16 +30 +-7 +-28 +30 +-11 +-31 +28 +-11 +-28 +23 +-13 +-26 +27 +0 +-14 +32 +-9 +-29 +28 +-5 +-26 +36 +-2 +-27 +25 +-12 +-29 +37 +-4 +-25 +29 +1 +-25 +31 +-7 +-25 +49 +4 +-25 +30 +-5 +-27 +33 +-1 +-16 +45 +0 +-28 +28 +-10 +-29 +23 +-13 +-27 +36 +-4 +-24 +24 +-12 +-30 +36 +-5 +-26 +30 +-5 +-20 +27 +-11 +-20 +33 +-6 +-22 +36 +-5 +-28 +31 +-9 +-29 +31 +-2 +-27 +30 +1 +-24 +30 +-9 +-27 +31 +-8 +-28 +23 +20 +39 +21 +18 +16 +11 +7 +10 +8 +5 +6 +3 +7 +19 +15 +-1 +5 +7 +-1 +7 +-2 +-3 +-3 +-1 +7 +1 +0 +-6 +2 +-2 +-1 +2 +1 +-2 +0 +0 +9 +-1 +-1 +-3 +-1 +7 +7 +13 +4 +6 +2 +9 +-2 +-5 +-4 +-6 +7 +17 +1 +4 +-4 +-7 +-8 +-6 +-2 +-6 +8 +0 +-2 +3 +-2 +-4 +-1 +9 +11 +-2 +-1 +10 +1 +-3 +-5 +2 +-4 +4 +6 +-1 +3 +-6 +-4 +-2 +2 +5 +-2 +0 +5 +-4 +-2 +-1 +9 +1 +0 +-1 +3 +7 +6 +-4 +-3 +1 +-1 +-2 +-3 +-2 +3 +-2 +0 +1 +-1 +5 +2 +4 +-1 +3 +-4 +-3 +-3 +-2 +5 +15 +4 +-3 +-3 +12 +-25 +-47 +18 +-15 +-40 +20 +-18 +-28 +27 +-13 +-34 +33 +-8 +-35 +26 +-13 +-32 +22 +-12 +-31 +23 +-14 +-30 +26 +-11 +-17 +29 +-11 +-29 +38 +-3 +-27 +27 +-10 +-19 +44 +1 +-26 +29 +-9 +-17 +39 +-3 +-24 +30 +-10 +-22 +25 +-12 +-32 +25 +-11 +-14 +28 +-10 +-29 +46 +1 +-25 +30 +-3 +-28 +47 +2 +-15 +40 +-3 +-31 +25 +-14 +-31 +24 +-12 +-20 +28 +-3 +-27 +29 +-7 +-29 +31 +-4 +-25 +26 +-11 +-29 +29 +-4 +-17 +26 +-7 +-25 +36 +-5 +-27 +28 +-10 +-17 +29 +-4 +-15 +32 +-5 +-29 +33 +-3 +-24 +27 +-5 +-25 +27 +-6 +-28 +39 +-2 +-23 +28 +-3 +-25 +29 +-8 +-25 +27 +-11 +-29 +38 +-3 +-25 +40 +-1 +-15 +36 +-5 +-29 +25 +-13 +-27 +28 +-9 +-29 +29 +-9 +-19 +23 +28 +19 +19 +21 +18 +14 +30 +13 +7 +14 +4 +2 +2 +3 +19 +5 +10 +-2 +11 +2 +6 +-3 +-3 +1 +1 +-2 +13 +2 +-3 +-3 +-4 +4 +7 +-4 +0 +5 +0 +-6 +-4 +2 +0 +-6 +8 +2 +0 +-2 +-2 +6 +-2 +13 +1 +8 +12 +2 +-1 +-6 +-4 +3 +-4 +-5 +2 +3 +15 +0 +-5 +-1 +-5 +4 +6 +-5 +4 +-3 +6 +-1 +4 +0 +1 +-4 +-5 +-5 +-5 +0 +-2 +0 +6 +-3 +15 +-1 +0 +-5 +-5 +-4 +13 +-1 +1 +13 +14 +5 +-6 +-3 +-6 +-5 +15 +-1 +-4 +-4 +-5 +11 +-1 +11 +-3 +-5 +-1 +-2 +-1 +-4 +0 +-5 +-1 +-4 +-6 +-2 +0 +11 +12 +-2 +13 +-22 +5 +-30 +-49 +17 +-20 +-30 +18 +-16 +-38 +16 +-19 +-34 +22 +-11 +-26 +36 +-2 +-26 +27 +-11 +-18 +25 +-13 +-28 +28 +-3 +-22 +27 +-10 +-23 +27 +-11 +-29 +41 +-1 +-26 +30 +-9 +-26 +27 +-9 +-18 +30 +-7 +-27 +34 +-4 +-27 +35 +-6 +-27 +28 +-8 +-26 +33 +-6 +-26 +27 +-5 +-24 +35 +-2 +-23 +35 +-2 +-25 +33 +-8 +-28 +38 +0 +-19 +32 +-8 +-14 +36 +-1 +-14 +29 +-12 +-32 +23 +-13 +-27 +32 +-7 +-28 +31 +-8 +-29 +28 +-9 +-24 +28 +-4 +-12 +30 +-8 +-15 +35 +-5 +-24 +25 +-9 +-23 +32 +-7 +-27 +46 +4 +-21 +28 +-9 +-31 +45 +1 +-27 +29 +-8 +-22 +26 +-13 +-31 +28 +-10 +-23 +37 +-5 +-26 +31 +-8 +-29 +28 +-7 +-26 +27 +-2 +-24 +37 +-4 +-27 +44 +2 +29 +22 +21 +18 +12 +23 +15 +20 +14 +2 +0 +3 +2 +-1 +5 +6 +5 +-2 +0 +6 +4 +14 +13 +-2 +-4 +5 +4 +-3 +13 +-1 +-7 +-4 +-7 +-2 +5 +4 +3 +8 +-2 +2 +-5 +-1 +-4 +1 +13 +-1 +3 +-4 +-3 +-4 +-4 +-4 +-3 +-2 +0 +-1 +-2 +-2 +13 +14 +6 +-4 +-4 +12 +-2 +3 +-1 +2 +-2 +-6 +7 +-4 +10 +16 +10 +0 +2 +-9 +-7 +-5 +4 +12 +-3 +-6 +3 +5 +12 +-2 +-6 +2 +14 +-3 +-1 +-3 +-6 +-4 +0 +-3 +-2 +0 +-7 +-5 +11 +4 +-2 +-5 +-5 +-7 +11 +0 +-1 +-4 +-3 +4 +10 +-3 +-4 +1 +-4 +10 +1 +-2 +7 +4 +13 +13 +0 +8 +10 +-23 +-39 +3 +-32 +-49 +12 +-22 +-41 +23 +-16 +-28 +22 +-15 +-36 +25 +-6 +-24 +22 +-5 +-30 +25 +-10 +-29 +26 +-11 +-21 +28 +-10 +-29 +34 +-4 +-15 +47 +2 +-24 +26 +-1 +-27 +25 +-13 +-31 +30 +-8 +-20 +34 +-7 +-28 +31 +-5 +-27 +29 +-9 +-29 +43 +1 +-20 +26 +-3 +-24 +34 +-6 +-30 +37 +4 +-24 +27 +-5 +-16 +44 +0 +-26 +25 +-9 +-31 +32 +-3 +-22 +35 +-3 +-21 +24 +-15 +-27 +26 +-11 +-28 +30 +-9 +-29 +25 +-10 +-29 +29 +-9 +-26 +31 +-7 +-16 +38 +1 +-18 +27 +-10 +-28 +37 +-3 +-19 +31 +-8 +-30 +27 +-11 +-27 +29 +-6 +-27 +30 +-9 +-25 +39 +1 +-23 +32 +-6 +-19 +26 +-10 +-29 +32 +-6 +-20 +34 +-5 +-24 +30 +-9 +-27 +38 +-1 +-17 +33 +-6 +-25 +18 +23 +19 +23 +16 +17 +11 +10 +21 +20 +12 +10 +2 +3 +7 +19 +4 +13 +12 +3 +8 +12 +-4 +-7 +-6 +1 +-3 +-2 +-2 +-2 +1 +-5 +-4 +3 +-2 +-1 +-3 +3 +5 +6 +2 +-1 +-2 +0 +9 +0 +12 +-2 +0 +-6 +-5 +4 +-4 +-4 +3 +7 +9 +8 +-5 +-6 +-3 +-2 +13 +1 +-4 +-6 +-4 +-2 +4 +-2 +2 +0 +6 +-1 +8 +0 +-5 +14 +-1 +1 +-8 +17 +0 +-1 +-7 +-2 +2 +2 +-3 +5 +-1 +-3 +-4 +-3 +0 +-2 +-1 +7 +-4 +2 +6 +-6 +-2 +-3 +2 +-6 +-2 +4 +0 +5 +-4 +-3 +5 +-2 +-4 +11 +8 +12 +7 +-6 +-7 +-5 +-5 +-4 +4 +-4 +7 +9 +9 +-28 +-50 +7 +-23 +-42 +10 +-23 +-26 +22 +-16 +-18 +24 +-14 +-33 +25 +-12 +-30 +21 +-13 +-33 +37 +0 +-26 +24 +-9 +-28 +34 +-1 +-26 +25 +-11 +-17 +50 +4 +-21 +33 +-7 +-31 +26 +-6 +-29 +25 +-11 +-30 +39 +-4 +-22 +30 +-8 +-18 +32 +-7 +-26 +26 +-11 +-27 +29 +-7 +-14 +44 +1 +-20 +30 +-11 +-30 +27 +-10 +-27 +27 +-8 +-24 +28 +-6 +-23 +28 +-9 +-26 +30 +-6 +-19 +34 +-4 +-27 +29 +-5 +-27 +33 +-5 +-25 +31 +-7 +-21 +39 +-4 +-24 +35 +-4 +-24 +28 +-8 +-29 +29 +-4 +-24 +29 +-6 +-18 +28 +-3 +-28 +32 +-7 +-16 +31 +-2 +-26 +28 +-9 +-25 +27 +-10 +-25 +35 +-6 +-25 +31 +-5 +-15 +49 +4 +-25 +35 +-6 +-30 +27 +-11 +-27 +39 +-2 +-16 +36 +-2 +-29 +19 +25 +21 +15 +12 +17 +8 +8 +8 +10 +5 +5 +5 +7 +2 +7 +5 +6 +2 +3 +7 +2 +8 +-1 +2 +15 +8 +11 +-2 +-8 +1 +-2 +-5 +-5 +-4 +4 +-3 +5 +-3 +-3 +0 +6 +-4 +0 +-2 +0 +9 +-1 +-2 +-5 +16 +3 +-4 +-3 +2 +1 +-2 +2 +0 +-2 +11 +19 +0 +6 +-6 +3 +13 +17 +-3 +-7 +1 +6 +8 +-3 +-10 +-4 +-7 +-8 +5 +-5 +0 +-4 +-8 +-3 +-6 +-1 +-2 +1 +1 +2 +-3 +-3 +2 +10 +-2 +-1 +1 +6 +-4 +14 +0 +10 +8 +-4 +-5 +5 +-4 +4 +11 +12 +-4 +5 +-3 +-2 +-4 +-7 +9 +-4 +-7 +-7 +-4 +-4 +-1 +-2 +-1 +9 +-3 +10 +-26 +16 +-22 +-46 +11 +-23 +-30 +17 +-18 +-39 +16 +-11 +-22 +21 +-16 +-34 +19 +-14 +-33 +26 +-9 +-21 +26 +-6 +-17 +38 +-4 +-25 +32 +-4 +-27 +26 +-8 +-24 +25 +-10 +-23 +27 +-11 +-25 +35 +-6 +-26 +36 +-4 +-27 +41 +0 +-22 +27 +-3 +-23 +27 +-10 +-22 +31 +-1 +-26 +45 +1 +-22 +32 +-7 +-31 +23 +-9 +-25 +39 +-3 +-28 +32 +2 +-26 +29 +-3 +-22 +30 +-7 +-31 +27 +-6 +-27 +26 +-11 +-25 +32 +-8 +-28 +30 +-6 +-28 +28 +-8 +-28 +30 +-5 +-20 +44 +0 +-24 +29 +-4 +-28 +33 +-4 +-26 +29 +-7 +-24 +30 +-4 +-27 +32 +-6 +-24 +27 +-10 +-25 +30 +-6 +-21 +33 +-4 +-26 +31 +-6 +-26 +40 +-2 +-24 +31 +-2 +-23 +41 +-2 +-24 +28 +-8 +-26 +25 +-13 +-30 +30 +-8 +13 +25 +27 +32 +16 +12 +23 +21 +9 +5 +2 +19 +12 +5 +-1 +0 +8 +-1 +6 +24 +2 +0 +-7 +1 +1 +-4 +5 +2 +1 +-5 +3 +12 +-2 +11 +-2 +-3 +5 +3 +0 +-3 +3 +-2 +-8 +3 +-2 +0 +7 +-3 +-4 +11 +7 +-5 +-5 +-6 +-5 +-1 +-4 +2 +-2 +-1 +0 +-3 +-2 +-2 +1 +1 +1 +4 +-4 +14 +-1 +-2 +-2 +-2 +-2 +-2 +-2 +-1 +-1 +8 +1 +2 +1 +0 +14 +4 +2 +3 +-7 +-6 +2 +3 +-2 +-2 +2 +-2 +6 +-3 +-3 +6 +-2 +4 +1 +-3 +-2 +2 +-4 +8 +-1 +-3 +0 +1 +0 +4 +-1 +-1 +-2 +19 +2 +3 +3 +5 +3 +1 +4 +3 +-6 +-3 +-35 +9 +-25 +-47 +9 +-25 +-33 +16 +-19 +-33 +19 +-15 +-28 +38 +-5 +-29 +31 +-7 +-29 +27 +-6 +-24 +36 +-3 +-28 +30 +-10 +-32 +26 +-11 +-30 +39 +-4 +-21 +28 +-10 +-31 +43 +3 +-25 +25 +-7 +-30 +25 +-12 +-21 +28 +-8 +-28 +34 +-6 +-27 +37 +-4 +-24 +28 +-11 +-19 +32 +-7 +-20 +33 +-4 +-21 +45 +2 +-27 +34 +-6 +-27 +42 +1 +-28 +26 +-12 +-28 +30 +-6 +-27 +27 +-12 +-26 +25 +-11 +-30 +33 +-7 +-28 +33 +-4 +-27 +31 +-3 +-26 +29 +-8 +-19 +36 +-3 +-18 +43 +2 +-26 +29 +-10 +-30 +36 +-3 +-28 +31 +2 +-24 +32 +-8 +-31 +26 +-11 +-29 +30 +-1 +-21 +38 +-4 +-24 +49 +4 +-20 +29 +-10 +-28 +29 +-10 +-31 +25 +-13 +-24 +28 +-6 +-26 +32 +-4 +-18 +44 +2 +10 +20 +25 +15 +10 +10 +27 +10 +3 +6 +2 +9 +2 +5 +6 +1 +5 +1 +2 +8 +1 +13 +-1 +-2 +2 +-2 +1 +-1 +-4 +2 +10 +0 +16 +1 +-1 +5 +-4 +-2 +-4 +-7 +-4 +-5 +-3 +1 +3 +1 +-1 +4 +4 +3 +4 +6 +11 +0 +-4 +1 +-1 +-2 +0 +-2 +0 +7 +-5 +2 +-4 +-3 +2 +-3 +0 +-2 +-2 +-1 +2 +0 +5 +17 +9 +-3 +-6 +4 +0 +5 +0 +-5 +-7 +6 +0 +12 +-3 +-6 +9 +-1 +-6 +-1 +-4 +1 +-2 +1 +-2 +3 +-4 +-4 +8 +-1 +-3 +3 +5 +3 +-5 +2 +0 +0 +-1 +3 +3 +8 +12 +-3 +-2 +-4 +2 +1 +-8 +-5 +-1 +-3 +-1 +7 +-28 +23 +-14 +-39 +10 +-25 +-46 +17 +-20 +-36 +24 +-15 +-36 +22 +-14 +-30 +29 +-9 +-27 +27 +-11 +-19 +27 +-8 +-26 +29 +-3 +-27 +28 +-4 +-29 +47 +2 +-23 +43 +0 +-27 +31 +-9 +-23 +38 +-3 +-27 +24 +-9 +-30 +27 +-10 +-29 +35 +-4 +-27 +26 +-9 +-30 +33 +-6 +-27 +28 +-7 +-26 +35 +-1 +-26 +29 +-9 +-23 +29 +-9 +-27 +32 +-7 +-19 +33 +-5 +-28 +33 +-6 +-25 +28 +-8 +-12 +40 +-2 +-25 +32 +-8 +-29 +30 +-8 +-23 +28 +-9 +-28 +42 +6 +-23 +29 +-8 +-28 +28 +2 +-25 +38 +-4 +-23 +47 +3 +-26 +24 +-14 +-26 +31 +-7 +-29 +28 +-9 +-12 +30 +-9 +-30 +37 +-4 +-29 +41 +1 +-27 +35 +-6 +-28 +37 +3 +-25 +24 +-6 +-29 +23 +-4 +-26 +26 +-11 +-29 +40 +1 +18 +23 +13 +13 +13 +33 +13 +7 +9 +5 +11 +3 +0 +12 +7 +0 +8 +26 +4 +-2 +-5 +6 +-1 +0 +4 +-3 +-2 +2 +-3 +-3 +4 +3 +-4 +7 +-1 +-3 +-1 +-3 +-3 +-1 +-2 +7 +9 +-3 +6 +-2 +-2 +-3 +-2 +4 +13 +5 +2 +5 +2 +-4 +-5 +-1 +-1 +-4 +8 +9 +4 +1 +-6 +0 +-2 +-1 +10 +15 +-2 +-2 +10 +5 +-1 +-2 +-9 +-4 +1 +-6 +-5 +-3 +-4 +13 +11 +-1 +-1 +3 +10 +2 +-4 +-3 +-1 +-4 +-3 +8 +-5 +-1 +11 +10 +12 +-5 +-4 +-7 +-7 +12 +13 +2 +-4 +-4 +3 +-5 +5 +-3 +2 +5 +-6 +-8 +4 +-5 +-6 +1 +2 +1 +2 +0 +11 +-3 +6 +-26 +-49 +5 +-27 +-37 +32 +-10 +-36 +31 +-11 +-27 +16 +-19 +-39 +23 +-13 +-20 +29 +-11 +-20 +42 +2 +-23 +20 +-16 +-34 +32 +2 +-25 +28 +-10 +-29 +26 +-13 +-16 +27 +-10 +-31 +42 +0 +-27 +27 +-10 +-29 +27 +-11 +-30 +32 +-7 +-29 +31 +-8 +-28 +34 +-5 +-28 +30 +-8 +-25 +29 +-7 +-27 +42 +-1 +-17 +28 +-7 +-22 +29 +-2 +-17 +32 +-8 +-25 +28 +-10 +-26 +29 +-7 +-28 +30 +-1 +-23 +28 +-9 +-12 +36 +-5 +-26 +28 +-6 +-27 +33 +-5 +-9 +34 +-4 +-27 +31 +-9 +-21 +33 +-7 +-29 +33 +-5 +-29 +30 +-9 +-29 +32 +-3 +-28 +33 +-7 +-27 +35 +-4 +-27 +29 +-7 +-11 +33 +-5 +-26 +32 +-7 +-26 +38 +-1 +-27 +25 +-12 +-16 +32 +-8 +-28 +44 +0 +-25 +26 +-11 +-20 +18 +19 +19 +32 +21 +18 +11 +5 +20 +18 +4 +7 +3 +2 +4 +0 +1 +7 +4 +10 +2 +-1 +0 +4 +-2 +3 +2 +-3 +2 +-1 +-1 +0 +1 +17 +12 +-1 +4 +-2 +-5 +11 +6 +-5 +2 +19 +-1 +-1 +-2 +5 +-2 +-5 +-3 +7 +8 +-5 +-4 +2 +-4 +-1 +-4 +9 +7 +-5 +3 +3 +1 +6 +8 +2 +-4 +-5 +-10 +-5 +-2 +-6 +2 +-2 +5 +17 +0 +0 +0 +-3 +-3 +-4 +-6 +1 +-5 +-4 +-2 +-4 +-1 +3 +-2 +0 +0 +4 +0 +12 +0 +-2 +-2 +3 +-1 +-1 +-3 +9 +-3 +12 +14 +11 +-4 +-5 +-1 +-3 +15 +0 +0 +-6 +10 +-3 +-4 +6 +-3 +-3 +-3 +0 +-1 +0 +-34 +9 +-26 +-45 +7 +-25 +-43 +33 +-9 +-34 +21 +-13 +-36 +22 +-14 +-29 +30 +-7 +-29 +37 +3 +-13 +26 +-9 +-26 +24 +-13 +-28 +28 +-7 +-24 +32 +-8 +-17 +34 +-6 +-29 +28 +-6 +-26 +27 +-8 +-28 +27 +-8 +-11 +31 +-5 +-22 +26 +-11 +-26 +32 +-5 +-22 +32 +-7 +-23 +28 +-10 +-23 +31 +-7 +-25 +30 +-7 +-27 +35 +-5 +-17 +46 +2 +-25 +28 +-11 +-21 +31 +-8 +-28 +36 +-5 +-14 +31 +-4 +-28 +26 +-11 +-27 +32 +-8 +-24 +27 +-11 +-29 +28 +-7 +-21 +30 +-9 +-25 +32 +-1 +-18 +30 +-7 +-24 +28 +-9 +-28 +51 +5 +-22 +28 +-9 +-29 +30 +1 +-23 +27 +-10 +-30 +31 +-9 +-26 +30 +-5 +-23 +34 +-5 +-26 +33 +2 +-25 +27 +-11 +-28 +28 +-9 +-14 +35 +-4 +-26 +28 +1 +25 +23 +20 +17 +15 +14 +11 +10 +30 +10 +12 +4 +1 +21 +4 +2 +3 +-2 +2 +8 +2 +1 +-4 +-5 +-3 +-1 +-4 +0 +-3 +8 +0 +1 +12 +0 +-2 +-3 +6 +1 +3 +-5 +3 +1 +-2 +13 +3 +-2 +2 +14 +0 +-6 +-4 +1 +-4 +-3 +-1 +-3 +2 +0 +5 +-4 +-4 +2 +-4 +3 +5 +6 +0 +-1 +-4 +-4 +-3 +0 +8 +0 +7 +-2 +-4 +-1 +-1 +-1 +0 +-3 +11 +1 +15 +3 +-1 +-1 +-4 +-5 +6 +1 +-3 +0 +0 +-3 +-2 +7 +1 +1 +-3 +-1 +1 +-6 +-2 +15 +11 +-2 +-2 +-3 +-3 +0 +-3 +2 +6 +-2 +2 +0 +-6 +-3 +-1 +-1 +15 +10 +-3 +3 +14 +10 +8 +-28 +-41 +8 +-28 +-32 +14 +-20 +-40 +16 +-17 +-36 +20 +-6 +-31 +33 +-8 +-30 +24 +-13 +-30 +26 +-8 +-20 +39 +-3 +-26 +31 +-7 +-30 +30 +-6 +-29 +26 +-10 +-25 +39 +-3 +-26 +27 +-9 +-25 +26 +-9 +-28 +28 +-9 +-19 +32 +-7 +-19 +39 +-4 +-26 +41 +-1 +-21 +28 +-8 +-29 +32 +0 +-25 +26 +-11 +-27 +26 +-10 +-19 +38 +-1 +-10 +44 +0 +-27 +33 +-4 +-26 +26 +-10 +-32 +25 +-2 +-26 +30 +-9 +-31 +32 +-8 +-22 +26 +-11 +-26 +30 +-10 +-22 +32 +-5 +-23 +31 +-1 +-10 +32 +0 +-17 +45 +0 +-26 +25 +-12 +-19 +28 +-12 +-30 +22 +-13 +-32 +33 +-6 +-29 +29 +-9 +-29 +30 +5 +-22 +28 +-3 +-25 +29 +-9 +-22 +27 +-9 +-23 +29 +-6 +-24 +31 +-5 +-26 +36 +-5 +-26 +27 +30 +25 +20 +15 +14 +11 +8 +14 +26 +9 +22 +5 +1 +14 +9 +0 +0 +4 +-3 +-4 +-1 +2 +6 +-4 +5 +6 +-2 +13 +1 +3 +-4 +-4 +-1 +-6 +2 +2 +-1 +-2 +17 +1 +3 +-1 +-2 +6 +-5 +-1 +-4 +0 +-3 +10 +9 +-2 +15 +-2 +13 +-4 +-9 +12 +-2 +-5 +3 +6 +-6 +-3 +-5 +-4 +-1 +7 +1 +-7 +-3 +1 +-3 +-4 +-2 +-1 +-2 +7 +0 +5 +-2 +1 +6 +-4 +13 +11 +7 +-3 +-7 +-1 +-4 +4 +-4 +-4 +2 +-7 +-2 +-1 +3 +-1 +5 +8 +11 +-4 +-2 +1 +15 +0 +1 +0 +2 +13 +0 +-5 +15 +-2 +-2 +3 +-8 +9 +7 +-1 +-9 +-7 +-3 +-4 +-6 +8 +-28 +-41 +17 +-22 +-44 +11 +-23 +-41 +18 +-15 +-27 +39 +-4 +-32 +26 +-12 +-22 +36 +-5 +-32 +34 +-6 +-31 +22 +-13 +-32 +40 +0 +-22 +37 +-5 +-28 +27 +-12 +-26 +22 +-14 +-30 +24 +-13 +-30 +38 +-3 +-27 +36 +-3 +-25 +30 +-8 +-26 +27 +-2 +-12 +36 +-4 +-29 +33 +-6 +-26 +31 +-7 +-24 +45 +5 +-13 +36 +-5 +-28 +26 +-12 +-18 +32 +-8 +-32 +25 +-13 +-29 +27 +-9 +-29 +43 +1 +-18 +31 +-7 +-29 +28 +-10 +-25 +27 +-1 +-27 +36 +-6 +-27 +33 +-6 +-21 +29 +-10 +-30 +32 +-6 +-24 +31 +-2 +-23 +34 +-2 +-26 +32 +-8 +-26 +26 +-10 +-24 +38 +-1 +-19 +31 +-3 +-25 +32 +-5 +-24 +29 +-8 +-31 +27 +-7 +-17 +38 +-1 +-28 +26 +-12 +-28 +29 +-4 +-27 +40 +2 +-22 +21 +23 +20 +25 +19 +24 +10 +9 +10 +7 +6 +9 +2 +4 +3 +5 +0 +2 +1 +3 +6 +3 +-1 +7 +17 +16 +4 +-2 +-3 +-1 +4 +12 +15 +6 +-7 +5 +-4 +3 +-2 +-4 +-8 +-6 +-6 +-4 +5 +3 +2 +-1 +-2 +4 +-4 +-5 +5 +2 +-7 +-4 +-4 +10 +-1 +4 +-2 +-3 +2 +0 +0 +1 +0 +1 +10 +6 +4 +-5 +-6 +-4 +1 +11 +4 +-3 +-3 +-2 +0 +14 +1 +-3 +-2 +2 +3 +3 +-2 +-4 +0 +-4 +-4 +-2 +6 +-2 +10 +0 +-3 +-6 +-4 +-1 +5 +-2 +-3 +-3 +5 +1 +-2 +5 +8 +2 +-3 +0 +8 +-3 +-4 +1 +10 +1 +-4 +-1 +-2 +0 +5 +-2 +-4 +-3 +10 +-26 +-48 +13 +-23 +-40 +14 +-21 +-39 +26 +-13 +-34 +26 +-12 +-31 +32 +-8 +-28 +27 +-11 +-28 +27 +-9 +-27 +29 +1 +-17 +38 +0 +-23 +28 +-10 +-29 +26 +-10 +-24 +42 +4 +-21 +35 +-4 +-26 +44 +0 +-26 +35 +-4 +-14 +26 +-12 +-20 +34 +-8 +-32 +23 +-13 +-21 +34 +-7 +-30 +32 +-8 +-31 +28 +-8 +-29 +30 +-8 +-30 +28 +-2 +-20 +26 +-9 +-29 +33 +-7 +-27 +29 +-6 +-23 +31 +-4 +-17 +30 +-8 +-28 +37 +-3 +-13 +42 +-1 +-26 +24 +-11 +-25 +29 +-3 +-20 +27 +-11 +-28 +34 +-5 +-29 +27 +-10 +-29 +44 +1 +-23 +30 +-10 +-25 +30 +-3 +-19 +28 +-10 +-23 +27 +-10 +-27 +46 +2 +-18 +37 +-1 +-28 +26 +-13 +-31 +31 +-8 +-30 +27 +-10 +-24 +26 +2 +-24 +36 +-3 +-19 +35 +30 +37 +27 +19 +27 +18 +5 +8 +0 +-3 +14 +13 +-1 +-3 +-3 +9 +-2 +2 +7 +4 +-3 +-3 +0 +-3 +5 +-3 +-4 +5 +2 +4 +1 +9 +3 +-4 +11 +8 +-4 +-3 +-6 +-5 +4 +8 +-3 +-4 +2 +16 +1 +-4 +-2 +-2 +-8 +-4 +4 +-4 +-2 +-1 +-1 +3 +-2 +5 +-2 +1 +-3 +4 +-1 +-2 +1 +-3 +7 +2 +6 +-3 +5 +4 +2 +12 +5 +-5 +-6 +8 +17 +-2 +-1 +-4 +2 +-5 +-7 +-6 +-3 +-4 +-2 +1 +8 +0 +-1 +5 +-5 +-1 +14 +1 +-2 +-5 +-5 +-3 +-2 +6 +-1 +5 +1 +-3 +7 +-4 +-3 +-1 +5 +6 +-2 +13 +4 +0 +6 +10 +5 +-6 +1 +9 +5 +-31 +10 +-27 +-43 +6 +-28 +-33 +33 +-8 +-35 +12 +-18 +-26 +23 +-16 +-23 +22 +-15 +-34 +34 +-6 +-27 +26 +-9 +-32 +25 +-9 +-22 +31 +-6 +-28 +26 +-3 +-23 +29 +-9 +-22 +31 +-10 +-29 +33 +-1 +-21 +32 +-8 +-29 +26 +-8 +-29 +39 +4 +-23 +30 +-3 +-29 +29 +-8 +-22 +29 +-10 +-27 +42 +1 +-8 +29 +-9 +-23 +27 +-11 +-27 +36 +-3 +-26 +27 +-11 +-24 +32 +-6 +-29 +31 +-7 +-18 +30 +-8 +-24 +30 +-9 +-26 +28 +-9 +-25 +31 +-9 +-24 +31 +-6 +-21 +29 +-5 +-14 +37 +6 +-23 +28 +-8 +-25 +29 +-9 +-31 +26 +0 +-23 +34 +-5 +-18 +32 +-6 +-28 +35 +-4 +-29 +33 +4 +-23 +27 +-9 +-31 +28 +-4 +-23 +41 +0 +-27 +28 +-7 +-30 +35 +-5 +-25 +30 +-10 +-14 +34 +-5 +9 +20 +20 +23 +21 +19 +24 +24 +12 +7 +0 +8 +3 +0 +-3 +0 +4 +6 +-1 +3 +-1 +-1 +-1 +15 +9 +2 +6 +-3 +-7 +10 +5 +-4 +3 +-4 +-4 +6 +6 +-1 +-4 +0 +-4 +-4 +-4 +-2 +-1 +0 +0 +15 +-2 +4 +8 +8 +-2 +-8 +2 +-6 +-7 +13 +-1 +-4 +-2 +-3 +-2 +9 +-3 +4 +-2 +12 +5 +7 +8 +5 +-6 +8 +0 +10 +12 +10 +-7 +-8 +-8 +-4 +-6 +-3 +-7 +-8 +-1 +-4 +11 +15 +4 +11 +11 +4 +-5 +-9 +-7 +-6 +-4 +-3 +-6 +-1 +3 +1 +3 +9 +13 +-2 +-6 +1 +-7 +-6 +-1 +-3 +1 +3 +-2 +1 +3 +3 +2 +-3 +-2 +-1 +1 +11 +2 +0 +11 +-26 +-41 +11 +-21 +-42 +12 +-17 +-39 +19 +-18 +-34 +31 +-9 +-33 +38 +-4 +-24 +30 +-4 +-26 +31 +-10 +-31 +26 +-8 +-28 +27 +-9 +-29 +24 +-9 +-25 +27 +-11 +-28 +33 +-6 +-28 +31 +-4 +-12 +32 +-5 +-28 +26 +-11 +-28 +29 +-8 +-27 +31 +0 +-22 +34 +-5 +-27 +48 +3 +-21 +27 +-11 +-22 +45 +0 +-26 +27 +-11 +-22 +45 +0 +-24 +43 +2 +-27 +27 +-11 +-28 +32 +-7 +-31 +24 +-9 +-30 +41 +-2 +-25 +28 +-11 +-22 +47 +3 +-25 +35 +-7 +-23 +26 +-10 +-32 +26 +-7 +-30 +23 +-13 +-24 +34 +-7 +-26 +31 +-1 +-20 +28 +-11 +-22 +36 +-1 +-23 +30 +-5 +-21 +32 +-7 +-22 +25 +-13 +-19 +30 +-3 +-26 +29 +-10 +-29 +29 +-6 +-29 +35 +-5 +-17 +50 +5 +-22 +23 +-13 +-28 +28 +21 +32 +34 +14 +8 +8 +9 +5 +21 +5 +9 +-1 +8 +1 +11 +-1 +3 +1 +9 +-2 +-2 +3 +-3 +-3 +-1 +12 +2 +-3 +-3 +-5 +1 +13 +6 +1 +9 +1 +7 +-4 +12 +8 +13 +-1 +8 +-2 +-2 +-7 +5 +-2 +5 +-5 +-6 +-5 +-3 +-5 +-6 +-5 +-4 +-2 +-1 +-5 +-1 +2 +3 +6 +1 +0 +-4 +-4 +9 +1 +5 +-1 +5 +-6 +-1 +-3 +9 +2 +-5 +-1 +9 +8 +17 +0 +2 +-3 +10 +11 +7 +9 +-6 +-7 +-10 +-5 +-6 +-1 +-6 +10 +0 +7 +-5 +-4 +-2 +9 +-5 +-5 +-2 +3 +-1 +1 +16 +-2 +-1 +-2 +1 +-7 +-2 +11 +7 +-3 +0 +0 +-3 +-7 +0 +0 +-2 +13 +-25 +-48 +7 +-28 +-46 +12 +-19 +-34 +32 +-10 +-34 +19 +-16 +-34 +23 +-13 +-29 +28 +-11 +-30 +38 +-4 +-26 +31 +-8 +-29 +26 +-9 +-26 +35 +-6 +-24 +30 +-9 +-25 +31 +-6 +-27 +46 +2 +-24 +42 +-1 +-27 +41 +2 +-19 +22 +-14 +-34 +35 +-4 +-28 +24 +-11 +-24 +25 +-12 +-28 +34 +-2 +-25 +29 +-4 +-21 +32 +-7 +-27 +27 +-9 +-29 +34 +-3 +-27 +30 +-7 +-22 +44 +6 +-18 +27 +-10 +-30 +47 +3 +-22 +43 +-1 +-29 +25 +-12 +-26 +28 +-7 +-31 +25 +-11 +-27 +27 +-9 +-19 +30 +-6 +-27 +28 +3 +-23 +30 +-8 +-21 +43 +-1 +-27 +26 +-6 +-26 +31 +-9 +-26 +26 +-9 +-27 +25 +-12 +-29 +30 +-4 +-27 +41 +0 +-24 +39 +0 +-12 +38 +-2 +-25 +37 +0 +-29 +25 +-11 +-31 +21 +21 +18 +19 +19 +13 +15 +8 +16 +14 +10 +5 +3 +17 +4 +2 +3 +4 +8 +10 +-1 +3 +-4 +7 +2 +8 +1 +-3 +1 +-4 +11 +15 +14 +5 +-8 +-8 +-3 +-5 +-4 +-5 +2 +5 +-2 +-3 +-3 +-4 +-6 +-3 +-1 +4 +5 +1 +16 +1 +-3 +-3 +-3 +3 +-5 +8 +3 +-5 +-4 +-2 +-2 +12 +7 +-1 +2 +5 +-1 +6 +2 +-4 +-1 +-4 +-2 +-1 +1 +-4 +3 +1 +3 +2 +7 +8 +-5 +-3 +0 +-4 +2 +-5 +-4 +-1 +-3 +-3 +-1 +6 +6 +-1 +2 +8 +16 +5 +-6 +5 +-3 +-4 +-6 +-4 +3 +3 +9 +-1 +-4 +-2 +-3 +9 +-1 +-4 +11 +1 +3 +-4 +-6 +-2 +0 +-4 +13 +-23 +-46 +21 +-18 +-42 +17 +-19 +-41 +21 +-17 +-37 +35 +-6 +-32 +21 +-16 +-30 +20 +-14 +-28 +24 +-13 +-27 +29 +-5 +-26 +38 +-3 +-8 +32 +-8 +-26 +32 +-8 +-26 +26 +-10 +-22 +32 +-8 +-27 +37 +-4 +-27 +30 +-8 +-28 +32 +-7 +-26 +28 +-10 +-23 +38 +4 +-23 +30 +-8 +-30 +36 +-4 +-27 +27 +-4 +-25 +38 +-3 +-27 +32 +-7 +-28 +33 +-6 +-27 +29 +-8 +-27 +38 +-2 +-22 +33 +-6 +-19 +43 +0 +-25 +25 +-12 +-31 +30 +-6 +-29 +40 +-3 +-24 +35 +-3 +-28 +28 +-2 +-19 +25 +-11 +-28 +35 +0 +-25 +28 +-9 +-30 +27 +-11 +-29 +33 +-6 +-27 +28 +-10 +-14 +35 +-3 +-15 +30 +-9 +-27 +25 +-9 +-29 +27 +-7 +-25 +34 +-2 +-25 +37 +-3 +-26 +33 +-5 +-25 +35 +-6 +-18 +28 +22 +21 +31 +17 +16 +14 +14 +6 +7 +12 +4 +14 +4 +14 +2 +0 +4 +-1 +8 +-2 +7 +7 +-1 +3 +-2 +-2 +-2 +-3 +1 +4 +2 +4 +2 +8 +-2 +9 +6 +19 +1 +-6 +-7 +2 +-2 +-5 +-1 +-4 +0 +-2 +-2 +15 +2 +-2 +-4 +6 +0 +-2 +0 +6 +-1 +6 +-2 +-2 +-3 +-1 +1 +-1 +-3 +0 +8 +12 +2 +-4 +-2 +-6 +-3 +3 +-2 +2 +0 +14 +2 +-4 +2 +13 +-1 +-6 +-5 +-6 +1 +-4 +2 +3 +2 +-6 +1 +15 +7 +-4 +1 +-2 +-5 +-1 +-4 +6 +-3 +-4 +-4 +-4 +-2 +-1 +1 +3 +14 +2 +-2 +-3 +-3 +3 +3 +-3 +-2 +0 +16 +0 +-4 +1 +9 +12 +-25 +-49 +6 +-29 +-45 +20 +-15 +-37 +26 +-12 +-35 +22 +-13 +-32 +29 +-8 +-27 +32 +-5 +-27 +33 +-7 +-23 +25 +-12 +-32 +27 +-9 +-16 +29 +-9 +-30 +29 +-8 +-27 +30 +-7 +-28 +29 +-1 +-25 +34 +-2 +-20 +40 +-3 +-27 +27 +-7 +-30 +38 +-4 +-18 +32 +-7 +-25 +30 +-9 +-29 +47 +3 +-24 +29 +-9 +-23 +29 +-9 +-31 +32 +-7 +-26 +29 +-9 +-28 +29 +-7 +-23 +30 +-5 +-28 +29 +-9 +-27 +31 +-1 +-21 +30 +-4 +-26 +48 +4 +-16 +28 +-11 +-26 +27 +-8 +-29 +31 +-8 +-23 +45 +1 +-23 +29 +-5 +-27 +25 +-2 +-13 +35 +-7 +-22 +27 +-2 +-27 +29 +-9 +-31 +32 +-7 +-22 +38 +3 +-25 +24 +-11 +-25 +32 +-8 +-23 +29 +-8 +-29 +27 +-10 +-15 +32 +-7 +-13 +29 +-10 +-21 +19 +33 +27 +22 +29 +13 +9 +12 +15 +2 +7 +2 +6 +5 +3 +1 +3 +2 +3 +14 +6 +1 +2 +0 +2 +7 +16 +12 +0 +2 +-5 +-3 +-1 +-3 +1 +4 +-2 +1 +3 +-6 +-1 +-5 +5 +1 +-1 +1 +1 +1 +10 +-3 +-4 +-1 +-8 +0 +-1 +-5 +2 +1 +-3 +0 +1 +0 +1 +4 +9 +-2 +1 +-2 +10 +2 +-4 +-2 +-4 +-4 +6 +14 +1 +-1 +1 +4 +0 +-5 +-4 +-2 +3 +-1 +-3 +2 +-4 +10 +-3 +-3 +5 +-1 +-3 +-1 +0 +0 +-3 +-2 +6 +-3 +4 +4 +-1 +4 +5 +4 +-4 +-3 +0 +0 +5 +-3 +-4 +-3 +-2 +7 +9 +9 +-4 +8 +18 +2 +7 +1 +11 +-4 +4 +-31 +-49 +7 +-29 +-45 +7 +-25 +-42 +19 +-17 +-26 +24 +-11 +-27 +25 +-6 +-28 +26 +-10 +-18 +34 +-6 +-28 +36 +-3 +-19 +26 +-10 +-23 +29 +-9 +-26 +35 +-7 +-26 +28 +-9 +-30 +30 +-3 +-18 +30 +-8 +-22 +28 +-11 +-26 +26 +-2 +-23 +28 +-7 +-28 +34 +-3 +-28 +41 +1 +-26 +30 +-7 +-29 +32 +-4 +-24 +30 +-5 +-20 +29 +-8 +-24 +35 +-5 +-29 +29 +-6 +-15 +29 +0 +-24 +38 +-4 +-22 +25 +-12 +-32 +43 +3 +-25 +28 +-7 +-19 +32 +-8 +-22 +38 +-3 +-28 +30 +-6 +-27 +25 +-1 +-27 +31 +-9 +-26 +30 +-4 +-14 +29 +-8 +-29 +40 +-1 +-25 +38 +-4 +-18 +39 +-2 +-30 +22 +-13 +-31 +41 +2 +-27 +25 +-12 +-27 +42 +3 +-24 +24 +-9 +-22 +24 +-13 +-29 +25 +-8 +-19 +32 +34 +19 +16 +24 +16 +11 +8 +16 +6 +4 +5 +4 +5 +7 +7 +2 +1 +3 +5 +5 +7 +3 +-1 +10 +7 +-3 +-4 +-1 +-2 +-4 +-3 +5 +3 +8 +2 +-3 +-2 +1 +-3 +4 +-3 +-3 +-2 +-1 +2 +3 +4 +3 +8 +11 +-2 +0 +-4 +11 +7 +11 +1 +-5 +-2 +-3 +5 +-5 +-1 +-6 +-4 +0 +6 +-3 +-4 +0 +3 +-3 +2 +-1 +-2 +1 +1 +-4 +1 +2 +0 +3 +8 +-1 +-2 +-4 +14 +-1 +3 +3 +-2 +7 +8 +-2 +-6 +-5 +3 +-2 +-5 +7 +16 +7 +5 +-5 +-5 +-1 +-2 +-6 +10 +8 +1 +11 +1 +-5 +-5 +-6 +3 +-7 +-5 +-4 +3 +-6 +-5 +3 +0 +2 +-2 +24 +-16 +-45 +7 +-29 +-44 +11 +-22 +-36 +15 +-19 +-18 +25 +-14 +-35 +22 +-14 +-27 +47 +3 +-27 +38 +-4 +-30 +30 +-7 +-30 +36 +-6 +-25 +23 +-13 +-32 +46 +1 +-27 +24 +-12 +-25 +26 +-4 +-20 +29 +-3 +-14 +35 +-7 +-22 +27 +-9 +-30 +26 +-7 +-29 +36 +-3 +-26 +32 +-9 +-30 +25 +-11 +-30 +29 +-8 +-23 +31 +-5 +-25 +42 +-1 +-21 +32 +-8 +-28 +33 +-8 +-29 +28 +-9 +-29 +34 +0 +-25 +42 +0 +-17 +35 +-5 +-29 +26 +-11 +-18 +36 +2 +-22 +24 +-11 +-31 +27 +-10 +-28 +30 +-8 +-28 +30 +-9 +-28 +34 +4 +-14 +38 +-4 +-25 +26 +-7 +-23 +29 +-10 +-29 +28 +-5 +-26 +29 +-7 +-14 +36 +-5 +-19 +33 +-8 +-25 +45 +2 +-26 +29 +-10 +-27 +25 +-6 +-21 +34 +-6 +-26 +22 +25 +33 +21 +18 +13 +26 +11 +20 +23 +15 +0 +-3 +7 +1 +-4 +-1 +1 +10 +18 +0 +4 +-5 +11 +15 +-2 +0 +-8 +-7 +-5 +-2 +-6 +5 +-1 +6 +-2 +-6 +-3 +10 +-1 +-2 +-2 +-2 +10 +-2 +0 +0 +-1 +6 +-1 +-3 +-3 +-3 +2 +-2 +0 +9 +1 +-1 +10 +1 +-3 +-2 +-5 +-4 +-1 +-3 +5 +1 +5 +-1 +1 +-1 +-1 +13 +22 +1 +-4 +-9 +-3 +-4 +1 +-1 +3 +0 +2 +4 +16 +9 +0 +-1 +-5 +-4 +-3 +-3 +3 +5 +-1 +-2 +1 +4 +-3 +5 +-1 +-5 +1 +2 +0 +2 +2 +-4 +-1 +-3 +11 +14 +2 +-5 +-5 +-4 +-3 +-4 +2 +2 +11 +10 +0 +-8 +-5 +7 +-29 +-48 +18 +-20 +-29 +14 +-22 +-41 +14 +-18 +-37 +28 +-11 +-31 +31 +-9 +-23 +26 +-12 +-31 +37 +-5 +-29 +29 +-10 +-29 +38 +1 +-13 +27 +-7 +-30 +25 +-12 +-30 +30 +-7 +-28 +42 +1 +-24 +33 +-6 +-30 +47 +2 +-21 +42 +-1 +-13 +27 +-13 +-31 +23 +-12 +-33 +37 +-3 +-16 +42 +0 +-29 +23 +-11 +-32 +30 +-7 +-30 +25 +-9 +-26 +33 +-2 +-27 +38 +-4 +-27 +30 +-7 +-30 +28 +-10 +-27 +29 +-9 +-28 +39 +-1 +-18 +31 +-6 +-29 +28 +-2 +-21 +35 +-5 +-26 +26 +-7 +-28 +26 +-3 +-18 +32 +-6 +-18 +28 +-5 +-16 +30 +-10 +-27 +29 +-1 +-27 +33 +-7 +-29 +28 +-9 +-21 +32 +-8 +-28 +30 +-7 +-26 +46 +2 +-23 +34 +-6 +-21 +39 +0 +-27 +27 +-9 +-29 +30 +-10 +-29 +22 +40 +32 +17 +11 +8 +20 +10 +7 +7 +5 +5 +13 +11 +2 +2 +5 +1 +-1 +0 +15 +8 +14 +5 +-4 +-2 +-4 +-1 +2 +-3 +-3 +6 +10 +-2 +-4 +-1 +-2 +4 +-1 +0 +9 +-2 +-1 +1 +5 +-1 +-2 +2 +0 +-6 +-6 +-1 +5 +17 +2 +-2 +5 +5 +-1 +-2 +-3 +-4 +-3 +-1 +0 +-1 +8 +15 +8 +-5 +2 +-5 +-3 +-4 +9 +11 +0 +-4 +-4 +-6 +1 +1 +-5 +-3 +4 +16 +0 +0 +3 +-6 +-1 +9 +-4 +-5 +-4 +-4 +-1 +3 +9 +-2 +1 +-4 +-2 +16 +0 +-2 +-1 +-6 +-5 +-3 +-2 +2 +4 +5 +19 +1 +-3 +2 +-2 +-2 +-5 +9 +2 +4 +-4 +13 +0 +-4 +12 +-25 +-48 +5 +-28 +-46 +11 +-23 +-40 +23 +-13 +-33 +25 +-13 +-26 +33 +-6 +-30 +23 +-13 +-31 +29 +-8 +-29 +28 +-9 +-29 +31 +-6 +-20 +39 +-2 +-17 +28 +-8 +-14 +33 +-6 +-30 +33 +-7 +-29 +32 +-7 +-24 +28 +-8 +-25 +27 +-9 +-29 +34 +-4 +-27 +30 +-7 +-28 +47 +3 +-24 +28 +-9 +-31 +28 +-10 +-25 +32 +-6 +-22 +30 +-9 +-28 +28 +-9 +-28 +37 +-2 +-19 +32 +3 +-23 +31 +-7 +-23 +30 +-2 +-26 +28 +-9 +-22 +30 +-4 +-28 +32 +-5 +-26 +40 +-1 +-25 +29 +-2 +-24 +29 +-7 +-26 +41 +-3 +-22 +33 +-7 +-21 +31 +-9 +-20 +27 +-9 +-30 +28 +-8 +-18 +30 +-1 +-26 +28 +-7 +-26 +32 +-7 +-28 +34 +-6 +-23 +37 +-2 +-8 +34 +-7 +-15 +37 +-4 +-30 +32 +-9 +-25 +20 +17 +17 +31 +18 +11 +11 +9 +6 +11 +7 +7 +4 +7 +3 +10 +8 +3 +5 +11 +8 +-1 +5 +2 +-7 +-1 +-4 +4 +13 +0 +9 +15 +15 +-4 +-4 +-7 +-6 +-5 +-5 +7 +-4 +2 +1 +-1 +14 +1 +-4 +11 +-5 +-3 +-4 +-6 +-5 +2 +11 +9 +-2 +-5 +-1 +-4 +4 +-4 +0 +11 +9 +0 +-4 +3 +9 +5 +-1 +-6 +4 +-3 +-7 +-4 +0 +-7 +10 +2 +-4 +-4 +-1 +15 +-1 +-4 +5 +1 +0 +3 +-4 +-6 +-7 +0 +3 +-2 +6 +11 +0 +-5 +-2 +1 +-3 +7 +-4 +-2 +-1 +0 +-3 +-1 +11 +-1 +-3 +4 +-1 +-1 +-1 +1 +0 +4 +-3 +4 +-5 +-5 +-3 +1 +-5 +-3 +11 +-25 +-36 +19 +-18 +-37 +15 +-17 +-38 +29 +-9 +-30 +37 +-5 +-33 +23 +-15 +-32 +28 +-11 +-33 +25 +-13 +-29 +29 +-10 +-21 +27 +-11 +-28 +35 +-5 +-29 +30 +-8 +-27 +32 +-1 +-19 +29 +-1 +-12 +29 +-10 +-30 +31 +-6 +-14 +30 +-9 +-30 +36 +-6 +-25 +29 +-8 +-29 +28 +-10 +-25 +38 +-1 +-25 +35 +-1 +-24 +34 +-6 +-29 +30 +-4 +-23 +25 +-11 +-28 +35 +0 +-16 +46 +2 +-23 +29 +-11 +-32 +24 +-9 +-28 +45 +2 +-24 +28 +-8 +-26 +29 +-10 +-21 +24 +-11 +-27 +31 +-4 +-24 +27 +-8 +-17 +30 +-4 +-12 +30 +-9 +-30 +29 +-7 +-28 +30 +-8 +-15 +43 +-1 +-26 +33 +-6 +-30 +37 +-5 +-19 +34 +-6 +-28 +25 +-13 +-29 +29 +-9 +-27 +32 +-8 +-27 +44 +4 +-21 +29 +-10 +-29 +19 +19 +25 +35 +25 +15 +16 +13 +7 +10 +5 +3 +2 +2 +5 +4 +-2 +-2 +5 +4 +5 +1 +-1 +1 +10 +2 +-3 +-1 +-1 +1 +1 +5 +2 +1 +1 +-1 +-2 +9 +-2 +2 +-1 +1 +3 +6 +4 +1 +20 +1 +-6 +1 +-5 +-4 +4 +5 +-1 +2 +0 +-3 +-3 +8 +8 +10 +-3 +-6 +-1 +1 +-4 +-2 +-2 +-5 +2 +-2 +0 +-2 +-2 +9 +-3 +1 +-2 +1 +-2 +-2 +-1 +-1 +13 +11 +1 +4 +-4 +5 +0 +-5 +-6 +1 +-1 +-3 +12 +2 +-3 +1 +-4 +-1 +-2 +-4 +3 +13 +1 +0 +-2 +4 +6 +-4 +-4 +1 +0 +-4 +1 +2 +-4 +-3 +2 +-2 +15 +1 +0 +-2 +0 +19 +-21 +14 +-23 +-40 +22 +-13 +-32 +23 +-17 +-40 +16 +-20 +-32 +27 +-10 +-34 +18 +-17 +-28 +25 +-9 +-18 +24 +-13 +-29 +25 +-7 +-29 +31 +-8 +-27 +25 +-11 +-25 +36 +1 +-24 +42 +0 +-26 +26 +-10 +-28 +32 +-8 +-29 +43 +8 +-22 +30 +-10 +-23 +26 +-2 +-21 +43 +-1 +-28 +29 +-9 +-33 +30 +-3 +-22 +25 +-9 +-25 +31 +-9 +-30 +28 +-9 +-29 +29 +-8 +-13 +35 +-5 +-26 +46 +5 +-24 +24 +-11 +-16 +30 +-8 +-27 +41 +1 +-27 +28 +-6 +-28 +25 +-11 +-30 +31 +-8 +-29 +47 +3 +-25 +29 +-10 +-30 +29 +-8 +-30 +29 +-9 +-19 +33 +-6 +-15 +33 +-7 +-24 +28 +-10 +-23 +29 +-10 +-27 +28 +-6 +-27 +31 +-5 +-26 +46 +3 +-24 +38 +-5 +-27 +29 +-9 +-29 +41 +-2 +-25 +30 +1 +13 +21 +18 +22 +28 +14 +16 +6 +9 +9 +8 +13 +3 +0 +0 +10 +-1 +9 +3 +4 +-3 +1 +-2 +-3 +11 +10 +-1 +0 +3 +11 +-4 +-3 +6 +-2 +4 +-5 +-5 +-2 +-5 +1 +-2 +-2 +-1 +0 +-4 +-1 +-2 +0 +5 +7 +0 +5 +-3 +1 +-3 +1 +-1 +2 +-2 +-3 +11 +21 +1 +12 +7 +-6 +-4 +-2 +-6 +-5 +-3 +2 +-6 +-5 +-4 +-3 +1 +6 +2 +14 +11 +11 +7 +-1 +-8 +-2 +-1 +-4 +3 +-2 +-3 +-5 +1 +-3 +0 +-1 +5 +-3 +0 +-2 +0 +3 +-2 +-2 +-2 +2 +5 +1 +-2 +1 +3 +8 +-2 +12 +2 +-2 +4 +-3 +-6 +2 +8 +10 +-4 +-1 +0 +-5 +-3 +0 +13 +-23 +-48 +6 +-18 +-41 +17 +-19 +-37 +18 +-18 +-32 +37 +-5 +-31 +24 +-13 +-32 +24 +-13 +-32 +32 +-9 +-15 +33 +0 +-26 +28 +-10 +-29 +24 +-12 +-29 +32 +-6 +-27 +38 +-1 +-25 +32 +-8 +-26 +31 +-5 +-23 +30 +-8 +-27 +32 +-6 +-13 +33 +-7 +-26 +26 +-9 +-28 +29 +-3 +-24 +35 +-3 +-27 +31 +-3 +-25 +30 +-5 +-17 +40 +-2 +-23 +31 +-6 +-23 +26 +-10 +-23 +25 +-9 +-25 +40 +-3 +-27 +41 +-1 +-29 +33 +-7 +-27 +27 +-10 +-21 +39 +-3 +-22 +26 +-7 +-30 +25 +-10 +-19 +37 +-4 +-26 +34 +-3 +-23 +43 +9 +-23 +32 +-7 +-17 +28 +-6 +-23 +31 +-10 +-28 +23 +-13 +-30 +26 +-10 +-30 +26 +-10 +-28 +36 +-3 +-27 +26 +-10 +-25 +32 +-7 +-8 +32 +-6 +-28 +31 +-9 +-11 +24 +31 +28 +17 +23 +14 +23 +17 +10 +13 +4 +17 +7 +-1 +2 +4 +-3 +6 +-1 +5 +4 +-3 +-2 +3 +-4 +-2 +4 +5 +8 +-1 +-3 +0 +13 +0 +0 +6 +9 +-4 +-4 +5 +-5 +-3 +-1 +-2 +1 +6 +-1 +-1 +-5 +-3 +-5 +-5 +-4 +-1 +3 +10 +3 +2 +5 +-4 +3 +2 +1 +-1 +11 +13 +7 +-5 +-8 +-1 +-3 +-6 +-4 +0 +7 +-4 +0 +0 +-4 +15 +3 +0 +5 +17 +-1 +2 +-3 +-6 +-4 +-5 +-6 +-5 +-5 +0 +2 +-1 +-1 +-2 +0 +6 +-1 +13 +0 +12 +4 +10 +0 +-1 +-1 +-5 +-3 +0 +-5 +-7 +-1 +1 +1 +-3 +0 +1 +0 +1 +-2 +1 +-1 +-1 +1 +-4 +11 +-20 +-45 +18 +-20 +-43 +12 +-20 +-41 +17 +-14 +-33 +22 +-12 +-32 +31 +-9 +-27 +37 +-2 +-19 +26 +-13 +-32 +29 +-9 +-27 +26 +-8 +-25 +29 +-6 +-25 +26 +-9 +-17 +33 +-6 +-17 +28 +-8 +-18 +35 +3 +-15 +43 +-1 +-27 +25 +-12 +-28 +28 +-11 +-30 +32 +-5 +-29 +32 +-7 +-28 +46 +2 +-26 +37 +-4 +-29 +25 +-11 +-26 +37 +-5 +-28 +27 +1 +-25 +29 +-8 +-28 +35 +-4 +-26 +28 +-1 +-25 +28 +-6 +-25 +45 +1 +-25 +32 +-8 +-27 +34 +-6 +-28 +26 +-11 +-31 +26 +-7 +-18 +32 +0 +-18 +27 +-11 +-27 +38 +-3 +-28 +26 +-12 +-23 +28 +-2 +-26 +31 +-7 +-27 +42 +3 +-24 +29 +-4 +-24 +28 +-10 +-29 +31 +-4 +-26 +26 +-5 +-27 +40 +-3 +-17 +35 +-4 +-17 +30 +-7 +-22 +16 +20 +23 +16 +24 +13 +17 +8 +9 +25 +8 +4 +6 +6 +6 +1 +0 +-4 +11 +4 +-1 +0 +-2 +-1 +0 +8 +5 +6 +9 +-2 +15 +5 +-4 +1 +3 +-1 +-2 +13 +-2 +-3 +-6 +1 +13 +1 +11 +9 +5 +-4 +-8 +-6 +0 +-6 +5 +-4 +-7 +-5 +0 +-3 +2 +4 +-4 +-4 +-3 +-2 +1 +4 +0 +1 +0 +0 +-1 +-2 +-5 +8 +0 +3 +4 +15 +-2 +-3 +-4 +-4 +-4 +0 +-2 +1 +4 +0 +7 +-1 +5 +3 +-3 +-2 +2 +5 +0 +-2 +-5 +-3 +-3 +-2 +1 +-1 +2 +7 +-5 +12 +19 +1 +0 +-7 +-4 +2 +0 +2 +12 +-2 +-4 +6 +-1 +5 +0 +-5 +-6 +-5 +12 +7 +-29 +14 +-25 +-46 +6 +-22 +-41 +13 +-16 +-37 +33 +-7 +-33 +36 +-6 +-26 +33 +-8 +-33 +26 +-12 +-29 +24 +-13 +-26 +46 +1 +-27 +37 +-4 +-30 +32 +-6 +-21 +22 +-12 +-27 +27 +-9 +-16 +30 +-10 +-32 +27 +-11 +-30 +34 +-6 +-26 +27 +-9 +-24 +32 +-6 +-24 +30 +-8 +-28 +38 +-2 +-27 +31 +-7 +-28 +37 +-3 +-28 +27 +-10 +-26 +30 +-7 +-28 +29 +-6 +-25 +28 +-6 +-27 +33 +-5 +-27 +32 +-6 +-15 +35 +-6 +-27 +30 +5 +-23 +39 +-3 +-19 +27 +-9 +-26 +30 +-9 +-28 +27 +-9 +-26 +32 +-7 +-27 +29 +-7 +-27 +34 +-6 +-12 +40 +-1 +-22 +32 +-7 +-28 +28 +-9 +-24 +28 +-9 +-23 +31 +-5 +-10 +33 +-7 +-27 +33 +1 +-20 +31 +-8 +-29 +32 +-7 +-25 +29 +-5 +-27 +30 +-8 +16 +40 +23 +15 +13 +24 +18 +6 +13 +14 +5 +15 +22 +6 +7 +-4 +-3 +1 +-1 +-2 +2 +4 +7 +-5 +-3 +-1 +0 +-1 +8 +1 +-5 +-2 +11 +15 +1 +5 +-5 +-2 +3 +-3 +-6 +0 +-6 +13 +4 +3 +-2 +-2 +-4 +7 +-1 +6 +-4 +-2 +-7 +-2 +3 +-3 +-4 +17 +1 +-5 +11 +1 +2 +-1 +4 +-4 +-3 +8 +12 +1 +1 +-1 +-5 +5 +-2 +-4 +-3 +0 +-4 +-1 +6 +-2 +-1 +-5 +-4 +-2 +5 +10 +11 +10 +-6 +-5 +8 +-2 +-6 +-6 +3 +-4 +2 +-2 +-1 +6 +6 +-3 +-6 +7 +6 +0 +3 +0 +4 +0 +-7 +1 +-6 +1 +2 +-5 +-2 +8 +5 +15 +13 +0 +-4 +-5 +8 +-28 +-50 +8 +-23 +-41 +14 +-22 +-42 +19 +-4 +-30 +20 +-8 +-22 +29 +-9 +-31 +31 +-7 +-32 +25 +-12 +-32 +25 +-9 +-29 +34 +-5 +-14 +29 +-7 +-27 +49 +3 +-24 +41 +-2 +-26 +33 +-8 +-29 +25 +-3 +-29 +23 +-12 +-31 +29 +-7 +-29 +45 +0 +-26 +30 +-9 +-29 +34 +-2 +-22 +26 +-12 +-26 +29 +-9 +-20 +30 +-7 +-26 +28 +-10 +-23 +42 +-1 +-26 +34 +-6 +-11 +28 +-10 +-26 +30 +-10 +-29 +44 +1 +-23 +45 +0 +-27 +40 +-2 +-30 +25 +-5 +-29 +21 +-15 +-31 +25 +-7 +-21 +33 +-5 +-27 +42 +1 +-19 +29 +-6 +-30 +37 +-6 +-29 +23 +-13 +-29 +32 +-7 +-21 +28 +-9 +-26 +27 +-2 +-12 +44 +0 +-25 +32 +-6 +-12 +30 +-7 +-30 +37 +-3 +-26 +25 +-10 +-29 +26 +-9 +-30 +20 +25 +20 +18 +15 +18 +26 +20 +7 +13 +9 +0 +3 +7 +10 +2 +16 +5 +-1 +-2 +14 +3 +6 +-3 +2 +-4 +-5 +-1 +0 +-4 +0 +-3 +3 +14 +7 +-3 +12 +4 +-7 +-1 +-5 +5 +1 +12 +1 +-5 +-6 +3 +-2 +0 +6 +1 +-1 +-3 +-3 +13 +0 +-5 +2 +-3 +-5 +-3 +0 +-5 +-2 +15 +3 +-3 +-5 +-2 +4 +0 +10 +-2 +-4 +12 +12 +1 +0 +-3 +-4 +1 +-4 +-3 +11 +1 +6 +-1 +-3 +-1 +-3 +16 +-1 +-4 +-1 +1 +1 +3 +0 +-2 +-6 +-1 +1 +-1 +-3 +4 +-3 +-3 +-4 +4 +-2 +1 +2 +-3 +-1 +-2 +-1 +4 +0 +0 +20 +3 +5 +-4 +11 +0 +-3 +-4 +10 +-23 +-41 +15 +-24 +-45 +11 +-23 +-42 +23 +-16 +-31 +26 +-10 +-32 +22 +-15 +-25 +23 +-12 +-28 +40 +-2 +-20 +26 +-5 +-23 +25 +-13 +-28 +25 +-11 +-18 +48 +3 +-23 +27 +-11 +-29 +27 +-9 +-29 +26 +-9 +-29 +44 +2 +-16 +27 +-8 +-30 +29 +-8 +-28 +31 +-8 +-27 +34 +-7 +-23 +28 +-8 +-28 +33 +-5 +-18 +32 +-7 +-27 +30 +2 +-25 +40 +-2 +-27 +28 +-10 +-29 +27 +-9 +-28 +30 +-6 +-26 +32 +1 +-12 +30 +-10 +-27 +36 +-4 +-23 +33 +-7 +-24 +29 +-9 +-29 +36 +-4 +-13 +33 +-5 +-26 +41 +0 +-25 +27 +-11 +-30 +29 +-4 +-26 +28 +-6 +-16 +35 +-6 +-29 +33 +-6 +-19 +40 +-3 +-26 +33 +-6 +-28 +32 +-5 +-29 +30 +-9 +-27 +34 +-7 +-27 +30 +-9 +-22 +32 +-9 +-26 +29 +25 +30 +18 +14 +13 +14 +17 +11 +5 +5 +6 +4 +4 +7 +4 +3 +4 +4 +9 +0 +1 +0 +4 +11 +14 +0 +0 +4 +4 +-4 +-4 +10 +11 +1 +7 +-3 +7 +-4 +14 +-2 +1 +-1 +1 +-6 +-4 +0 +-3 +-5 +0 +7 +-5 +-7 +7 +2 +-3 +10 +0 +11 +-1 +-3 +-4 +0 +0 +5 +6 +-6 +-2 +-7 +-3 +-4 +-3 +-4 +9 +11 +-3 +-5 +-4 +-4 +-4 +-2 +1 +0 +-2 +-1 +16 +0 +-2 +4 +14 +5 +-5 +-2 +1 +-4 +-3 +-2 +-2 +-4 +6 +-1 +2 +2 +-2 +-4 +-2 +5 +-1 +12 +1 +-3 +2 +0 +-1 +0 +11 +-3 +-3 +-5 +0 +3 +4 +-5 +4 +-2 +9 +0 +12 +25 +-16 +-37 +6 +-29 +-43 +11 +-24 +-43 +18 +-17 +-37 +35 +-2 +-31 +23 +-12 +-30 +21 +-15 +-29 +29 +-10 +-22 +29 +-9 +-15 +40 +-3 +-27 +32 +-4 +-29 +26 +-10 +-30 +23 +-12 +-24 +37 +-5 +-15 +32 +-8 +-28 +30 +-2 +-26 +32 +-6 +-27 +45 +0 +-15 +33 +1 +-26 +39 +-4 +-29 +32 +-7 +-26 +34 +-7 +-23 +24 +-12 +-31 +30 +-7 +-24 +39 +-3 +-16 +30 +-10 +-23 +26 +-10 +-30 +27 +-10 +-24 +38 +-3 +-28 +41 +-2 +-14 +26 +-11 +-29 +30 +-9 +-22 +30 +-8 +-27 +26 +-1 +-24 +30 +-2 +-19 +35 +-7 +-27 +40 +-2 +-29 +26 +-11 +-30 +25 +-11 +-30 +41 +-2 +-27 +26 +-9 +-25 +35 +-6 +-27 +34 +3 +-11 +29 +-7 +-26 +27 +-1 +-15 +32 +-8 +-28 +26 +-4 +-19 +30 +-8 +-21 +19 +19 +26 +19 +17 +12 +10 +18 +18 +26 +8 +13 +9 +-1 +3 +-2 +-2 +-1 +19 +2 +1 +9 +-1 +7 +-1 +-2 +-7 +0 +3 +-3 +-5 +2 +1 +-2 +2 +-1 +-4 +10 +-3 +-3 +-2 +-2 +-5 +6 +15 +7 +-3 +1 +13 +3 +2 +3 +-3 +9 +9 +-4 +2 +-1 +-5 +1 +12 +-2 +-5 +1 +-7 +-2 +-1 +-5 +-3 +2 +-7 +-1 +1 +-4 +-2 +-3 +1 +15 +3 +1 +-5 +-1 +-5 +-2 +0 +2 +-3 +5 +9 +2 +-3 +-4 +-3 +-1 +-4 +-1 +5 +17 +1 +-3 +5 +15 +2 +-1 +4 +-3 +-1 +-3 +-6 +14 +4 +14 +-1 +-6 +2 +-5 +1 +-2 +-7 +-1 +-1 +1 +-5 +-2 +-5 +-2 +-2 +10 +-24 +20 +-19 +-44 +9 +-25 +-40 +23 +-16 +-32 +24 +-14 +-36 +24 +-13 +-33 +26 +-5 +-22 +33 +-5 +-25 +23 +-11 +-32 +26 +-7 +-19 +38 +-3 +-24 +27 +-10 +-31 +34 +-2 +-25 +27 +-10 +-24 +25 +-10 +-28 +31 +-2 +-20 +34 +-5 +-28 +43 +1 +-26 +25 +-11 +-17 +39 +-4 +-20 +25 +-10 +-29 +27 +-10 +-16 +41 +-1 +-28 +43 +-1 +-27 +24 +-4 +-13 +27 +-12 +-27 +24 +-10 +-23 +26 +-10 +-30 +32 +-7 +-24 +32 +-4 +-27 +44 +1 +-19 +33 +-8 +-28 +35 +-2 +-28 +29 +-10 +-17 +30 +-8 +-28 +35 +-6 +-29 +27 +-7 +-30 +27 +-11 +-27 +29 +-9 +-28 +32 +-5 +-26 +26 +-5 +-12 +42 +5 +-15 +31 +-7 +-31 +29 +-7 +-29 +37 +-3 +-14 +31 +-9 +-26 +29 +-8 +-10 +30 +-9 +-30 +29 +1 +15 +30 +17 +22 +13 +13 +6 +19 +14 +13 +11 +10 +4 +1 +14 +3 +-2 +6 +12 +6 +-1 +-4 +-2 +-3 +-4 +-2 +0 +-3 +5 +18 +4 +0 +6 +5 +5 +-5 +1 +-6 +-5 +1 +-2 +5 +9 +13 +6 +-3 +2 +9 +-3 +-7 +-6 +7 +-2 +-6 +-5 +-5 +-3 +-4 +4 +-3 +-2 +5 +1 +18 +-1 +-1 +-8 +-5 +-5 +8 +1 +-1 +10 +1 +-1 +-3 +13 +5 +-6 +-5 +-7 +0 +-4 +6 +4 +13 +2 +-6 +-4 +-1 +-5 +4 +-4 +10 +-2 +-4 +0 +-3 +-5 +2 +-3 +3 +-3 +2 +-2 +0 +-4 +-2 +-3 +0 +0 +1 +-2 +6 +-2 +-1 +0 +-2 +13 +5 +-2 +1 +1 +5 +-1 +6 +12 +5 +-30 +12 +-24 +-47 +18 +-18 +-36 +16 +-20 +-26 +28 +-12 +-34 +24 +-11 +-25 +26 +-12 +-34 +27 +-12 +-32 +33 +-6 +-25 +30 +-9 +-28 +29 +-9 +-26 +32 +-7 +-29 +27 +-9 +-29 +35 +-5 +-27 +29 +-8 +-25 +36 +-4 +-25 +31 +-8 +-27 +42 +4 +-21 +32 +-3 +-23 +28 +-9 +-28 +28 +-9 +-27 +46 +5 +-24 +29 +-1 +-23 +30 +-1 +-27 +36 +3 +-26 +27 +-11 +-22 +40 +-2 +-30 +25 +-13 +-27 +47 +2 +-23 +24 +-14 +-31 +40 +-3 +-28 +24 +-11 +-30 +35 +-5 +-29 +31 +-7 +-28 +28 +-8 +-21 +36 +-5 +-27 +28 +-7 +-29 +32 +-6 +-26 +34 +-6 +-26 +30 +-7 +-19 +39 +-2 +-26 +27 +-10 +-29 +28 +-1 +-21 +25 +-8 +-26 +33 +-6 +-14 +37 +-5 +-26 +24 +-10 +-25 +36 +0 +-24 +28 +-9 +17 +41 +27 +15 +12 +11 +10 +7 +7 +7 +7 +5 +13 +6 +14 +6 +14 +2 +-2 +-2 +3 +-1 +7 +-3 +-3 +-3 +-3 +14 +13 +17 +5 +1 +-6 +-7 +-6 +-2 +-3 +1 +1 +1 +12 +2 +-6 +1 +15 +1 +2 +-8 +0 +5 +10 +10 +-5 +3 +-6 +-8 +-4 +-3 +-3 +-8 +-5 +12 +3 +-5 +-5 +-5 +6 +0 +1 +5 +-5 +5 +14 +4 +0 +5 +-3 +-1 +-5 +-4 +5 +-3 +-2 +-4 +7 +2 +-4 +-1 +6 +-2 +-5 +-3 +-4 +-2 +-1 +7 +-2 +15 +13 +2 +-1 +-3 +-4 +-3 +-5 +5 +-3 +-2 +1 +-4 +-4 +2 +5 +9 +-3 +4 +-4 +3 +-4 +4 +6 +7 +1 +-4 +-2 +1 +1 +0 +9 +-27 +-48 +8 +-26 +-44 +15 +-10 +-33 +23 +-13 +-31 +22 +-15 +-29 +29 +-10 +-19 +41 +1 +-19 +26 +-13 +-28 +27 +-10 +-31 +30 +-10 +-30 +28 +-3 +-16 +27 +-12 +-30 +32 +-7 +-18 +28 +-10 +-26 +38 +-2 +-27 +27 +-9 +-25 +43 +5 +-22 +29 +-9 +-27 +25 +-12 +-31 +40 +0 +-19 +32 +-5 +-30 +24 +-12 +-23 +42 +3 +-23 +29 +-9 +-28 +23 +-11 +-30 +33 +-4 +-27 +26 +-10 +-26 +31 +-5 +-27 +33 +-5 +-26 +30 +-8 +-25 +32 +-6 +-27 +32 +-7 +-26 +31 +-7 +-18 +32 +-7 +-20 +34 +-2 +-15 +52 +6 +-23 +30 +-10 +-31 +33 +-8 +-20 +29 +-7 +-27 +25 +-8 +-28 +25 +-10 +-29 +32 +-4 +-25 +28 +-3 +-16 +36 +-1 +-26 +28 +0 +-24 +29 +-7 +-28 +31 +-7 +-28 +30 +-7 +-14 +31 +22 +20 +20 +17 +15 +12 +17 +12 +11 +5 +5 +11 +13 +17 +15 +9 +6 +-2 +-4 +0 +4 +-2 +3 +-3 +-2 +3 +8 +6 +-1 +8 +4 +-3 +0 +-5 +9 +9 +-1 +-5 +-3 +-4 +4 +-4 +1 +-1 +-2 +-1 +-1 +-3 +5 +-3 +15 +3 +-3 +9 +12 +11 +0 +-11 +-9 +-4 +-5 +2 +-4 +-3 +7 +14 +3 +5 +1 +-7 +-5 +0 +-4 +-1 +-1 +-7 +-5 +0 +2 +-2 +-1 +10 +-2 +4 +-1 +3 +-5 +11 +7 +-2 +-2 +-4 +3 +5 +11 +-2 +16 +-1 +-4 +-5 +-6 +-6 +-2 +-3 +0 +-2 +-4 +8 +1 +10 +-2 +-2 +1 +3 +-4 +-4 +13 +2 +-3 +2 +3 +3 +4 +2 +2 +5 +14 +-25 +12 +-25 +-47 +5 +-29 +-39 +18 +-19 +-35 +20 +-17 +-36 +24 +-14 +-28 +23 +-12 +-31 +33 +-7 +-23 +30 +-8 +-30 +44 +0 +-27 +37 +-2 +-26 +27 +-11 +-29 +28 +-8 +-28 +29 +-9 +-29 +36 +-3 +-22 +42 +1 +-26 +31 +3 +-26 +25 +-11 +-30 +27 +-10 +-25 +30 +-10 +-27 +32 +-1 +-26 +33 +-7 +-25 +28 +-9 +-29 +38 +-3 +-19 +34 +-5 +-27 +29 +-10 +-28 +30 +-6 +-26 +44 +0 +-23 +25 +-11 +-31 +37 +-4 +-27 +28 +-9 +-16 +29 +-10 +-27 +31 +-8 +-24 +44 +3 +-23 +24 +-1 +-27 +32 +-7 +-27 +31 +-7 +-25 +32 +-2 +-26 +29 +-9 +-29 +45 +1 +-24 +32 +-4 +-27 +32 +-6 +-29 +31 +-2 +-27 +26 +-10 +-28 +40 +4 +-25 +33 +-8 +-31 +29 +-9 +-29 +30 +-10 +-27 +31 +-5 +23 +27 +38 +20 +19 +19 +12 +11 +7 +5 +19 +7 +2 +1 +1 +4 +1 +0 +-1 +-2 +5 +18 +2 +5 +-3 +15 +12 +1 +0 +-3 +-7 +-2 +-1 +0 +-4 +1 +0 +7 +5 +0 +-4 +-1 +1 +-2 +2 +-1 +15 +1 +10 +-3 +4 +-4 +1 +-5 +-3 +-5 +-6 +-4 +-1 +2 +-1 +1 +-2 +2 +3 +-2 +-3 +4 +-5 +1 +1 +4 +0 +-5 +11 +8 +0 +-1 +1 +-3 +-6 +-4 +-4 +7 +7 +-1 +0 +-2 +8 +-1 +-1 +-1 +-2 +9 +2 +1 +-3 +16 +-1 +1 +-2 +8 +12 +17 +-3 +-6 +-7 +-6 +0 +-7 +-4 +-5 +-4 +5 +-2 +-1 +2 +-1 +-6 +13 +-1 +-3 +-4 +8 +12 +2 +-3 +2 +10 +-26 +-46 +10 +-26 +-42 +13 +-20 +-40 +31 +-9 +-18 +25 +-13 +-26 +30 +-9 +-29 +29 +-5 +-31 +38 +-4 +-28 +24 +-12 +-33 +29 +-8 +-27 +26 +-9 +-24 +39 +-2 +-24 +34 +-6 +-29 +34 +-7 +-21 +26 +-11 +-24 +26 +-12 +-11 +30 +-6 +-20 +28 +-11 +-28 +28 +0 +-18 +39 +-3 +-23 +29 +-10 +-20 +30 +-9 +-31 +36 +-4 +-30 +30 +-8 +-27 +39 +-3 +-28 +36 +-6 +-29 +23 +-7 +-29 +33 +-4 +-14 +31 +-7 +-15 +28 +-6 +-14 +32 +-3 +-28 +29 +-10 +-29 +37 +-4 +-22 +27 +-12 +-17 +30 +-8 +-31 +29 +-10 +-30 +25 +-11 +-16 +33 +-5 +-28 +30 +5 +-24 +31 +-8 +-25 +30 +-7 +-28 +30 +-3 +-26 +35 +-5 +-22 +39 +-3 +-24 +26 +-7 +-18 +39 +-3 +-26 +31 +-9 +-29 +40 +0 +-27 +18 +26 +27 +39 +17 +13 +6 +7 +21 +17 +7 +1 +3 +1 +10 +-1 +-3 +1 +-2 +0 +-4 +1 +-1 +-1 +0 +3 +12 +-1 +-4 +3 +-4 +1 +4 +1 +-1 +0 +-3 +14 +15 +2 +-5 +8 +1 +-4 +2 +1 +2 +12 +6 +11 +7 +0 +-8 +-4 +10 +4 +-3 +-7 +2 +8 +-6 +-5 +0 +-7 +4 +4 +-3 +1 +-3 +-5 +-4 +1 +7 +-5 +-1 +-4 +3 +-1 +18 +1 +-3 +11 +0 +-3 +11 +-1 +-5 +-1 +4 +-4 +-2 +-1 +-1 +7 +7 +9 +-2 +-7 +-7 +-9 +0 +-4 +-4 +0 +-3 +0 +-2 +-4 +-2 +15 +1 +-2 +-2 +13 +1 +1 +-1 +0 +-4 +-2 +-2 +-4 +6 +5 +7 +5 +-3 +-1 +8 +-27 +-45 +17 +-21 +-42 +14 +-20 +-39 +21 +-18 +-32 +26 +-12 +-20 +37 +-6 +-23 +24 +-13 +-29 +25 +-12 +-31 +26 +-10 +-18 +38 +-5 +-20 +24 +-13 +-31 +28 +-11 +-28 +30 +-7 +-29 +27 +1 +-23 +31 +-1 +-22 +38 +1 +-19 +26 +-9 +-28 +31 +-9 +-20 +30 +-8 +-20 +27 +-9 +-26 +26 +-11 +-27 +43 +1 +-25 +37 +-5 +-28 +26 +-12 +-30 +25 +-9 +-15 +37 +-5 +-27 +40 +1 +-25 +28 +-8 +-27 +32 +-6 +-29 +33 +-3 +-26 +31 +-3 +-24 +31 +-8 +-29 +27 +5 +-23 +28 +-1 +-9 +30 +-9 +-28 +35 +-4 +-28 +25 +-8 +-27 +31 +-6 +-28 +30 +-7 +-24 +42 +-1 +-26 +28 +-5 +-26 +26 +-11 +-28 +30 +-7 +-15 +43 +0 +-22 +29 +-9 +-30 +36 +-6 +-28 +47 +3 +-24 +33 +-9 +-30 +15 +18 +19 +19 +15 +20 +26 +30 +12 +15 +1 +14 +9 +1 +0 +1 +3 +-3 +-2 +16 +1 +-2 +-5 +4 +3 +5 +-4 +-3 +-4 +-4 +3 +-3 +14 +2 +-4 +-3 +0 +-2 +-4 +4 +-3 +-2 +4 +11 +7 +-3 +-4 +2 +-2 +1 +6 +0 +-1 +-3 +4 +10 +-3 +-1 +-2 +2 +-4 +-2 +4 +-3 +1 +-1 +-3 +-3 +4 +13 +18 +2 +0 +-2 +3 +-4 +6 +-4 +0 +0 +6 +-4 +-1 +0 +1 +3 +-1 +1 +11 +-3 +-2 +2 +9 +1 +2 +6 +9 +2 +-3 +-6 +-8 +9 +15 +-3 +0 +-4 +-5 +0 +-9 +-6 +1 +-7 +-1 +-2 +0 +-2 +-5 +11 +0 +-4 +-2 +-2 +-2 +-2 +5 +13 +0 +-3 +7 +-28 +-43 +12 +-25 +-43 +18 +-19 +-38 +18 +-16 +-34 +21 +-12 +-32 +27 +-6 +-27 +28 +-10 +-25 +37 +-5 +-26 +28 +-7 +-30 +27 +-10 +-29 +32 +-6 +-16 +30 +-7 +-28 +26 +-10 +-29 +35 +0 +-9 +44 +0 +-26 +30 +-6 +-27 +28 +-10 +-30 +26 +-2 +-19 +32 +-6 +-21 +29 +-9 +-21 +30 +-9 +-16 +43 +-1 +-26 +28 +-10 +-25 +30 +-10 +-27 +27 +-8 +-27 +30 +-9 +-25 +26 +-3 +-22 +48 +3 +-24 +31 +-7 +-31 +31 +-8 +-25 +40 +-2 +-27 +31 +-9 +-28 +25 +-11 +-30 +29 +-10 +-26 +32 +-1 +-24 +39 +0 +-22 +33 +-6 +-28 +34 +-7 +-25 +31 +-8 +-28 +30 +2 +-23 +32 +0 +-20 +33 +-2 +-27 +27 +-8 +-29 +29 +-10 +-29 +33 +-5 +-24 +31 +2 +-23 +38 +-3 +-23 +31 +-6 +-29 +18 +31 +26 +19 +15 +18 +20 +9 +8 +8 +7 +19 +10 +2 +8 +13 +3 +-2 +7 +-3 +0 +4 +0 +1 +-4 +-2 +-1 +6 +3 +-2 +-2 +-2 +9 +-1 +9 +2 +0 +-3 +-4 +-2 +11 +4 +10 +-4 +3 +-3 +-3 +3 +-1 +-4 +-2 +2 +-3 +-1 +0 +0 +-2 +4 +1 +1 +0 +-2 +4 +-1 +-2 +4 +-2 +2 +13 +17 +8 +6 +-3 +10 +-6 +2 +-4 +-7 +-6 +-2 +-1 +-3 +2 +5 +-3 +-5 +16 +1 +1 +12 +0 +-5 +1 +12 +-5 +7 +4 +-7 +-9 +-6 +-6 +2 +-3 +-1 +3 +-4 +-7 +-5 +1 +1 +-2 +-1 +-2 +2 +-2 +-3 +-1 +10 +-1 +0 +-2 +1 +-3 +2 +-2 +-1 +9 +0 +15 +-23 +-44 +11 +-26 +-41 +14 +-19 +-30 +17 +-18 +-33 +34 +-6 +-25 +24 +-8 +-29 +25 +-12 +-30 +32 +-8 +-25 +43 +0 +-24 +26 +-13 +-18 +30 +-6 +-26 +30 +-1 +-26 +26 +-10 +-28 +28 +-2 +-26 +39 +-1 +-25 +32 +-6 +-13 +27 +-7 +-28 +27 +-10 +-30 +30 +-4 +-23 +32 +-7 +-28 +30 +-7 +-27 +33 +-8 +-28 +43 +5 +-13 +39 +-4 +-29 +31 +-8 +-24 +25 +-13 +-30 +24 +-8 +-30 +29 +-5 +-27 +34 +-3 +-27 +31 +-6 +-27 +27 +-6 +-28 +29 +-8 +-25 +30 +-8 +-23 +31 +-7 +-18 +32 +1 +-10 +44 +-1 +-24 +29 +-8 +-29 +33 +-7 +-28 +41 +4 +-18 +25 +-6 +-23 +35 +-1 +-16 +36 +-7 +-29 +23 +-11 +-32 +28 +-10 +-27 +33 +0 +-26 +28 +-7 +-27 +26 +-9 +-28 +27 +-8 +-27 +21 +25 +24 +17 +17 +16 +23 +17 +16 +13 +10 +13 +8 +1 +1 +8 +3 +3 +9 +9 +3 +3 +16 +1 +-2 +1 +-3 +-3 +0 +-1 +-5 +3 +15 +-1 +-1 +-3 +6 +-3 +-1 +4 +-1 +5 +5 +-5 +-6 +-6 +-4 +-6 +0 +-5 +-1 +1 +0 +3 +6 +0 +-3 +0 +11 +10 +17 +1 +-1 +-2 +-6 +-7 +-5 +2 +-3 +-1 +-2 +-2 +-1 +0 +-1 +5 +-4 +1 +1 +0 +0 +-2 +1 +5 +-1 +-2 +-1 +2 +5 +-2 +2 +2 +-3 +-3 +3 +-3 +-2 +4 +6 +0 +-1 +1 +-1 +-2 +5 +3 +-2 +1 +8 +2 +7 +-1 +-5 +-1 +6 +-1 +-5 +-1 +15 +2 +-3 +1 +-3 +-5 +-4 +4 +0 +-2 +-33 +6 +-28 +-39 +19 +-19 +-40 +17 +-20 +-38 +35 +-6 +-32 +27 +-12 +-23 +26 +-10 +-28 +31 +-9 +-20 +27 +-11 +-30 +27 +-12 +-29 +29 +-7 +-29 +31 +-8 +-23 +41 +-1 +-21 +36 +-6 +-9 +31 +-7 +-19 +40 +-4 +-21 +34 +-5 +-29 +26 +-12 +-30 +35 +-5 +-28 +29 +-8 +-28 +29 +-8 +-27 +29 +-8 +-16 +30 +-10 +-29 +31 +-8 +-28 +28 +-1 +-25 +31 +-7 +-14 +41 +-1 +-20 +34 +-7 +-29 +26 +-11 +-25 +26 +-9 +-16 +38 +-4 +-28 +29 +-10 +-19 +32 +-7 +-26 +31 +-9 +-28 +30 +-5 +-27 +27 +-11 +-22 +38 +-3 +-27 +29 +-10 +-24 +41 +-1 +-27 +49 +3 +-25 +26 +-10 +-23 +32 +-8 +-31 +36 +-4 +-26 +27 +-10 +-28 +24 +-12 +-26 +41 +-2 +-25 +34 +-6 +-26 +33 +-6 +-23 +29 +-4 +14 +20 +29 +20 +10 +12 +11 +21 +15 +17 +12 +7 +1 +5 +2 +4 +-3 +7 +-2 +3 +6 +-2 +-3 +1 +2 +14 +18 +1 +-3 +4 +-2 +-4 +12 +14 +11 +0 +-5 +-8 +-3 +0 +0 +-4 +-7 +-1 +9 +0 +-3 +-5 +-4 +-1 +-5 +0 +18 +2 +5 +1 +7 +-4 +11 +-3 +-3 +-6 +-7 +-2 +-1 +-4 +-4 +14 +-2 +0 +1 +10 +3 +-2 +-4 +0 +2 +15 +-1 +-3 +-1 +1 +-4 +9 +3 +3 +6 +6 +5 +-6 +4 +-7 +1 +-7 +-7 +-3 +-3 +2 +0 +-3 +6 +2 +1 +-5 +1 +-4 +-3 +13 +15 +12 +-5 +-1 +-4 +0 +-6 +-6 +-1 +-4 +3 +-5 +-1 +-1 +2 +-4 +-3 +-2 +-1 +-2 +15 +-22 +-44 +9 +-21 +-37 +12 +-22 +-40 +19 +-17 +-34 +21 +-11 +-31 +45 +0 +-15 +28 +-10 +-31 +25 +-13 +-31 +31 +-6 +-29 +27 +-11 +-27 +29 +-7 +-29 +35 +-5 +-25 +31 +-1 +-22 +34 +-6 +-27 +41 +-1 +-14 +32 +-8 +-18 +43 +4 +-17 +24 +-11 +-28 +26 +-11 +-32 +28 +-9 +-22 +41 +-1 +-18 +35 +-7 +-28 +26 +-11 +-23 +40 +-3 +-19 +30 +-9 +-27 +28 +-12 +-29 +37 +-3 +-29 +26 +-11 +-30 +34 +-6 +-16 +28 +-10 +-28 +27 +-11 +-29 +31 +-8 +-22 +34 +-4 +-27 +32 +-7 +-27 +33 +-5 +-26 +39 +-2 +-24 +42 +2 +-26 +28 +-10 +-29 +30 +2 +-20 +41 +-2 +-28 +25 +-12 +-28 +26 +-6 +-23 +35 +-5 +-25 +35 +-4 +-22 +33 +-5 +-27 +33 +-7 +-15 +43 +0 +-24 +34 +-7 +-29 +15 +27 +21 +17 +22 +11 +18 +7 +10 +9 +7 +2 +11 +15 +11 +11 +11 +7 +-3 +-4 +-4 +-5 +0 +-3 +-3 +-1 +8 +1 +16 +1 +-1 +-4 +0 +-3 +-2 +-2 +1 +-3 +9 +2 +-2 +-3 +-5 +-2 +0 +8 +1 +-2 +1 +5 +-4 +12 +1 +0 +6 +-3 +-4 +-3 +-1 +-1 +2 +2 +6 +-2 +-3 +4 +0 +-1 +8 +-1 +3 +-2 +3 +17 +-1 +-1 +2 +-7 +1 +-3 +0 +-1 +1 +-2 +13 +-1 +-2 +8 +10 +-3 +-6 +-3 +-6 +1 +-1 +-1 +-1 +-5 +-7 +0 +5 +0 +-5 +1 +-4 +-2 +2 +5 +-2 +1 +2 +-2 +-1 +5 +-2 +-1 +-1 +1 +-1 +2 +-2 +18 +4 +13 +6 +9 +11 +-2 +-35 +1 +-32 +-42 +24 +-12 +-39 +17 +-17 +-38 +16 +-19 +-24 +28 +-12 +-32 +35 +-6 +-29 +27 +-13 +-30 +26 +-11 +-30 +29 +-10 +-17 +44 +3 +-26 +22 +-10 +-30 +26 +-11 +-28 +36 +-6 +-23 +28 +-5 +-22 +47 +2 +-25 +27 +-8 +-23 +25 +-11 +-29 +33 +0 +-24 +25 +-4 +-27 +43 +0 +-27 +26 +-8 +-28 +25 +-5 +-19 +39 +1 +-12 +29 +-8 +-29 +30 +-9 +-31 +26 +0 +-26 +26 +-8 +-27 +38 +0 +-25 +35 +-7 +-29 +36 +-3 +-15 +30 +-9 +-29 +28 +-10 +-29 +34 +-7 +-29 +32 +-7 +-28 +30 +-9 +-25 +29 +-7 +-22 +32 +-6 +-25 +29 +-6 +-28 +29 +-7 +-17 +38 +-1 +-26 +38 +-2 +-23 +24 +-12 +-27 +29 +-9 +-27 +35 +-6 +-26 +45 +1 +-25 +35 +-4 +-29 +29 +-11 +-29 +33 +-6 +10 +38 +23 +17 +16 +15 +10 +21 +16 +23 +11 +9 +-1 +4 +5 +2 +-2 +9 +0 +-4 +5 +3 +-3 +-5 +-4 +-2 +9 +-2 +3 +-1 +-1 +-2 +4 +7 +-1 +-3 +-3 +3 +12 +-2 +9 +-1 +4 +-3 +-3 +5 +-4 +-1 +5 +0 +-4 +13 +-2 +-5 +-5 +-3 +-1 +7 +0 +-1 +12 +3 +13 +1 +9 +5 +-4 +-10 +2 +-2 +-3 +-5 +11 +0 +-5 +-6 +4 +-5 +-2 +8 +-3 +15 +0 +2 +-6 +-3 +-5 +-3 +-4 +-4 +3 +2 +-6 +10 +2 +5 +6 +2 +-5 +-3 +2 +-5 +-4 +-3 +5 +8 +-5 +6 +-3 +-1 +5 +0 +-2 +-6 +4 +0 +1 +0 +8 +-2 +-3 +15 +1 +-3 +-3 +-3 +14 +0 +10 +-27 +-50 +6 +-26 +-38 +14 +-21 +-39 +28 +-6 +-30 +28 +-10 +-34 +28 +-10 +-31 +36 +1 +-25 +22 +-16 +-29 +22 +-9 +-30 +27 +-9 +-29 +28 +-4 +-27 +35 +-5 +-20 +30 +-7 +-25 +28 +-9 +-24 +29 +-8 +-25 +47 +2 +-23 +29 +1 +-17 +35 +-5 +-24 +42 +-1 +-27 +26 +-13 +-30 +26 +-10 +-24 +40 +-3 +-27 +33 +-6 +-26 +30 +-2 +-28 +27 +-6 +-22 +33 +0 +-25 +33 +-4 +-28 +24 +-11 +-26 +30 +-5 +-24 +31 +-6 +-20 +28 +-10 +-27 +43 +1 +-24 +44 +1 +-25 +42 +-2 +-26 +29 +-10 +-29 +24 +-14 +-27 +32 +-8 +-28 +29 +-9 +-28 +28 +-9 +-26 +34 +-7 +-24 +37 +-4 +-27 +34 +-3 +-14 +30 +-8 +-22 +39 +-4 +-27 +26 +-9 +-22 +30 +-10 +-29 +34 +0 +-19 +27 +-11 +-29 +17 +40 +23 +23 +15 +30 +14 +10 +22 +17 +7 +3 +3 +3 +0 +7 +16 +1 +-2 +6 +-4 +8 +-3 +-1 +-2 +-3 +2 +6 +7 +3 +5 +-3 +8 +-3 +-3 +0 +-4 +-2 +0 +5 +-3 +-3 +-4 +13 +0 +0 +-2 +-3 +7 +17 +-1 +15 +-2 +0 +-8 +-7 +-6 +-1 +9 +-3 +-4 +7 +-3 +-2 +-5 +6 +6 +1 +4 +-5 +-3 +-3 +-1 +13 +-1 +1 +-3 +3 +-2 +-5 +-3 +0 +-3 +1 +-4 +-1 +1 +-2 +4 +14 +8 +-4 +-5 +-2 +1 +1 +3 +11 +11 +3 +2 +-6 +-4 +-4 +-2 +2 +-5 +-3 +-2 +-1 +-2 +0 +-1 +3 +9 +2 +-3 +-5 +11 +1 +-3 +1 +-2 +7 +7 +4 +0 +-4 +9 +-27 +-47 +18 +-20 +-43 +19 +-18 +-35 +23 +-16 +-28 +20 +-14 +-34 +30 +-9 +-31 +28 +-9 +-31 +29 +-10 +-19 +37 +-4 +-27 +26 +-11 +-25 +26 +-7 +-29 +43 +5 +-19 +27 +-10 +-28 +26 +-12 +-27 +28 +1 +-20 +27 +-11 +-24 +26 +-7 +-25 +38 +-4 +-27 +30 +-1 +-26 +31 +-7 +-27 +32 +-6 +-27 +38 +-2 +-22 +49 +4 +-17 +26 +-11 +-19 +27 +-11 +-28 +32 +-6 +-27 +24 +-10 +-16 +39 +-3 +-28 +47 +3 +-25 +29 +-6 +-27 +22 +-10 +-31 +36 +-6 +-26 +23 +-12 +-31 +26 +-4 +-11 +35 +-5 +-29 +28 +-5 +-25 +42 +5 +-24 +25 +-9 +-23 +25 +-10 +-28 +28 +-9 +-25 +30 +-7 +-27 +28 +1 +-23 +37 +-4 +-23 +27 +-8 +-29 +30 +-8 +-13 +31 +-8 +-27 +28 +-9 +-27 +42 +0 +-14 +36 +29 +21 +18 +17 +13 +21 +10 +8 +8 +5 +7 +7 +13 +2 +6 +-1 +0 +3 +18 +14 +3 +-5 +-3 +-3 +-4 +7 +-2 +7 +0 +-5 +-3 +-2 +-1 +1 +4 +2 +-2 +-6 +0 +0 +3 +-3 +1 +17 +2 +7 +1 +-3 +-5 +3 +-4 +16 +1 +2 +-6 +-5 +-5 +10 +13 +-2 +-6 +-2 +2 +-4 +-1 +1 +0 +-1 +-2 +13 +-1 +-3 +-7 +-7 +7 +1 +-5 +14 +11 +2 +-2 +-6 +-4 +2 +-1 +-3 +-1 +0 +11 +-2 +-1 +-5 +-3 +-2 +-4 +-1 +1 +-3 +1 +16 +1 +11 +11 +8 +-5 +-3 +5 +-1 +-2 +-6 +-8 +-5 +0 +-4 +12 +0 +-3 +-1 +-2 +-5 +-2 +0 +14 +8 +0 +-5 +-2 +9 +-27 +-50 +12 +-24 +-41 +12 +-23 +-38 +21 +-11 +-17 +24 +-13 +-33 +29 +-8 +-28 +40 +-1 +-29 +26 +-11 +-32 +27 +-7 +-27 +36 +-6 +-29 +27 +-6 +-25 +26 +-9 +-28 +30 +-2 +-26 +29 +-7 +-19 +34 +-6 +-26 +32 +-8 +-27 +30 +-8 +-27 +45 +3 +-20 +49 +4 +-21 +23 +-7 +-29 +28 +-11 +-27 +38 +-4 +-16 +30 +-9 +-25 +40 +-3 +-25 +25 +-12 +-32 +26 +-11 +-22 +32 +-8 +-17 +42 +-2 +-13 +27 +-11 +-32 +25 +-13 +-30 +26 +-7 +-22 +30 +-3 +-24 +34 +-1 +-27 +43 +7 +-22 +34 +-6 +-22 +32 +-10 +-18 +32 +-8 +-29 +37 +2 +-24 +27 +-11 +-33 +26 +-9 +-28 +26 +-10 +-28 +32 +-7 +-23 +42 +0 +-27 +26 +-12 +-31 +35 +1 +-24 +27 +-9 +-29 +27 +-9 +-28 +27 +-8 +-26 +23 +44 +27 +22 +16 +13 +12 +16 +26 +12 +11 +1 +15 +12 +18 +0 +-2 +4 +2 +5 +-4 +-2 +-2 +-1 +-4 +0 +9 +-2 +3 +1 +-3 +8 +-1 +-5 +-1 +-2 +1 +-5 +1 +7 +-3 +10 +-2 +-3 +-2 +-1 +9 +8 +-2 +-4 +5 +2 +-4 +-2 +-2 +-4 +-4 +13 +8 +-2 +-3 +16 +1 +-4 +-3 +-3 +2 +-5 +13 +-1 +-3 +1 +-4 +-5 +-1 +2 +6 +11 +-2 +-1 +-3 +7 +1 +1 +2 +-5 +-4 +7 +0 +0 +6 +-1 +-1 +5 +-2 +1 +0 +-1 +-7 +13 +0 +5 +-3 +-7 +-5 +-2 +16 +1 +-4 +12 +4 +-1 +-6 +4 +6 +-4 +8 +3 +-7 +-6 +4 +-2 +-6 +-4 +0 +8 +9 +-5 +13 +-24 +-47 +7 +-29 +-47 +14 +-17 +-38 +22 +-9 +-31 +26 +-7 +-32 +23 +-13 +-30 +36 +-4 +-28 +33 +4 +-25 +32 +-8 +-24 +25 +-11 +-29 +26 +-11 +-30 +26 +-12 +-25 +29 +-6 +-26 +32 +-7 +-27 +34 +-6 +-26 +34 +-4 +-14 +44 +0 +-25 +26 +-8 +-31 +29 +-9 +-28 +29 +-5 +-27 +30 +-7 +-29 +31 +-5 +-27 +30 +-4 +-17 +38 +-4 +-23 +29 +-9 +-22 +31 +-4 +-27 +46 +2 +-26 +28 +-11 +-29 +28 +-10 +-25 +34 +-7 +-26 +36 +-5 +-25 +28 +-2 +-26 +32 +-6 +-18 +28 +-11 +-25 +33 +-5 +-28 +33 +-3 +-23 +27 +-9 +-24 +27 +2 +-25 +34 +-3 +-26 +27 +-11 +-23 +32 +-5 +-28 +29 +-10 +-28 +29 +-7 +-25 +32 +3 +-23 +31 +-6 +-24 +34 +-7 +-26 +31 +-2 +-26 +33 +-5 +-25 +20 +31 +41 +23 +16 +12 +17 +14 +23 +8 +14 +7 +12 +11 +-2 +8 +8 +-3 +2 +0 +0 +6 +-2 +-7 +-4 +4 +-2 +-1 +14 +-1 +1 +-4 +3 +-3 +10 +4 +-2 +0 +-4 +-4 +4 +12 +-1 +5 +-4 +-3 +5 +7 +5 +3 +-6 +4 +-6 +-4 +-5 +-5 +-3 +-2 +-1 +2 +-2 +-3 +-3 +-5 +7 +8 +5 +2 +-2 +4 +-3 +-2 +-4 +9 +-1 +0 +2 +2 +-2 +1 +2 +-2 +18 +2 +9 +5 +-4 +1 +-2 +4 +-2 +-5 +-7 +-6 +2 +2 +-5 +2 +2 +10 +-2 +1 +-2 +2 +-4 +-5 +1 +0 +5 +0 +8 +4 +1 +-4 +6 +2 +0 +-4 +-3 +0 +5 +-2 +-5 +-3 +-3 +7 +-2 +-3 +7 +-28 +-41 +7 +-28 +-46 +25 +-13 +-38 +19 +-12 +-33 +21 +-9 +-25 +35 +-8 +-31 +32 +-7 +-30 +29 +-11 +-30 +26 +-12 +-31 +33 +-6 +-16 +29 +-1 +-20 +36 +-6 +-28 +26 +-10 +-23 +37 +-5 +-21 +31 +-7 +-29 +30 +-9 +-28 +36 +-1 +-24 +46 +2 +-26 +26 +-7 +-16 +27 +-11 +-30 +24 +-12 +-29 +30 +-8 +-24 +29 +-8 +-27 +46 +2 +-18 +32 +-7 +-21 +27 +-4 +-20 +28 +-8 +-22 +41 +-1 +-18 +32 +-8 +-31 +30 +-10 +-27 +29 +-10 +-30 +36 +-6 +-27 +40 +0 +-21 +27 +-10 +-29 +23 +-4 +-26 +38 +-1 +-26 +35 +-5 +-28 +30 +-9 +-21 +27 +-11 +-29 +37 +-5 +-15 +28 +-9 +-24 +26 +-9 +-19 +33 +-1 +-27 +36 +-6 +-27 +31 +-8 +-29 +26 +-9 +-25 +31 +-2 +-25 +36 +-5 +-20 +19 +24 +22 +20 +24 +25 +11 +19 +8 +20 +8 +7 +3 +6 +4 +4 +1 +0 +-1 +0 +6 +5 +-1 +15 +4 +-2 +2 +1 +-3 +11 +11 +-3 +-1 +2 +9 +-1 +-6 +-3 +-4 +-2 +2 +-4 +2 +11 +0 +-2 +2 +-3 +-5 +-5 +-4 +-2 +5 +1 +10 +-2 +5 +6 +2 +5 +0 +0 +-5 +-5 +-6 +1 +-1 +3 +-4 +4 +-1 +12 +5 +-5 +-4 +-5 +-2 +14 +4 +12 +7 +2 +7 +3 +-8 +-6 +-2 +-1 +-4 +-2 +7 +-5 +-3 +-5 +-5 +-2 +13 +1 +4 +-1 +-5 +11 +6 +8 +6 +-6 +2 +-3 +6 +-2 +3 +1 +2 +0 +-3 +-6 +-5 +7 +-3 +-5 +12 +0 +2 +-4 +-9 +7 +-4 +-6 +8 +-27 +-50 +8 +-24 +-43 +22 +-11 +-36 +23 +-16 +-34 +21 +-13 +-35 +27 +-5 +-28 +29 +-8 +-28 +29 +-10 +-29 +33 +-6 +-26 +32 +-8 +-24 +26 +-11 +-27 +33 +-3 +-24 +27 +-7 +-26 +29 +-9 +-24 +29 +-8 +-10 +35 +-6 +-22 +36 +-4 +-28 +29 +-9 +-28 +44 +7 +-21 +28 +-11 +-27 +46 +3 +-19 +29 +-11 +-26 +28 +-8 +-17 +27 +-10 +-29 +30 +-9 +-24 +40 +-3 +-23 +29 +-10 +-29 +30 +-8 +-28 +40 +0 +-15 +29 +-11 +-31 +35 +-2 +-29 +38 +-4 +-25 +23 +-11 +-29 +27 +-10 +-28 +33 +-6 +-15 +38 +-4 +-27 +28 +-9 +-30 +30 +-7 +-29 +27 +-9 +-23 +40 +-1 +-21 +40 +5 +-24 +26 +-9 +-27 +38 +-4 +-26 +25 +-12 +-28 +27 +-10 +-24 +31 +-4 +-24 +29 +-8 +-26 +31 +1 +-24 +36 +24 +24 +19 +18 +16 +12 +14 +15 +12 +12 +11 +24 +5 +6 +-1 +-1 +15 +2 +-2 +8 +-1 +-6 +4 +0 +-3 +0 +-1 +0 +6 +-4 +-3 +1 +6 +1 +-1 +1 +3 +-3 +-4 +3 +5 +5 +1 +6 +6 +-5 +-3 +3 +5 +-4 +6 +6 +-1 +10 +-3 +-1 +-6 +-2 +-2 +-5 +0 +5 +-4 +-1 +5 +10 +7 +-1 +2 +-4 +-3 +13 +-1 +1 +-2 +-3 +-3 +-6 +-3 +1 +7 +-2 +3 +-4 +-4 +-5 +-2 +-4 +4 +-3 +-3 +-4 +0 +-2 +3 +9 +1 +10 +3 +1 +4 +14 +1 +-3 +0 +-4 +-3 +1 +0 +17 +0 +-5 +-4 +-2 +-3 +3 +-1 +-4 +3 +-4 +4 +-4 +9 +2 +-2 +-4 +17 +13 +-23 +-47 +5 +-29 +-43 +12 +-22 +-40 +21 +-11 +-20 +22 +-8 +-29 +23 +-10 +-30 +24 +-12 +-19 +28 +-11 +-18 +29 +-9 +-28 +29 +-6 +-27 +30 +-8 +-24 +32 +-7 +-27 +33 +-5 +-27 +31 +-8 +-27 +34 +-4 +-27 +46 +2 +-21 +42 +-1 +-27 +26 +-7 +-23 +26 +-11 +-25 +38 +-1 +-27 +27 +-10 +-29 +30 +-9 +-24 +29 +-8 +-17 +38 +-1 +-23 +26 +-10 +-18 +45 +1 +-27 +42 +-1 +-14 +28 +-7 +-23 +33 +-5 +-27 +32 +-6 +-25 +32 +-6 +-18 +41 +0 +-29 +22 +-14 +-29 +30 +-10 +-32 +26 +-9 +-25 +28 +-11 +-31 +29 +-6 +-23 +33 +-6 +-28 +27 +-11 +-29 +33 +-3 +-24 +33 +-6 +-26 +31 +-5 +-13 +37 +-4 +-28 +28 +-10 +-27 +27 +-5 +-23 +31 +1 +-24 +29 +-5 +-14 +39 +-4 +-29 +17 +21 +18 +29 +22 +15 +10 +12 +11 +7 +3 +11 +15 +6 +9 +3 +1 +3 +3 +3 +3 +5 +2 +-1 +0 +0 +5 +1 +0 +6 +5 +-1 +1 +3 +3 +5 +4 +2 +-1 +-3 +11 +-2 +-3 +1 +7 +-3 +6 +0 +-4 +-1 +-6 +3 +2 +-2 +-3 +5 +14 +9 +2 +-4 +6 +12 +-1 +-9 +-1 +2 +-4 +-1 +-2 +8 +-1 +-5 +5 +-5 +-4 +-2 +-5 +-4 +5 +4 +-4 +-4 +2 +-3 +-4 +-2 +-4 +1 +-1 +6 +-4 +-4 +-4 +15 +0 +2 +-3 +-2 +-3 +8 +1 +-2 +0 +15 +2 +-3 +-1 +1 +2 +12 +-3 +-6 +-5 +-3 +7 +0 +4 +16 +14 +0 +-3 +-7 +-4 +1 +-4 +-2 +-4 +1 +16 +-22 +-46 +22 +-16 +-31 +24 +-16 +-41 +15 +-21 +-40 +16 +-18 +-36 +39 +-4 +-28 +26 +-12 +-31 +23 +-13 +-31 +44 +1 +-26 +37 +-1 +-23 +27 +-10 +-28 +26 +-12 +-27 +26 +-4 +-24 +45 +2 +-25 +29 +-4 +-27 +26 +-11 +-12 +29 +-10 +-29 +26 +-10 +-30 +38 +4 +-14 +38 +-5 +-27 +26 +-10 +-27 +29 +-10 +-31 +33 +-4 +-23 +26 +-11 +-27 +32 +2 +-15 +31 +-9 +-20 +28 +-9 +-29 +32 +-4 +-27 +37 +-4 +-28 +26 +-10 +-25 +31 +-6 +-24 +27 +-4 +-27 +29 +-7 +-20 +33 +-7 +-25 +35 +-4 +-26 +27 +-6 +-21 +36 +-2 +-26 +27 +-10 +-19 +31 +-7 +-26 +44 +0 +-26 +28 +-10 +-27 +28 +-3 +-26 +31 +-8 +-25 +30 +-6 +-22 +31 +-7 +-28 +33 +-7 +-22 +27 +-6 +-26 +34 +-6 +-25 +22 +28 +28 +21 +26 +37 +16 +11 +5 +6 +16 +3 +3 +2 +8 +11 +1 +12 +-1 +-2 +2 +3 +2 +7 +3 +0 +4 +1 +1 +-4 +-3 +14 +3 +-3 +9 +14 +-3 +-1 +0 +6 +-7 +3 +-5 +2 +-5 +-5 +-6 +-5 +-4 +4 +2 +-2 +-2 +-3 +1 +5 +-2 +-1 +-2 +-3 +4 +1 +4 +4 +5 +-3 +7 +3 +-4 +1 +-2 +11 +10 +-1 +-3 +-1 +-1 +0 +-4 +-1 +-5 +-1 +-2 +3 +-1 +-1 +-2 +-1 +-2 +10 +3 +-1 +11 +1 +6 +-4 +-3 +-3 +-3 +-3 +0 +-2 +-3 +-1 +6 +3 +-3 +-3 +4 +-1 +6 +-1 +-4 +-4 +0 +3 +10 +1 +0 +11 +2 +-2 +-2 +-2 +1 +1 +2 +-5 +10 +-26 +-46 +16 +-20 +-43 +11 +-20 +-38 +19 +-18 +-28 +28 +-10 +-33 +28 +-10 +-27 +30 +-5 +-16 +35 +-7 +-29 +30 +-8 +-30 +29 +0 +-24 +42 +0 +-24 +29 +-6 +-30 +28 +-9 +-29 +34 +-7 +-25 +29 +-10 +-29 +34 +-4 +-26 +34 +-6 +-29 +38 +-2 +-27 +36 +-4 +-29 +40 +-3 +-14 +32 +-5 +-27 +26 +-10 +-31 +26 +-9 +-29 +29 +-9 +-27 +31 +-6 +-27 +28 +-6 +-27 +30 +-7 +-18 +49 +4 +-24 +26 +-8 +-29 +26 +-10 +-20 +28 +0 +-22 +36 +-6 +-28 +32 +-5 +-28 +35 +1 +-19 +26 +-10 +-29 +27 +-6 +-26 +29 +-7 +-21 +41 +-2 +-26 +35 +-4 +-25 +27 +-11 +-17 +39 +-1 +-28 +27 +-12 +-16 +33 +-7 +-24 +36 +-2 +-26 +40 +6 +-25 +24 +-14 +-18 +27 +-11 +-27 +30 +-10 +-30 +23 +20 +21 +21 +18 +11 +21 +13 +7 +7 +14 +5 +19 +24 +4 +8 +-3 +-2 +-2 +-4 +-2 +2 +-2 +0 +0 +12 +12 +-1 +-2 +-3 +1 +-5 +0 +-1 +2 +5 +-5 +-5 +-4 +0 +-2 +1 +1 +8 +16 +6 +-2 +-4 +1 +7 +14 +-2 +-4 +-2 +2 +-2 +2 +14 +1 +-4 +-6 +-4 +-1 +-3 +3 +1 +-2 +3 +-3 +1 +-4 +-4 +-3 +4 +-1 +0 +-3 +0 +5 +1 +-2 +12 +9 +7 +-4 +0 +1 +1 +1 +4 +6 +18 +0 +4 +-3 +-6 +0 +-2 +-1 +13 +-3 +-2 +-7 +-5 +2 +7 +-6 +-2 +-3 +-5 +1 +-4 +-4 +0 +-4 +1 +-2 +-3 +-2 +2 +5 +-1 +4 +10 +-3 +1 +1 +15 +-24 +15 +-22 +-46 +10 +-25 +-45 +13 +-9 +-34 +19 +-10 +-32 +22 +-14 +-32 +27 +-6 +-29 +31 +-7 +-27 +27 +-10 +-29 +34 +1 +-25 +30 +-9 +-30 +33 +-4 +-27 +31 +-8 +-29 +32 +-8 +-24 +32 +-7 +-27 +46 +2 +-24 +29 +-9 +-31 +32 +-2 +-11 +34 +-2 +-20 +26 +-12 +-31 +25 +-10 +-30 +28 +-9 +-25 +28 +-6 +-21 +39 +-3 +-24 +32 +-7 +-25 +37 +-5 +-27 +27 +-8 +-29 +30 +-4 +-13 +40 +2 +-23 +31 +-10 +-30 +29 +-5 +-28 +27 +-6 +-28 +27 +-5 +-16 +31 +-9 +-25 +32 +-7 +-20 +37 +-4 +-21 +28 +-10 +-30 +30 +-6 +-28 +27 +-10 +-16 +41 +-3 +-26 +28 +-8 +-26 +39 +-4 +-20 +27 +-8 +-29 +31 +-9 +-28 +30 +-9 +-29 +32 +-5 +-24 +40 +-2 +-25 +28 +-7 +-28 +28 +-7 +18 +24 +22 +26 +21 +34 +14 +10 +4 +2 +3 +5 +5 +13 +10 +0 +0 +3 +0 +1 +-1 +3 +17 +1 +0 +9 +-3 +2 +3 +-4 +0 +0 +-1 +5 +1 +1 +0 +-3 +1 +-3 +-1 +-1 +2 +7 +-3 +-1 +-1 +6 +13 +8 +-3 +-2 +14 +11 +4 +3 +-2 +-3 +-4 +0 +4 +0 +-7 +-1 +-3 +9 +-5 +2 +5 +16 +-3 +-8 +-8 +-2 +-3 +0 +3 +-1 +-3 +-3 +8 +9 +7 +8 +5 +-2 +-4 +-6 +4 +8 +2 +-2 +-7 +5 +0 +-6 +-7 +-4 +-5 +-3 +-3 +-1 +7 +4 +-1 +3 +-3 +16 +1 +-3 +9 +4 +-3 +-4 +-4 +10 +4 +-4 +-3 +-2 +-5 +0 +-5 +-2 +2 +-2 +-4 +-3 +11 +-26 +-47 +9 +-22 +-41 +15 +-20 +-37 +20 +-16 +-33 +29 +-10 +-32 +25 +-7 +-28 +30 +-7 +-19 +33 +0 +-19 +28 +-11 +-14 +30 +-10 +-29 +25 +-11 +-21 +28 +-10 +-23 +37 +-3 +-27 +37 +0 +-13 +36 +-2 +-29 +29 +-10 +-28 +26 +-7 +-26 +26 +-12 +-25 +27 +-10 +-26 +30 +-1 +-26 +34 +-6 +-27 +32 +-5 +-24 +30 +-5 +-27 +39 +-2 +-26 +28 +-9 +-26 +44 +0 +-26 +34 +-3 +-23 +29 +-9 +-27 +37 +-3 +-24 +38 +-4 +-28 +37 +-3 +-29 +46 +1 +-25 +22 +-12 +-32 +34 +-8 +-28 +29 +-9 +-28 +32 +-6 +-29 +29 +-3 +-19 +30 +-8 +-26 +42 +7 +-23 +28 +-11 +-31 +29 +-3 +-26 +34 +-7 +-29 +35 +-2 +-23 +27 +-10 +-28 +33 +-6 +-30 +30 +-2 +-25 +30 +-6 +-28 +30 +-6 +-26 +32 +-7 +-17 +33 +-6 +-27 +27 +-9 +-27 +34 +-6 +-23 +31 +-7 +-25 +30 +-8 +-27 +31 +-3 +-15 +30 +-8 +-27 +37 +1 +-25 +26 +-2 +-23 +28 +-7 +-24 +34 +3 +-23 +29 +-8 +-29 +30 +-9 +-27 +30 +-4 +-26 +31 +3 +-14 +29 +-8 +-28 +29 +-6 +-23 +42 +0 +-22 +28 +-9 +-29 +32 +0 +-26 +36 +-6 +-27 +37 +-4 +-26 +35 +-7 +-26 +31 +-5 +-24 +30 +-9 +-27 +36 +-5 +-27 +31 +-6 +-27 +32 +-7 +-25 +33 +-7 +-17 +31 +-7 +-18 +29 +-1 +-26 +33 +-7 +-14 +30 +-5 +-18 +25 +-7 +-21 +25 +-13 +-28 +26 +-10 +-28 +31 +-7 +-27 +32 +-1 +-25 +28 +-9 +-27 +34 +-4 +-12 +30 +-2 +-25 +31 +-7 +-29 +29 +-9 +-26 +50 +4 +-24 +28 +-10 +-25 +35 +-5 +-23 +37 +-1 +-19 +19 +18 +20 +15 +19 +14 +9 +19 +7 +13 +4 +2 +3 +9 +4 +5 +0 +2 +0 +-1 +2 +1 +3 +3 +14 +7 +10 +9 +3 +-2 +6 +-5 +-3 +-1 +-2 +11 +-3 +-2 +-3 +-3 +5 +-2 +0 +-2 +-2 +6 +-2 +-2 +-1 +2 +0 +2 +0 +1 +3 +0 +18 +3 +-3 +-4 +-1 +-1 +-5 +-1 +12 +2 +-4 +1 +2 +-3 +-4 +-3 +1 +6 +8 +9 +1 +-5 +-6 +-4 +0 +-1 +-1 +-4 +-1 +-1 +13 +10 +1 +12 +-1 +-5 +-8 +12 +5 +-4 +-7 +-8 +5 +3 +-5 +-4 +3 +-2 +13 +20 +0 +-5 +-6 +0 +0 +-3 +-1 +-3 +5 +-2 +2 +0 +1 +0 +15 +0 +-5 +0 +-6 +-5 +7 +-5 +-2 +7 +-4 +15 +0 +-3 +-1 +-6 +-6 +-3 +-1 +-1 +-1 +10 +11 +-2 +-5 +1 +-5 +2 +0 +-2 +9 +17 +8 +-4 +-5 +-2 +-2 +1 +-5 +-3 +-4 +-3 +-2 +3 +14 +13 +3 +-5 +-1 +11 +4 +-5 +-1 +-3 +-6 +-5 +-3 +-2 +-6 +-2 +-2 +-1 +-1 +10 +2 +-2 +-4 +2 +3 +-2 +-5 +2 +2 +-1 +-1 +0 +12 +0 +2 +13 +7 +-2 +5 +2 +-4 +-5 +-3 +1 +-5 +-3 +2 +2 +7 +-1 +-3 +13 +0 +0 +-4 +-3 +-2 +-4 +2 +0 +-3 +1 +-2 +7 +13 +1 +-5 +-6 +3 +5 +-2 +-5 +1 +2 +0 +-3 +13 +-1 +-1 +0 +-5 +-2 +0 +0 +-4 +-4 +16 +5 +12 +1 +-4 +4 +11 +-26 +-49 +21 +-14 +-41 +8 +-22 +-42 +15 +-21 +-37 +18 +-14 +-34 +32 +-8 +-29 +34 +-4 +-12 +29 +-5 +-29 +24 +-10 +-26 +36 +1 +-25 +28 +-7 +-26 +33 +-3 +-11 +28 +-10 +-32 +29 +-10 +-30 +29 +-4 +-27 +27 +-5 +-28 +29 +-9 +-24 +42 +5 +-15 +27 +0 +-26 +27 +-10 +-29 +28 +-3 +-28 +30 +-9 +-29 +32 +-6 +-13 +29 +-10 +-26 +30 +-7 +-30 +27 +-10 +-22 +33 +-5 +-27 +33 +-7 +-26 +29 +-9 +-27 +31 +-5 +-22 +42 +0 +-26 +29 +-8 +-25 +44 +3 +-26 +31 +-9 +-20 +26 +-5 +-25 +28 +-9 +-13 +36 +-5 +-28 +31 +-7 +-13 +30 +-6 +-27 +29 +-10 +-27 +27 +-6 +-24 +33 +-7 +-28 +36 +-5 +-23 +40 +-3 +-22 +32 +-7 +-18 +27 +-9 +-29 +33 +0 +-27 +32 +-8 +-23 +33 +-8 +-30 +29 +-7 +-27 +34 +1 +-21 +29 +-10 +-24 +33 +-4 +-29 +33 +-5 +-18 +45 +1 +-26 +38 +-1 +-28 +37 +-4 +-24 +23 +-15 +-20 +28 +-10 +-27 +31 +-9 +-18 +28 +-4 +-21 +25 +-13 +-32 +23 +-12 +-28 +28 +-8 +-27 +42 +0 +-23 +30 +-5 +-15 +35 +-6 +-29 +27 +-11 +-27 +28 +-10 +-23 +35 +-5 +-27 +38 +1 +-20 +25 +-11 +-27 +27 +-3 +-27 +26 +-10 +-29 +29 +-2 +-24 +29 +-9 +-27 +36 +-3 +-22 +31 +-7 +-22 +28 +-6 +-24 +35 +-4 +-14 +47 +3 +-26 +41 +-2 +-27 +33 +-6 +-29 +27 +-11 +-23 +25 +-11 +-29 +28 +-7 +-14 +31 +-8 +-26 +35 +3 +-12 +44 +1 +-29 +25 +-6 +-26 +25 +-9 +-32 +26 +-11 +-29 +27 +-3 +-25 +27 +-9 +-24 +27 +-4 +-25 +30 +-6 +-17 +17 +27 +23 +31 +29 +13 +11 +8 +20 +9 +5 +3 +11 +8 +12 +14 +13 +-2 +4 +5 +0 +-4 +-4 +-2 +-4 +17 +2 +8 +-1 +-5 +-4 +-2 +-3 +0 +4 +0 +-4 +-1 +-1 +0 +2 +-3 +-4 +7 +8 +-1 +4 +6 +10 +16 +-1 +1 +4 +-5 +-3 +-6 +-6 +2 +-2 +-2 +-1 +12 +10 +-3 +-1 +-3 +-5 +11 +13 +1 +-9 +-2 +-3 +-5 +-4 +-2 +11 +7 +-4 +-5 +-1 +-1 +-2 +1 +-4 +4 +-5 +-2 +4 +0 +-5 +-1 +-1 +6 +-3 +1 +-4 +-1 +2 +-1 +-1 +2 +5 +-2 +-2 +9 +0 +1 +5 +6 +-3 +-1 +2 +5 +4 +-2 +7 +-3 +5 +-1 +3 +-1 +5 +-4 +-1 +-5 +8 +3 +-29 +5 +-30 +-48 +12 +-23 +-36 +21 +-14 +-36 +23 +-14 +-36 +29 +-4 +-29 +25 +-12 +-32 +28 +-7 +-29 +26 +-10 +-21 +32 +-7 +-27 +30 +-8 +-25 +32 +-6 +-27 +32 +-3 +-27 +31 +-5 +-18 +29 +-8 +-23 +31 +-8 +-28 +38 +-3 +-26 +30 +-6 +-27 +32 +-6 +-26 +31 +-8 +-21 +34 +-3 +-9 +32 +-5 +-29 +38 +-1 +-26 +27 +-11 +-27 +24 +-12 +-18 +29 +-9 +-23 +29 +-9 +-26 +35 +-5 +-22 +28 +-9 +-27 +32 +-7 +-27 +30 +-8 +-22 +32 +-7 +-23 +42 +0 +-11 +31 +-8 +-25 +28 +-3 +-18 +41 +3 +-22 +30 +-8 +-31 +26 +-10 +-22 +34 +-5 +-28 +25 +-12 +-26 +33 +-5 +-26 +33 +-8 +-27 +42 +0 +-21 +38 +-5 +-25 +23 +-13 +-32 +26 +-12 +-20 +28 +-4 +-28 +35 +-5 +-18 +29 +-6 +11 +22 +31 +17 +15 +12 +9 +14 +14 +10 +5 +6 +3 +10 +4 +1 +6 +11 +1 +2 +19 +3 +-2 +2 +-2 +-6 +5 +14 +2 +-6 +-4 +-2 +7 +15 +13 +-3 +-5 +-7 +-8 +-6 +4 +3 +2 +0 +-3 +-3 +1 +5 +-3 +-3 +4 +0 +0 +1 +3 +1 +-4 +0 +9 +-2 +15 +0 +-4 +-4 +-3 +0 +0 +1 +-5 +-2 +1 +20 +2 +-1 +-6 +0 +8 +-1 +-3 +3 +6 +-2 +-3 +2 +-4 +-7 +6 +-3 +1 +-1 +-6 +-1 +1 +1 +0 +-2 +-2 +0 +3 +1 +6 +2 +12 +5 +-1 +-2 +0 +-7 +13 +9 +5 +-2 +-5 +-1 +-1 +0 +-4 +2 +6 +1 +13 +5 +-8 +3 +-5 +-2 +-3 +3 +-32 +5 +-30 +-43 +12 +-24 +-43 +17 +-17 +-37 +36 +-4 +-32 +26 +-12 +-27 +28 +-9 +-24 +25 +-12 +-31 +28 +-3 +-24 +43 +0 +-27 +41 +-1 +-23 +25 +-13 +-21 +25 +-13 +-32 +29 +-11 +-24 +35 +-5 +-25 +36 +-4 +-27 +27 +-7 +-30 +33 +-8 +-26 +30 +-8 +-27 +44 +0 +-25 +31 +-8 +-27 +27 +-11 +-28 +36 +-5 +-28 +32 +-5 +-26 +33 +-4 +-28 +31 +-7 +-28 +37 +0 +-21 +32 +-1 +-18 +27 +-11 +-21 +31 +-7 +-29 +26 +-10 +-30 +34 +-5 +-20 +32 +-1 +-21 +29 +-10 +-24 +32 +-7 +-29 +27 +-7 +-26 +33 +-1 +-26 +36 +-6 +-26 +32 +-8 +-27 +33 +-5 +-27 +35 +0 +-26 +30 +-8 +-28 +34 +-4 +-15 +36 +-4 +-27 +29 +-8 +-14 +31 +-9 +-16 +38 +-3 +-23 +34 +-7 +-27 +25 +-12 +9 +20 +22 +16 +17 +14 +10 +12 +21 +13 +11 +9 +4 +-2 +14 +5 +-1 +5 +1 +-2 +0 +-1 +0 +-3 +13 +1 +1 +18 +1 +1 +-4 +-3 +5 +-1 +-5 +6 +1 +-2 +8 +-3 +-7 +0 +12 +9 +-2 +7 +-3 +-3 +0 +3 +-4 +-4 +3 +-4 +1 +-2 +-2 +4 +1 +5 +2 +-1 +-2 +12 +16 +5 +-7 +-6 +-5 +-2 +9 +13 +6 +-7 +-6 +-6 +-5 +-4 +-1 +7 +12 +1 +3 +1 +-4 +-4 +-6 +8 +0 +-3 +-5 +-3 +-6 +-3 +-2 +0 +14 +1 +10 +8 +-4 +9 +-3 +4 +6 +-4 +-3 +12 +-4 +-4 +-4 +-6 +-5 +12 +-2 +-1 +-6 +-5 +3 +-2 +7 +4 +9 +2 +12 +17 +-1 +-6 +-4 +-7 +-2 +-6 +-6 +1 +-3 +0 +10 +12 +7 +-5 +3 +2 +-7 +9 +4 +-5 +-1 +-8 +0 +-1 +2 +-2 +1 +-3 +0 +7 +13 +1 +-6 +-3 +-4 +2 +2 +1 +0 +1 +7 +-1 +2 +-5 +-7 +-1 +-6 +-5 +1 +2 +-4 +9 +13 +9 +-4 +-4 +-2 +-1 +6 +0 +-4 +13 +-3 +-1 +-7 +-2 +-7 +-5 +-2 +8 +6 +0 +-3 +-3 +5 +-1 +-4 +-2 +-4 +-2 +-4 +4 +-1 +1 +20 +3 +-2 +-3 +12 +4 +1 +1 +2 +-3 +2 +9 +7 +0 +9 +14 +-4 +-9 +-9 +-6 +2 +-2 +7 +-3 +-6 +11 +1 +-8 +-1 +6 +-5 +-1 +-6 +-5 +-3 +-7 +2 +2 +3 +-2 +11 +-1 +5 +-3 +-6 +2 +10 +-26 +-37 +17 +-20 +-42 +11 +-19 +-38 +27 +-13 +-28 +19 +-13 +-35 +23 +-14 +-30 +27 +-10 +-26 +27 +-11 +-27 +35 +-2 +-14 +33 +-8 +-26 +41 +-2 +-27 +30 +-7 +-26 +30 +-8 +-30 +42 +-1 +-25 +41 +1 +-28 +26 +-13 +-31 +31 +-7 +-26 +34 +0 +-24 +30 +-9 +-31 +26 +-7 +-22 +27 +-9 +-18 +32 +-7 +-14 +44 +2 +-24 +35 +-7 +-17 +25 +-9 +-32 +34 +-5 +-31 +32 +0 +-28 +26 +-11 +-22 +31 +-4 +-17 +30 +-6 +-19 +25 +-12 +-32 +36 +-5 +-28 +27 +-7 +-28 +28 +-8 +-26 +26 +-11 +-30 +31 +-8 +-27 +33 +-1 +-17 +33 +-8 +-26 +29 +-8 +-24 +33 +-8 +-27 +38 +-3 +-26 +33 +-6 +-20 +36 +-1 +-27 +26 +-10 +-25 +40 +-2 +-28 +29 +-10 +-25 +28 +-7 +-28 +30 +-4 +-24 +37 +-4 +-23 +40 +-3 +-25 +28 +-9 +-23 +30 +-3 +-27 +26 +-8 +-23 +37 +-2 +-23 +26 +-8 +-28 +30 +-6 +-21 +26 +-10 +-29 +28 +-5 +-25 +26 +-8 +-22 +29 +-9 +-16 +31 +-7 +-22 +37 +-4 +-19 +29 +-9 +-28 +29 +0 +-25 +29 +-9 +-23 +36 +-5 +-17 +29 +-4 +-27 +36 +-5 +-28 +35 +-5 +-27 +35 +-6 +-26 +45 +3 +-23 +32 +-7 +-30 +36 +-4 +-29 +30 +-9 +-25 +41 +3 +-22 +24 +-14 +-32 +26 +-10 +-28 +27 +-10 +-28 +30 +-7 +-27 +36 +0 +-25 +28 +-9 +-20 +49 +3 +-22 +42 +0 +-27 +30 +-8 +-31 +27 +-9 +-29 +30 +0 +-22 +29 +-6 +-12 +30 +-10 +-31 +27 +-6 +-11 +31 +-2 +-21 +38 +-3 +-22 +26 +-13 +-28 +33 +-6 +-30 +31 +-9 +-26 +30 +-9 +-27 +39 +-4 +-27 +31 +30 +19 +26 +20 +27 +22 +8 +8 +11 +2 +2 +7 +5 +15 +8 +-1 +-5 +-3 +1 +2 +2 +-3 +-2 +2 +0 +0 +-5 +6 +7 +3 +3 +-4 +-2 +0 +-1 +0 +11 +8 +-2 +7 +0 +-4 +9 +12 +-4 +-4 +-7 +-5 +0 +4 +1 +-6 +-6 +3 +3 +-2 +1 +-2 +-3 +2 +-2 +-2 +10 +2 +-2 +0 +0 +-4 +13 +16 +0 +-4 +1 +-5 +-4 +10 +-2 +-5 +0 +-4 +1 +3 +-4 +2 +-2 +-5 +4 +0 +1 +-1 +2 +-1 +1 +-2 +-1 +1 +5 +3 +11 +1 +-2 +2 +-1 +-4 +-3 +-5 +-4 +9 +5 +1 +-2 +9 +-1 +1 +-1 +-2 +-3 +-3 +1 +6 +0 +-2 +-2 +-1 +0 +-1 +-5 +8 +-27 +-48 +10 +-18 +-40 +31 +-10 +-35 +22 +-17 +-37 +20 +-16 +-31 +28 +-11 +-29 +45 +2 +-24 +28 +-8 +-31 +29 +-4 +-28 +36 +0 +-26 +24 +-8 +-20 +29 +-10 +-21 +31 +-2 +-28 +37 +-4 +-27 +25 +-10 +-31 +33 +-7 +-18 +31 +-5 +-29 +42 +1 +-26 +29 +-10 +-28 +34 +-5 +-29 +27 +-9 +-27 +27 +-9 +-29 +34 +-2 +-21 +42 +-1 +-25 +32 +-4 +-30 +25 +-12 +-30 +40 +-1 +-25 +28 +-6 +-25 +28 +-7 +-30 +30 +-7 +-28 +29 +-2 +-19 +39 +-3 +-27 +27 +-10 +-30 +32 +-4 +-21 +40 +-2 +-23 +39 +-3 +-12 +29 +-9 +-30 +27 +-8 +-29 +37 +0 +-20 +29 +-7 +-27 +25 +-12 +-28 +40 +-3 +-27 +30 +-9 +-30 +30 +-9 +-28 +30 +1 +-20 +31 +-8 +-28 +48 +4 +-25 +48 +3 +-26 +14 +19 +17 +22 +14 +8 +9 +8 +8 +15 +10 +4 +11 +21 +3 +9 +18 +9 +3 +14 +-1 +-1 +-6 +5 +11 +13 +1 +2 +-1 +-9 +-6 +-7 +-2 +-5 +0 +-3 +-5 +16 +0 +-5 +-5 +-5 +-5 +0 +5 +-2 +-4 +-3 +12 +1 +-4 +7 +-3 +-1 +0 +8 +-4 +-3 +0 +0 +-2 +1 +-6 +0 +0 +0 +11 +0 +-1 +-2 +-1 +4 +3 +-1 +4 +6 +-3 +-3 +-3 +3 +5 +-4 +-3 +-1 +-3 +7 +5 +-2 +-4 +-3 +0 +-1 +1 +5 +10 +-2 +-3 +-1 +1 +-1 +10 +5 +-1 +-2 +2 +2 +2 +-5 +-5 +-4 +3 +1 +-2 +-4 +9 +4 +-2 +9 +8 +-3 +9 +9 +-1 +-2 +3 +16 +-1 +-7 +6 +-28 +-50 +5 +-29 +-33 +20 +-15 +-28 +22 +-15 +-37 +20 +-13 +-32 +25 +-14 +-33 +24 +-12 +-32 +33 +-7 +-24 +27 +-10 +-23 +27 +-8 +-28 +31 +-7 +-28 +33 +-7 +-25 +34 +-4 +-19 +32 +-8 +-27 +40 +-2 +-26 +28 +-9 +-21 +32 +-8 +-27 +32 +-2 +-26 +36 +-4 +-11 +31 +-8 +-23 +29 +-9 +-28 +25 +-12 +-29 +28 +-6 +-27 +33 +-6 +-25 +29 +-5 +-27 +40 +-1 +-22 +29 +-7 +-27 +30 +-9 +-23 +29 +-9 +-26 +41 +-2 +-21 +32 +-5 +-28 +42 +3 +-24 +28 +-8 +-30 +28 +-9 +-26 +43 +1 +-14 +47 +2 +-27 +22 +-12 +-25 +32 +-9 +-27 +29 +-10 +-30 +30 +-6 +-27 +29 +-7 +-29 +45 +2 +-24 +30 +-7 +-25 +31 +-3 +-27 +31 +-8 +-30 +36 +-5 +-20 +32 +-8 +-16 +29 +-11 +-23 +14 +29 +31 +28 +23 +18 +9 +10 +4 +6 +2 +6 +1 +8 +1 +7 +10 +4 +1 +12 +0 +6 +1 +-4 +-3 +6 +-1 +11 +3 +3 +1 +-4 +1 +-4 +10 +9 +-3 +-7 +0 +-1 +1 +10 +3 +0 +-5 +-4 +-2 +14 +0 +0 +-7 +-1 +-4 +-4 +2 +-2 +-1 +-3 +-3 +13 +16 +11 +-4 +-6 +-5 +-3 +-6 +-3 +11 +20 +-1 +-4 +3 +-2 +-5 +-4 +-6 +-3 +-4 +-3 +2 +-1 +-4 +4 +-1 +3 +5 +14 +3 +-4 +-3 +-3 +-4 +-5 +-2 +0 +7 +15 +0 +0 +4 +-3 +-3 +1 +4 +-5 +-1 +-3 +-6 +1 +-3 +7 +4 +0 +-4 +2 +-1 +6 +-1 +-3 +4 +10 +0 +-2 +-2 +-2 +11 +4 +-31 +9 +-25 +-45 +14 +-18 +-40 +20 +-19 +-31 +18 +-12 +-31 +21 +-15 +-34 +25 +-2 +-21 +25 +-13 +-32 +31 +-2 +-15 +31 +-9 +-21 +34 +-5 +-28 +30 +-9 +-17 +41 +4 +-25 +26 +-11 +-28 +46 +2 +-21 +40 +-3 +-26 +28 +-12 +-34 +24 +-13 +-27 +23 +-13 +-31 +26 +-2 +-22 +24 +-10 +-23 +32 +-7 +-14 +47 +3 +-26 +27 +-10 +-20 +35 +-6 +-29 +41 +-1 +-28 +30 +-8 +-31 +42 +-1 +-12 +28 +-11 +-32 +24 +-11 +-28 +31 +-9 +-31 +27 +-10 +-19 +26 +-10 +-9 +33 +-6 +-22 +25 +-12 +-31 +44 +3 +-24 +29 +-2 +-28 +36 +-6 +-28 +38 +3 +-24 +26 +-8 +-30 +26 +0 +-28 +37 +-5 +-29 +28 +-10 +-29 +29 +-9 +-27 +25 +-11 +-28 +32 +-6 +-20 +38 +-3 +-27 +33 +-2 +-26 +33 +-5 +17 +21 +19 +24 +26 +18 +25 +11 +4 +6 +4 +7 +2 +6 +2 +2 +6 +5 +8 +0 +0 +2 +0 +4 +-1 +2 +-2 +5 +4 +0 +-2 +13 +2 +-4 +17 +1 +6 +-5 +-6 +-4 +9 +6 +-3 +4 +2 +-5 +-2 +-5 +-4 +-3 +-1 +14 +7 +-4 +-4 +0 +12 +10 +-5 +-2 +-6 +5 +11 +0 +-6 +-5 +10 +-1 +-5 +3 +-3 +1 +-4 +-1 +-5 +2 +-5 +-6 +2 +6 +4 +-4 +-5 +0 +-3 +-2 +-1 +1 +-2 +-2 +5 +13 +6 +-2 +-3 +0 +0 +-2 +-2 +7 +-2 +-3 +0 +16 +0 +-1 +10 +-1 +-5 +-3 +-4 +3 +-1 +6 +-2 +3 +1 +-2 +-3 +-3 +6 +12 +-2 +4 +-1 +5 +2 +-2 +9 +-22 +-47 +6 +-24 +-45 +11 +-22 +-34 +28 +-12 +-31 +20 +-16 +-31 +34 +-7 +-31 +41 +4 +-26 +23 +-14 +-27 +27 +-11 +-31 +28 +-8 +-22 +27 +-5 +-21 +33 +-7 +-28 +29 +-2 +-18 +27 +-11 +-30 +29 +-7 +-22 +30 +-9 +-27 +30 +-4 +-11 +48 +4 +-23 +34 +-5 +-31 +24 +-10 +-27 +45 +6 +-24 +29 +-10 +-17 +37 +-4 +-27 +30 +-10 +-31 +25 +-11 +-30 +38 +1 +-25 +32 +-7 +-30 +27 +-11 +-30 +34 +-5 +-26 +34 +-6 +-25 +35 +-5 +-29 +34 +-2 +-25 +27 +-10 +-19 +28 +-9 +-29 +35 +-6 +-25 +44 +1 +-18 +33 +-7 +-30 +29 +-9 +-30 +26 +-11 +-29 +26 +-10 +-18 +45 +4 +-23 +31 +-8 +-16 +43 +2 +-27 +29 +-9 +-22 +41 +-2 +-19 +29 +-9 +-31 +23 +-14 +-31 +30 +-4 +-18 +20 +34 +23 +15 +22 +15 +10 +15 +21 +23 +5 +2 +4 +1 +2 +0 +9 +-2 +3 +-1 +-2 +6 +0 +-1 +2 +-2 +-1 +-3 +-3 +-1 +2 +-4 +1 +4 +0 +-1 +10 +4 +6 +6 +-3 +-3 +13 +15 +-2 +7 +-5 +-1 +-5 +10 +-1 +-5 +-5 +-2 +-4 +4 +-2 +0 +-4 +-5 +-2 +2 +3 +-2 +8 +-2 +4 +-3 +4 +1 +1 +-3 +-3 +8 +-2 +1 +-3 +8 +0 +9 +5 +-4 +4 +-4 +1 +4 +-7 +-6 +-5 +1 +7 +-2 +-4 +-2 +3 +-1 +3 +-1 +-2 +-2 +7 +8 +6 +13 +2 +1 +-4 +2 +-3 +2 +-5 +5 +3 +-1 +-2 +-1 +-1 +9 +-3 +5 +6 +-4 +0 +-3 +-3 +11 +-4 +-4 +-1 +-3 +-4 +9 +-2 +0 +-5 +-5 +-4 +2 +-2 +-2 +-4 +-1 +4 +20 +1 +-4 +7 +-2 +5 +2 +3 +1 +-2 +9 +-3 +1 +9 +0 +-3 +-2 +2 +-4 +-2 +6 +2 +-5 +-3 +-2 +-2 +-2 +1 +12 +6 +14 +3 +7 +5 +1 +-6 +-5 +-5 +6 +8 +12 +5 +-3 +-5 +-3 +11 +-2 +-5 +10 +-1 +-8 +-2 +-1 +2 +-2 +-7 +-5 +2 +13 +8 +-5 +-3 +-6 +-5 +3 +-3 +-2 +-5 +-3 +-4 +1 +14 +3 +3 +-4 +2 +1 +1 +-4 +-3 +0 +-2 +4 +-3 +-1 +5 +20 +0 +1 +2 +4 +5 +1 +-6 +-6 +7 +-1 +14 +-2 +-9 +-3 +5 +0 +-4 +-6 +13 +-1 +-3 +2 +-2 +-4 +4 +10 +-26 +6 +-26 +-46 +6 +-25 +-44 +19 +-18 +-38 +19 +-15 +-19 +27 +-13 +-27 +29 +-10 +-21 +30 +-10 +-19 +41 +1 +-15 +32 +-5 +-17 +33 +-5 +-24 +21 +-16 +-32 +26 +-8 +-30 +25 +-9 +-26 +43 +0 +-23 +28 +-2 +-20 +28 +-8 +-18 +30 +-10 +-31 +24 +-4 +-26 +30 +1 +-23 +39 +-1 +-24 +30 +-8 +-27 +35 +-6 +-29 +33 +-8 +-31 +32 +0 +-27 +32 +-6 +-28 +26 +-1 +-25 +34 +-7 +-25 +35 +-6 +-25 +33 +-8 +-26 +38 +-4 +-27 +31 +1 +-25 +34 +-6 +-29 +25 +-11 +-17 +28 +-10 +-17 +27 +-11 +-21 +33 +-7 +-30 +29 +-5 +-25 +37 +-4 +-29 +30 +-9 +-30 +40 +-2 +-26 +27 +-12 +-28 +40 +-2 +-28 +28 +-11 +-27 +28 +-8 +-28 +31 +-6 +-26 +33 +5 +-21 +40 +-3 +-18 +31 +-6 +-23 +26 +-12 +-31 +43 +1 +-20 +30 +-5 +-29 +27 +-10 +-26 +32 +-6 +-22 +29 +-8 +-29 +26 +1 +-23 +30 +-6 +-27 +28 +-10 +-27 +34 +-3 +-20 +30 +-8 +-25 +28 +-6 +-27 +30 +-8 +-26 +47 +3 +-23 +42 +1 +-25 +26 +-7 +-28 +35 +-5 +-14 +45 +1 +-27 +33 +-8 +-31 +34 +-5 +-25 +27 +-9 +-28 +37 +2 +-24 +26 +-12 +-16 +27 +-11 +-18 +37 +-4 +-26 +34 +-6 +-29 +23 +-11 +-25 +27 +-8 +-28 +27 +-10 +-27 +28 +-9 +-26 +28 +2 +-23 +48 +3 +-22 +27 +-10 +-25 +38 +1 +-27 +30 +-7 +-30 +26 +-3 +-18 +26 +-9 +-25 +41 +-2 +-12 +29 +-11 +-18 +44 +0 +-25 +22 +-14 +-24 +27 +-12 +-30 +25 +-9 +-26 +29 +-10 +-30 +35 +-6 +-24 +30 +-7 +-30 +28 +-4 +-27 +28 +-10 +30 +26 +32 +26 +16 +10 +6 +17 +14 +15 +3 +4 +5 +6 +1 +0 +0 +1 +-1 +3 +4 +0 +4 +0 +3 +2 +5 +13 +18 +1 +5 +-2 +-6 +-3 +2 +18 +-1 +-3 +-7 +-8 +1 +3 +-2 +-1 +1 +-3 +-3 +-3 +-3 +7 +-2 +7 +-2 +-4 +-2 +2 +-5 +2 +2 +1 +-1 +18 +2 +10 +-3 +10 +6 +-5 +3 +-4 +1 +11 +5 +2 +-7 +-7 +-5 +-2 +-4 +2 +-3 +-3 +2 +0 +8 +-1 +2 +-4 +-3 +8 +7 +2 +9 +-1 +2 +5 +-3 +1 +-7 +4 +-3 +-6 +-6 +3 +-3 +1 +14 +-1 +-5 +-2 +1 +-6 +-3 +-1 +-2 +1 +3 +10 +12 +-2 +0 +-5 +-2 +-5 +-6 +0 +13 +11 +11 +-25 +-49 +14 +-23 +-32 +24 +-15 +-37 +18 +-19 +-35 +17 +-16 +-32 +32 +-6 +-29 +21 +-7 +-22 +26 +-13 +-29 +28 +-8 +-30 +28 +-9 +-11 +31 +-7 +-12 +29 +-10 +-30 +28 +-10 +-29 +40 +-3 +-25 +28 +-9 +-29 +29 +-6 +-25 +40 +1 +-25 +30 +-10 +-26 +27 +-10 +-29 +29 +-8 +-26 +28 +-8 +-27 +36 +-5 +-20 +35 +-5 +-26 +39 +-2 +-23 +35 +-1 +-15 +34 +-5 +-24 +34 +-7 +-30 +31 +-1 +-15 +28 +-11 +-26 +29 +-10 +-30 +34 +-5 +-26 +30 +-7 +-25 +32 +-5 +-25 +40 +5 +-24 +28 +-9 +-30 +27 +-9 +-28 +48 +3 +-24 +29 +-9 +-27 +31 +-7 +-30 +26 +-11 +-30 +28 +-8 +-25 +27 +-5 +-27 +39 +-2 +-25 +27 +-11 +-24 +40 +5 +-21 +37 +-3 +-25 +26 +-6 +-29 +26 +-8 +-24 +20 +30 +27 +27 +32 +16 +9 +15 +9 +6 +4 +5 +5 +15 +7 +6 +10 +-1 +-1 +-2 +5 +4 +10 +0 +10 +2 +2 +-3 +-6 +-4 +-2 +1 +2 +-1 +3 +1 +-1 +-1 +-3 +16 +2 +2 +0 +3 +3 +-4 +-2 +12 +-1 +0 +-4 +12 +-2 +-2 +-7 +0 +-1 +-6 +0 +14 +6 +3 +-3 +4 +2 +8 +-5 +-2 +-6 +-4 +-2 +1 +-4 +-2 +-2 +4 +-4 +0 +-3 +-3 +1 +2 +2 +-1 +6 +2 +-2 +0 +2 +0 +-2 +-2 +-1 +6 +9 +1 +1 +-1 +6 +15 +0 +-3 +-3 +-5 +-5 +-2 +1 +4 +-2 +14 +12 +7 +-4 +7 +5 +-4 +-5 +2 +0 +15 +-2 +-5 +1 +-1 +-2 +-6 +3 +0 +9 +-28 +-47 +12 +-24 +-46 +15 +-21 +-42 +18 +-19 +-35 +37 +-5 +-31 +25 +-7 +-26 +23 +-11 +-16 +29 +-9 +-30 +29 +-3 +-23 +31 +-9 +-29 +37 +-5 +-29 +29 +-10 +-29 +28 +-7 +-15 +33 +-7 +-22 +30 +-6 +-16 +37 +-5 +-26 +26 +-12 +-28 +36 +-3 +-10 +29 +-9 +-32 +42 +1 +-17 +32 +-7 +-32 +25 +-5 +-30 +39 +-3 +-26 +31 +-9 +-17 +37 +-5 +-30 +27 +-6 +-30 +28 +-10 +-26 +32 +-3 +-27 +26 +-9 +-21 +33 +-6 +-18 +32 +-7 +-30 +32 +-3 +-11 +29 +-10 +-27 +25 +-12 +-25 +24 +-10 +-26 +33 +-7 +-11 +34 +-6 +-27 +38 +3 +-23 +28 +-8 +-28 +27 +-11 +-27 +33 +-6 +-26 +37 +-3 +-27 +36 +-4 +-28 +29 +-10 +-27 +29 +-9 +-26 +33 +-2 +-25 +27 +-8 +-22 +31 +-2 +-15 +30 +22 +20 +33 +22 +13 +18 +7 +6 +19 +10 +5 +7 +12 +14 +10 +3 +-1 +-2 +-4 +9 +0 +-5 +-3 +3 +1 +1 +15 +-1 +2 +-2 +15 +-1 +0 +-4 +1 +5 +-1 +1 +-6 +1 +-5 +-6 +0 +0 +-2 +-5 +6 +13 +1 +0 +3 +-4 +-3 +-3 +-4 +0 +-3 +-3 +-4 +-2 +3 +15 +13 +-2 +-4 +-3 +-3 +-4 +12 +-1 +0 +1 +0 +-2 +-4 +-5 +4 +-4 +-2 +2 +9 +-1 +5 +1 +-3 +-2 +-2 +11 +5 +-4 +5 +5 +7 +2 +0 +-2 +3 +-2 +-2 +-1 +-5 +-3 +2 +9 +-3 +-1 +-1 +-3 +-2 +1 +13 +10 +-4 +-4 +-2 +6 +0 +9 +1 +-1 +2 +-6 +9 +-5 +-4 +0 +14 +-24 +9 +-27 +-42 +11 +-24 +-42 +13 +-22 +-37 +26 +-13 +-32 +34 +-8 +-31 +27 +-12 +-24 +34 +-8 +-28 +24 +-11 +-26 +24 +-11 +-30 +39 +1 +-26 +27 +-8 +-15 +27 +-11 +-27 +28 +-11 +-24 +42 +0 +-27 +30 +-8 +-26 +27 +-10 +-21 +30 +-10 +-15 +41 +-1 +-23 +30 +-8 +-31 +37 +1 +-27 +28 +-11 +-26 +30 +-7 +-28 +28 +-3 +-12 +45 +2 +-25 +27 +-9 +-32 +31 +-9 +-28 +30 +2 +-25 +29 +-10 +-31 +31 +-6 +-13 +28 +-10 +-28 +48 +3 +-26 +25 +-12 +-31 +40 +-1 +-15 +26 +-9 +-27 +37 +-2 +-22 +23 +-7 +-23 +27 +-11 +-29 +29 +-9 +-30 +29 +-10 +-25 +28 +-10 +-16 +44 +0 +-18 +30 +-5 +-17 +28 +-9 +-31 +26 +-10 +-24 +33 +-8 +-27 +29 +-9 +-23 +33 +-8 +-26 +34 +-6 +11 +21 +23 +17 +16 +20 +22 +10 +7 +7 +11 +6 +10 +7 +6 +2 +11 +0 +3 +3 +5 +-1 +8 +1 +-1 +4 +0 +12 +5 +5 +1 +-5 +-3 +5 +0 +-1 +7 +10 +13 +-4 +-8 +-6 +-5 +-5 +-3 +1 +1 +2 +-4 +-1 +-4 +-2 +-4 +-2 +0 +-3 +5 +3 +0 +-3 +-4 +0 +4 +-2 +5 +8 +1 +-2 +-4 +7 +-2 +-3 +5 +1 +-3 +1 +10 +9 +0 +-2 +-4 +8 +-1 +2 +-2 +-3 +-5 +8 +5 +4 +5 +-5 +9 +7 +-4 +14 +-2 +-1 +-5 +2 +-4 +-3 +-7 +2 +-1 +16 +-1 +-1 +-5 +-4 +-2 +-7 +-3 +3 +0 +11 +14 +11 +-5 +-4 +-5 +1 +-7 +-3 +-4 +-3 +-3 +2 +-1 +-2 +-3 +-1 +-4 +0 +7 +-2 +9 +0 +-1 +-1 +10 +2 +-2 +-1 +-4 +1 +13 +3 +-3 +-4 +-6 +-2 +8 +-1 +2 +-3 +-3 +1 +14 +-1 +-4 +3 +13 +4 +4 +14 +8 +-3 +6 +10 +-3 +-6 +-3 +0 +-5 +-3 +-1 +-3 +9 +7 +-6 +4 +-1 +-1 +-3 +-6 +-4 +-5 +3 +0 +-4 +-1 +-1 +-2 +-5 +6 +-2 +15 +-1 +-3 +2 +0 +8 +9 +-2 +6 +0 +-4 +-6 +-3 +-3 +3 +-4 +-1 +-4 +5 +9 +8 +17 +-1 +1 +-3 +-6 +1 +-4 +-5 +0 +-4 +-2 +-2 +-3 +3 +0 +0 +5 +1 +-2 +0 +12 +-2 +-3 +-1 +11 +10 +4 +0 +-5 +-7 +-4 +-7 +-1 +3 +14 +5 +-2 +-1 +20 +-19 +-46 +16 +-23 +-43 +10 +-23 +-30 +24 +-12 +-26 +18 +-18 +-34 +21 +-7 +-29 +27 +-9 +-32 +27 +-10 +-28 +32 +-7 +-27 +27 +-7 +-27 +32 +1 +-26 +31 +-3 +-28 +34 +-6 +-30 +26 +-6 +-28 +30 +-7 +-23 +32 +-7 +-22 +35 +-4 +-26 +31 +-8 +-28 +28 +-10 +-26 +30 +-8 +-24 +36 +2 +-25 +30 +-8 +-16 +42 +2 +-25 +28 +-9 +-19 +33 +-5 +-27 +35 +-6 +-28 +26 +-11 +-30 +37 +-5 +-18 +29 +-8 +-30 +29 +-3 +-21 +28 +-10 +-27 +35 +-4 +-26 +32 +-2 +-12 +38 +-3 +-24 +43 +0 +-28 +30 +-10 +-30 +27 +-11 +-29 +43 +-1 +-13 +32 +-8 +-22 +25 +-12 +-29 +31 +-7 +-28 +30 +-9 +-29 +31 +6 +-23 +30 +-10 +-30 +30 +-6 +-15 +34 +-4 +-26 +29 +-7 +-30 +32 +-6 +-28 +19 +28 +27 +33 +19 +13 +16 +11 +24 +10 +6 +5 +6 +14 +21 +3 +16 +0 +4 +-4 +-3 +-2 +-2 +-2 +6 +-3 +-6 +2 +-1 +1 +-2 +-2 +-3 +1 +2 +-1 +-3 +2 +0 +-1 +4 +0 +-1 +15 +0 +-1 +2 +-5 +-4 +16 +1 +-2 +-4 +12 +-1 +-4 +-2 +-5 +5 +5 +-3 +-2 +-1 +-3 +-4 +-1 +0 +12 +16 +-2 +4 +-1 +3 +0 +0 +6 +-5 +-4 +-5 +-4 +-3 +-4 +4 +-1 +-2 +-2 +-1 +0 +-2 +3 +12 +0 +0 +1 +13 +9 +-3 +-4 +-6 +-2 +0 +-5 +-1 +4 +6 +-3 +-3 +7 +0 +-4 +-3 +-2 +-2 +2 +-5 +-3 +1 +0 +4 +0 +0 +1 +-2 +0 +2 +-2 +4 +1 +16 +-21 +-40 +14 +-23 +-43 +23 +-9 +-26 +32 +-9 +-30 +17 +-18 +-38 +20 +-15 +-31 +26 +-4 +-22 +25 +-8 +-30 +46 +2 +-25 +38 +-4 +-28 +24 +-12 +-22 +38 +-3 +-30 +27 +-9 +-30 +37 +-2 +-18 +26 +-12 +-31 +26 +-10 +-31 +27 +-6 +-29 +47 +2 +-25 +39 +-3 +-28 +26 +-8 +-20 +41 +-2 +-27 +29 +-10 +-24 +31 +-7 +-29 +36 +-6 +-29 +26 +-11 +-22 +27 +-11 +-30 +28 +-6 +-28 +33 +4 +-23 +29 +-9 +-29 +30 +-5 +-18 +41 +-1 +-19 +35 +-5 +-29 +27 +-10 +-29 +28 +-10 +-27 +36 +-4 +-16 +41 +-2 +-24 +28 +-9 +-29 +41 +-2 +-24 +28 +-10 +-32 +28 +-10 +-26 +30 +-2 +-19 +34 +-6 +-29 +32 +-7 +-27 +42 +2 +-24 +27 +-10 +-12 +30 +-8 +-29 +37 +-4 +-28 +30 +-10 +-30 +14 +19 +28 +23 +22 +18 +16 +9 +12 +19 +6 +3 +2 +16 +7 +-2 +1 +2 +1 +2 +2 +14 +12 +-1 +-2 +2 +3 +2 +4 +6 +-4 +-3 +-6 +5 +6 +2 +-5 +6 +-4 +-2 +-3 +3 +6 +-2 +-2 +-1 +6 +-3 +-4 +6 +-2 +8 +3 +-4 +0 +5 +-4 +2 +2 +-3 +-4 +-4 +1 +-3 +2 +-5 +0 +-1 +-4 +6 +-1 +9 +13 +8 +1 +1 +-6 +-4 +10 +16 +8 +-5 +2 +-2 +0 +8 +-2 +-6 +-5 +-4 +-2 +5 +-1 +-2 +-4 +-3 +2 +-3 +3 +0 +-3 +6 +-3 +-2 +-2 +2 +9 +5 +3 +-3 +0 +-1 +-3 +-1 +-1 +-3 +-4 +-2 +3 +11 +11 +-2 +4 +7 +2 +-4 +-9 +-6 +30 +-12 +-42 +4 +-31 +-48 +10 +-21 +-36 +25 +-13 +-32 +25 +-10 +-29 +23 +-15 +-34 +26 +-5 +-30 +26 +-11 +-26 +28 +-10 +-28 +39 +-3 +-25 +26 +-11 +-23 +29 +-7 +-27 +39 +2 +-13 +34 +-7 +-29 +25 +-2 +-19 +29 +-8 +-27 +24 +-11 +-23 +33 +-7 +-27 +29 +-4 +-18 +47 +4 +-25 +30 +-5 +-18 +25 +-12 +-30 +30 +-5 +-30 +29 +-5 +-27 +35 +-5 +-24 +29 +-8 +-15 +28 +-1 +-27 +34 +2 +-24 +35 +-6 +-27 +26 +-12 +-30 +34 +-4 +-23 +32 +-9 +-27 +33 +-6 +-28 +32 +-5 +-25 +32 +2 +-25 +29 +-10 +-26 +35 +-6 +-21 +32 +-8 +-29 +31 +-7 +-30 +34 +-6 +-14 +41 +-1 +-27 +32 +-9 +-23 +35 +-5 +-15 +28 +-9 +-28 +24 +-11 +-32 +28 +-4 +-26 +27 +-9 +-26 +28 +-10 +-15 +48 +4 +-21 +46 +2 +-27 +28 +-11 +-28 +29 +-9 +-28 +25 +-8 +-26 +40 +-3 +-25 +25 +-2 +-27 +27 +-11 +-31 +29 +-7 +-26 +26 +-11 +-29 +30 +-7 +-20 +29 +-9 +-11 +34 +-6 +-25 +30 +-7 +-14 +35 +-5 +-28 +29 +-9 +-20 +28 +-9 +-19 +28 +-9 +-28 +27 +-8 +-20 +45 +0 +-21 +36 +-5 +-23 +32 +-6 +-29 +26 +-11 +-29 +33 +-8 +-25 +36 +-3 +-21 +40 +-2 +-27 +42 +0 +-28 +26 +-12 +-25 +34 +-6 +-28 +41 +-2 +-20 +26 +-11 +-32 +36 +-6 +-29 +30 +-9 +-29 +29 +-10 +-10 +31 +-9 +-29 +28 +-9 +-27 +37 +5 +-24 +30 +-10 +-30 +39 +-3 +-24 +41 +-2 +-29 +25 +-10 +-30 +27 +-10 +-23 +35 +-3 +-27 +27 +-5 +-28 +31 +-8 +-28 +27 +-10 +-26 +29 +-8 +-28 +33 +-6 +-22 +21 +24 +38 +26 +21 +19 +16 +14 +21 +8 +2 +3 +5 +6 +5 +3 +6 +6 +3 +-1 +1 +11 +0 +2 +-3 +3 +13 +1 +-3 +-1 +7 +4 +-2 +12 +7 +-1 +-5 +0 +-4 +-1 +-4 +6 +15 +11 +-4 +7 +-1 +-6 +-6 +-6 +-7 +-5 +-3 +5 +0 +-3 +4 +2 +-3 +-2 +-4 +-2 +1 +-2 +3 +1 +4 +-3 +0 +4 +2 +3 +2 +-2 +-1 +-2 +0 +2 +-1 +-1 +7 +3 +3 +4 +-1 +13 +9 +2 +-8 +-7 +2 +0 +-5 +-2 +1 +7 +6 +-2 +1 +-3 +0 +-5 +1 +2 +-3 +-1 +1 +-3 +-1 +7 +-4 +4 +14 +11 +-1 +-6 +-6 +-1 +11 +0 +-1 +-1 +3 +10 +9 +3 +-3 +-4 +3 +-1 +-4 +-4 +-7 +3 +10 +-1 +13 +13 +0 +-7 +-5 +-4 +-6 +-2 +-6 +-4 +-3 +-3 +2 +13 +2 +-2 +1 +-4 +5 +0 +-6 +-1 +-1 +-1 +-3 +-2 +-2 +1 +0 +0 +0 +0 +1 +-1 +-2 +5 +1 +17 +1 +0 +7 +-2 +4 +-2 +-6 +-6 +-4 +-3 +1 +-2 +0 +16 +11 +1 +-4 +6 +-2 +-4 +6 +0 +-4 +1 +-1 +0 +4 +7 +-2 +0 +-4 +18 +1 +14 +-2 +2 +-1 +-7 +-5 +-4 +16 +0 +-5 +-5 +-7 +-2 +-1 +4 +3 +3 +-1 +12 +9 +6 +8 +17 +-2 +-8 +6 +5 +-5 +-2 +-8 +-5 +8 +0 +-6 +-7 +-3 +0 +-4 +11 +19 +0 +-5 +1 +6 +5 +-2 +-4 +-3 +-7 +11 +-26 +-51 +3 +-29 +-46 +11 +-21 +-34 +19 +-17 +-23 +32 +-3 +-29 +26 +-12 +-30 +23 +-10 +-28 +32 +-8 +-23 +32 +-4 +-28 +41 +-3 +-28 +26 +-12 +-32 +26 +-10 +-28 +26 +-11 +-19 +35 +-7 +-24 +30 +-7 +-28 +35 +-4 +-24 +30 +-7 +-28 +32 +-6 +-19 +28 +-8 +-26 +29 +-9 +-26 +29 +-6 +-28 +32 +-4 +-13 +35 +5 +-23 +30 +-7 +-22 +27 +-10 +-29 +44 +7 +-22 +32 +-7 +-29 +29 +-4 +-27 +30 +-9 +-25 +39 +-4 +-28 +41 +-2 +-27 +35 +-6 +-27 +36 +-5 +-27 +26 +-11 +-30 +35 +-5 +-21 +35 +-2 +-26 +33 +-4 +-27 +43 +5 +-24 +27 +-7 +-33 +30 +-2 +-28 +29 +-7 +-31 +27 +-4 +-26 +46 +2 +-15 +27 +-13 +-32 +24 +-13 +-29 +26 +-8 +-28 +29 +-9 +-27 +32 +-7 +-26 +22 +25 +24 +26 +22 +14 +13 +10 +23 +16 +6 +15 +8 +5 +0 +2 +2 +1 +0 +1 +2 +1 +-1 +4 +15 +22 +4 +1 +6 +-3 +-1 +5 +-1 +4 +-2 +-7 +-5 +-3 +0 +9 +7 +-1 +16 +0 +1 +2 +-1 +-5 +-1 +-1 +-1 +-1 +2 +2 +-4 +-2 +-1 +13 +8 +-5 +9 +16 +-3 +-6 +-6 +13 +12 +0 +-7 +0 +-8 +-3 +-6 +0 +-6 +-4 +2 +8 +-1 +-2 +-7 +3 +1 +-4 +-4 +-2 +-3 +-3 +11 +2 +-1 +14 +9 +13 +-4 +-5 +-6 +0 +-5 +-3 +-3 +0 +8 +11 +-3 +-4 +14 +-2 +-6 +-6 +-3 +11 +7 +5 +1 +7 +-6 +-8 +11 +-1 +0 +-1 +-6 +1 +-3 +0 +11 +1 +8 +-26 +-50 +5 +-29 +-36 +12 +-23 +-41 +39 +-5 +-32 +17 +-11 +-33 +21 +-15 +-33 +39 +-3 +-21 +24 +-14 +-32 +29 +-9 +-22 +28 +-10 +-26 +30 +-8 +-29 +32 +-2 +-26 +31 +-8 +-23 +32 +-8 +-26 +34 +-4 +-28 +27 +-7 +-28 +33 +-3 +-26 +32 +-7 +-18 +39 +-2 +-19 +28 +-10 +-27 +40 +-1 +-28 +45 +1 +-26 +40 +-1 +-18 +31 +-8 +-21 +36 +-5 +-30 +25 +-13 +-31 +25 +-9 +-22 +42 +-1 +-28 +35 +0 +-28 +29 +-7 +-16 +44 +0 +-25 +30 +-5 +-25 +20 +-16 +-26 +24 +-14 +-30 +41 +2 +-15 +29 +-11 +-32 +25 +-12 +-31 +40 +1 +-25 +26 +-11 +-28 +26 +-11 +-30 +37 +-2 +-18 +36 +-4 +-29 +33 +-7 +-28 +29 +-9 +-27 +44 +2 +-26 +40 +-3 +-25 +26 +-11 +-14 +30 +-9 +-30 +19 +34 +19 +23 +14 +27 +22 +9 +18 +6 +2 +13 +8 +0 +13 +14 +1 +12 +1 +-5 +-6 +4 +-3 +1 +-4 +-5 +-4 +3 +-2 +-2 +0 +-2 +17 +2 +-3 +-7 +-2 +0 +5 +12 +1 +-2 +-1 +-5 +-4 +-3 +-1 +-1 +-1 +0 +13 +-1 +2 +-1 +15 +8 +-5 +6 +1 +-3 +-2 +12 +1 +-4 +-1 +-2 +2 +-3 +11 +8 +-5 +-3 +-5 +1 +-6 +-4 +-4 +-4 +-3 +7 +13 +-1 +4 +10 +-4 +1 +-4 +3 +7 +0 +11 +4 +-6 +-6 +-2 +-4 +-3 +9 +-4 +0 +10 +11 +-3 +-2 +-8 +-2 +0 +1 +6 +1 +-2 +6 +5 +0 +-8 +-8 +-7 +1 +-5 +-3 +13 +3 +-3 +-3 +-4 +-3 +5 +8 +16 +-23 +-46 +5 +-30 +-38 +26 +-14 +-39 +16 +-19 +-38 +20 +-13 +-32 +23 +-12 +-31 +26 +-1 +-23 +28 +-9 +-27 +41 +-2 +-19 +29 +-7 +-28 +36 +0 +-26 +30 +-9 +-22 +38 +-3 +-23 +42 +-1 +-28 +34 +-6 +-30 +24 +-12 +-22 +43 +-1 +-26 +25 +-11 +26 +-5 +-30 +33 +-1 +-25 +26 +-12 +-32 +25 +-12 +-24 +25 +-12 +-24 +38 +-3 +-26 +33 +-6 +-27 +33 +-5 +-29 +27 +-11 +-25 +37 +-3 +-26 +28 +-10 +-27 +35 +-1 +-26 +28 +-8 +-25 +35 +-4 +-12 +31 +-9 +-27 +27 +-9 +-18 +45 +0 +-23 +27 +-11 +-28 +28 +-2 +-25 +30 +-4 +-28 +37 +-5 +-14 +28 +-11 +-31 +33 +-7 +-18 +36 +-5 +-21 +29 +-10 +-29 +37 +-4 +-25 +30 +-2 +-22 +25 +-10 +-19 +28 +-11 +-23 +25 +-12 +-29 +23 +26 +21 +34 +33 +23 +18 +9 +13 +3 +6 +3 +6 +2 +4 +0 +5 +12 +2 +-2 +0 +-1 +5 +2 +-1 +7 +3 +3 +1 +7 +2 +-4 +-3 +-4 +-3 +2 +7 +0 +7 +13 +9 +2 +12 +-4 +-2 +12 +-3 +-4 +-5 +-5 +-4 +-3 +11 +-1 +-6 +-5 +9 +6 +4 +0 +-7 +-6 +-4 +-3 +4 +-5 +11 +15 +-1 +0 +-1 +-1 +7 +-4 +-5 +-3 +-6 +-1 +12 +3 +-6 +-4 +6 +-5 +-4 +-4 +2 +-3 +-2 +12 +-3 +-6 +0 +-5 +-2 +-4 +-2 +-1 +11 +-1 +6 +1 +-1 +-4 +3 +17 +2 +2 +-4 +12 +1 +7 +7 +-5 +-2 +-3 +-4 +4 +-1 +-7 +-2 +-2 +13 +1 +2 +0 +-1 +0 +7 +-30 +-46 +7 +-26 +-42 +14 +-21 +-25 +23 +-16 +-37 +22 +-14 +-33 +33 +-5 +-29 +32 +-8 +-22 +23 +-10 +-24 +29 +1 +-25 +26 +-10 +-19 +35 +-4 +-29 +31 +-8 +-30 +28 +-10 +-16 +45 +6 +-23 +23 +-12 +-29 +27 +-10 +-30 +36 +-6 +-23 +28 +-9 +-12 +31 +-8 +-29 +30 +4 +-24 +31 +-7 +-16 +38 +-3 +-28 +25 +-9 +-17 +31 +-8 +-29 +28 +-11 +-30 +28 +-9 +-21 +34 +-5 +-19 +29 +-5 +-27 +27 +-10 +-24 +31 +0 +-26 +34 +-6 +-28 +30 +-9 +-21 +32 +-1 +-24 +34 +-5 +-28 +31 +-8 +-29 +43 +1 +-26 +28 +-10 +-23 +39 +-3 +-22 +25 +-10 +-29 +37 +-4 +-29 +41 +1 +-27 +25 +-8 +-23 +30 +-8 +-29 +28 +-9 +-24 +34 +-6 +-27 +39 +-2 +-27 +31 +-9 +-28 +31 +-7 +-18 +33 +33 +20 +19 +24 +33 +13 +5 +20 +17 +1 +7 +10 +-1 +-3 +-3 +-2 +-2 +3 +0 +4 +-1 +-2 +0 +-1 +-1 +16 +11 +-1 +-4 +-3 +4 +8 +6 +-4 +-4 +1 +-7 +7 +-1 +-4 +0 +-5 +-2 +1 +3 +15 +6 +7 +-2 +0 +-2 +-5 +-2 +-3 +1 +-3 +-4 +-3 +2 +13 +9 +2 +0 +-3 +-1 +3 +15 +0 +-1 +-4 +10 +-3 +-5 +-4 +9 +12 +-1 +-7 +-4 +-5 +-4 +-5 +8 +10 +0 +6 +-1 +-4 +-5 +-2 +12 +0 +-4 +0 +-3 +13 +10 +3 +-4 +-1 +7 +6 +-7 +-7 +-4 +1 +-2 +-4 +-7 +0 +3 +6 +-3 +9 +6 +1 +-2 +-3 +-2 +-4 +-6 +1 +-3 +13 +0 +-4 +3 +-2 +-36 +6 +-29 +-44 +13 +-15 +-26 +33 +-9 +-34 +18 +-17 +-37 +26 +-13 +-25 +25 +-11 +-21 +47 +2 +-23 +30 +-9 +-20 +27 +-13 +-25 +28 +-11 +-30 +24 +-8 +-28 +32 +-7 +-30 +37 +-5 +-28 +29 +-5 +-29 +28 +-8 +-23 +28 +-8 +-18 +35 +-6 +-23 +32 +-6 +-24 +27 +-11 +-29 +45 +1 +-24 +28 +-10 +-29 +33 +-7 +-29 +34 +-3 +-23 +25 +-8 +-23 +27 +-11 +-20 +34 +-1 +-17 +29 +-6 +-29 +32 +-6 +-30 +28 +-8 +-29 +43 +1 +-12 +33 +-7 +-16 +44 +1 +-27 +28 +-7 +-31 +28 +-10 +-32 +26 +-5 +-28 +25 +-10 +-29 +35 +2 +-21 +27 +-9 +-27 +28 +-10 +-28 +45 +2 +-18 +45 +0 +-27 +25 +-12 +-19 +28 +-11 +-25 +27 +-11 +-23 +42 +-2 +-27 +26 +-10 +-28 +27 +-7 +-10 +30 +25 +11 +20 +18 +12 +10 +10 +15 +9 +9 +21 +24 +5 +5 +7 +1 +-1 +1 +0 +1 +7 +-1 +-1 +16 +2 +7 +-4 +-3 +0 +2 +1 +-5 +-5 +-5 +1 +3 +1 +4 +2 +-1 +-3 +1 +-1 +-2 +1 +-3 +-1 +1 +9 +-2 +-2 +-1 +6 +5 +8 +9 +9 +5 +2 +-6 +-5 +1 +8 +0 +-2 +-7 +8 +9 +-3 +1 +-1 +-5 +1 +-2 +-4 +-5 +-2 +1 +1 +4 +-3 +-1 +-1 +8 +0 +4 +13 +2 +-4 +-6 +4 +4 +-2 +-4 +-3 +-3 +0 From e8ff188868fff6b591fbd31f411dac4c9f16fa8c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 17:03:23 +0200 Subject: [PATCH 062/299] added a test for cotag demodulation via data commands --- CHANGELOG.md | 1 + tools/pm3_tests.sh | 14 ++++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f39a12af4..96cabb6ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added new test for cotag demod using data commands in pm3_test.sh (@iceman1001) - Added new sample trace file for cotag w fc/272. Thanks s1acky! (@iceman1001) - Fixed `hf legic eload` - now it doesn't crash client (@doegox) - Changed `lf hitag *` - rework client side (@doegox) diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index ad50121f5..57d502aba 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -384,13 +384,15 @@ while true; do if ! CheckExecute "jooki encode test" "$CLIENTBIN -c 'hf jooki encode -t'" "04 28 F4 DA F0 4A 81 \( ok \)"; then break; fi if ! CheckExecute "trace load/list 14a" "$CLIENTBIN -c 'trace load -f traces/hf_14a_mfu.trace; trace list -1 -t 14a;'" "READBLOCK\(8\)"; then break; fi if ! CheckExecute "trace load/list x" "$CLIENTBIN -c 'trace load -f traces/hf_14a_mfu.trace; trace list -x1 -t 14a;'" "0.0101840425"; then break; fi - if ! CheckExecute "nfc decode test - oob" "$CLIENTBIN -c 'nfc decode -d DA2010016170706C69636174696F6E2F766E642E626C7565746F6F74682E65702E6F6F62301000649201B96DFB0709466C65782032'" "Flex 2"; then break; fi - if ! CheckExecute "nfc decode test - device info" "$CLIENTBIN -c 'nfc decode -d d1025744690004536f6e79010752432d533338300220426c61636b204e46432052656164657220636f6e6e656374656420746f2050430310123e4567e89b12d3a45642665544000004124e464320506f72742d3130302076312e3032'" "NFC Port-100 v1.02"; then break; fi - if ! CheckExecute "nfc decode test - vcard" "$CLIENTBIN -c 'nfc decode -d d20ca3746578742f782d7643617264424547494e3a56434152440a56455253494f4e3a332e300a4e3a43687269733b4963656d616e3b3b3b0a464e3a476f7468656e627572670a5245563a323032312d30362d32345432303a31353a30385a0a6974656d322e582d4142444154453b747970653d707265663a323032302d30362d32340a4954454d322e582d41424c4142454c3a5f24213c416e6e69766572736172793e21245f0a454e443a56434152440a'" "END:VCARD"; then break; fi - if ! CheckExecute "nfc decode test - apple wallet" "$CLIENTBIN -c 'nfc decode -d 031AD10116550077616C6C65743A2F2F61637469766174652F6E6663FE'" "activate/nfc"; then break; fi - if ! CheckExecute "nfc decode test - signature" "$CLIENTBIN -c 'nfc decode -d 03FF010194113870696C65742E65653A656B616172743A3266195F26063132303832325904202020205F28033233335F2701316E1B5A13333038363439303039303030323636343030355304EBF2CE704103000000AC536967010200803A2448FCA7D354A654A81BD021150D1A152D1DF4D7A55D2B771F12F094EAB6E5E10F2617A2F8DAD4FD38AFF8EA39B71C19BD42618CDA86EE7E144636C8E0E7CFC4096E19C3680E09C78A0CDBC05DA2D698E551D5D709717655E56FE3676880B897D2C70DF5F06ECE07C71435255144F8EE41AF110E7B180DA0E6C22FB8FDEF61800025687474703A2F2F70696C65742E65652F6372742F33303836343930302D303030312E637274FE'" "30864900-0001.crt"; then break; fi + if ! CheckExecute "nfc decode test - oob" "$CLIENTBIN -c 'nfc decode -d DA2010016170706C69636174696F6E2F766E642E626C7565746F6F74682E65702E6F6F62301000649201B96DFB0709466C65782032'" "Flex 2"; then break; fi + if ! CheckExecute "nfc decode test - device info" "$CLIENTBIN -c 'nfc decode -d d1025744690004536f6e79010752432d533338300220426c61636b204e46432052656164657220636f6e6e656374656420746f2050430310123e4567e89b12d3a45642665544000004124e464320506f72742d3130302076312e3032'" "NFC Port-100 v1.02"; then break; fi + if ! CheckExecute "nfc decode test - vcard" "$CLIENTBIN -c 'nfc decode -d d20ca3746578742f782d7643617264424547494e3a56434152440a56455253494f4e3a332e300a4e3a43687269733b4963656d616e3b3b3b0a464e3a476f7468656e627572670a5245563a323032312d30362d32345432303a31353a30385a0a6974656d322e582d4142444154453b747970653d707265663a323032302d30362d32340a4954454d322e582d41424c4142454c3a5f24213c416e6e69766572736172793e21245f0a454e443a56434152440a'" "END:VCARD"; then break; fi + if ! CheckExecute "nfc decode test - apple wallet" "$CLIENTBIN -c 'nfc decode -d 031AD10116550077616C6C65743A2F2F61637469766174652F6E6663FE'" "activate/nfc"; then break; fi + if ! CheckExecute "nfc decode test - signature" "$CLIENTBIN -c 'nfc decode -d 03FF010194113870696C65742E65653A656B616172743A3266195F26063132303832325904202020205F28033233335F2701316E1B5A13333038363439303039303030323636343030355304EBF2CE704103000000AC536967010200803A2448FCA7D354A654A81BD021150D1A152D1DF4D7A55D2B771F12F094EAB6E5E10F2617A2F8DAD4FD38AFF8EA39B71C19BD42618CDA86EE7E144636C8E0E7CFC4096E19C3680E09C78A0CDBC05DA2D698E551D5D709717655E56FE3676880B897D2C70DF5F06ECE07C71435255144F8EE41AF110E7B180DA0E6C22FB8FDEF61800025687474703A2F2F70696C65742E65652F6372742F33303836343930302D303030312E637274FE'" "30864900-0001.crt"; then break; fi echo -e "\n${C_BLUE}Testing LF:${C_NC}" + if ! CheckExecute "lf cotag demod test" "$CLIENTBIN -c 'data load -f traces/lf_cotag_220_8331.pm3; data norm; data cthreshold -u 50 -d -20; data envelope; data raw --ar -c 272; lf cotag demod'" \ + "COTAG Found: FC 220, CN: 8331 Raw: FFB841170363FFFE00001E7F00000000"; then break; fi if ! CheckExecute "lf AWID test" "$CLIENTBIN -c 'data load -f traces/lf_AWID-15-259.pm3;lf search -1'" "AWID ID found"; then break; fi if ! CheckExecute "lf EM410x test" "$CLIENTBIN -c 'data load -f traces/lf_EM4102-1.pm3;lf search -1'" "EM410x ID found"; then break; fi if ! CheckExecute "lf EM4x05 test" "$CLIENTBIN -c 'data load -f traces/lf_EM4x05.pm3;lf search -1'" "FDX-B ID found"; then break; fi @@ -505,7 +507,7 @@ while true; do if ! CheckExecute slow "hf iclass loclass long test" "$CLIENTBIN -c 'hf iclass loclass --long'" "verified \( ok \)"; then break; fi if ! CheckExecute slow "emv long test" "$CLIENTBIN -c 'emv test -l'" "Test\(s\) \[ ok"; then break; fi if ! CheckExecute "hf iclass lookup test" "$CLIENTBIN -c 'hf iclass lookup --csn 9655a400f8ff12e0 --epurse f0ffffffffffffff --macs 0000000089cb984b -f $DICPATH/iclass_default_keys.dic'" \ - "valid key AE A6 84 A6 DA B2 32 78"; then break; fi + dat "valid key AE A6 84 A6 DA B2 32 78"; then break; fi if ! CheckExecute "hf iclass loclass test" "$CLIENTBIN -c 'hf iclass loclass --test'" "key diversification \( ok \)"; then break; fi if ! CheckExecute "emv test" "$CLIENTBIN -c 'emv test'" "Test\(s\) \[ ok"; then break; fi if ! CheckExecute "hf cipurse test" "$CLIENTBIN -c 'hf cipurse test'" "Tests \[ ok"; then break; fi From b277e667c9b9dd267b374ecd9ebd02bec6a5d871 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 17:04:21 +0200 Subject: [PATCH 063/299] text --- client/src/cmddata.c | 18 +++++++++--------- client/src/cmdlfcotag.c | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 0ac3c0f4e..9486402d1 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -440,7 +440,7 @@ int ASKDemod_ext(int clk, int invert, int maxErr, size_t maxlen, bool amplify, b clk /= 2; } if (errCnt < 0 || bitlen < 16) { //if fatal error (or -1) - PrintAndLogEx(DEBUG, "DEBUG: (ASKDemod_ext) No data found errors:%d, %s bitlen:%zu, clock:%d" + PrintAndLogEx(DEBUG, "DEBUG: (ASKDemod_ext) No data found errors:%d, %s bitlen:%zu, clock:%i" , errCnt , (invert) ? "inverted," : "" , bitlen @@ -451,7 +451,7 @@ int ASKDemod_ext(int clk, int invert, int maxErr, size_t maxlen, bool amplify, b } if (errCnt > maxErr) { - PrintAndLogEx(DEBUG, "DEBUG: (ASKDemod_ext) Too many errors found, errors:%d, bits:%zu, clock:%d" + PrintAndLogEx(DEBUG, "DEBUG: (ASKDemod_ext) Too many errors found, errors:%d, bits:%zu, clock:%i" , errCnt , bitlen , clk @@ -461,7 +461,7 @@ int ASKDemod_ext(int clk, int invert, int maxErr, size_t maxlen, bool amplify, b } if (verbose) { - PrintAndLogEx(DEBUG, "DEBUG: (ASKDemod_ext) using clock:%d, %sbits found:%zu, start index %d" + PrintAndLogEx(DEBUG, "DEBUG: (ASKDemod_ext) using clock:%i, %sbits found:%zu, start index %d" , clk , (invert) ? "inverted, " : "" , bitlen @@ -475,14 +475,14 @@ int ASKDemod_ext(int clk, int invert, int maxErr, size_t maxlen, bool amplify, b if (verbose) { if (errCnt > 0) - PrintAndLogEx(DEBUG, "# Errors during demoding (shown as 7 in bit stream): %d", errCnt); + PrintAndLogEx(DEBUG, "# Errors during demoding (shown as 7 in bit stream)... " _RED_("%d"), errCnt); if (askType) { - PrintAndLogEx(SUCCESS, _YELLOW_("ASK/Manchester") " - clock %d - decoded bitstream", clk); - PrintAndLogEx(INFO, "---------------------------------------------"); + PrintAndLogEx(SUCCESS, _YELLOW_("ASK/Manchester") " - clock " _YELLOW_("%i") " - decoded bitstream", clk); + PrintAndLogEx(INFO, "-----------------------------------------------"); } else { - PrintAndLogEx(SUCCESS, _YELLOW_("ASK/Raw") " - clock %d - decoded bitstream", clk); - PrintAndLogEx(INFO, "--------------------------------------"); + PrintAndLogEx(SUCCESS, _YELLOW_("ASK/Raw") " - clock " _YELLOW_("%i") " - decoded bitstream", clk); + PrintAndLogEx(INFO, "----------------------------------------"); } printDemodBuff(0, false, false, false); @@ -1369,7 +1369,7 @@ int NRZrawDemod(int clk, int invert, int maxErr, bool verbose) { if (errCnt > 0 && (verbose || g_debugMode)) PrintAndLogEx(DEBUG, "DEBUG: (NRZrawDemod) Errors during Demoding (shown as 7 in bit stream): %d", errCnt); if (verbose || g_debugMode) { - PrintAndLogEx(NORMAL, "NRZ demoded bitstream:"); + PrintAndLogEx(SUCCESS, "NRZ demoded bitstream:"); // Now output the bitstream to the scrollback by line of 16 bits printDemodBuff(0, false, invert, false); } diff --git a/client/src/cmdlfcotag.c b/client/src/cmdlfcotag.c index 4a3a5f6e6..8161ceacc 100644 --- a/client/src/cmdlfcotag.c +++ b/client/src/cmdlfcotag.c @@ -62,7 +62,7 @@ int demodCOTAG(bool verbose) { 0 1001 1100 1100 0001 1000 0101 0000 0000 100001010000000001111011100000011010000010000000000000000000000000000000000000000000000000000000100111001100000110000101000 1001 1100 1100 0001 10000101 */ - PrintAndLogEx(SUCCESS, "COTAG Found: FC %u, CN: %u Raw: %08X%08X%08X%08X", fc, cn, raw1, raw2, raw3, raw4); + PrintAndLogEx(SUCCESS, "COTAG Found: FC " _GREEN_("%u")", CN: " _GREEN_("%u")" Raw: %08X%08X%08X%08X", fc, cn, raw1, raw2, raw3, raw4); return PM3_SUCCESS; } From c01c0427bb3e8deaee2d518f55da622ac340e822 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 17:05:18 +0200 Subject: [PATCH 064/299] forgot the clock changes. --- common/lfdemod.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/common/lfdemod.c b/common/lfdemod.c index 42ac2bcc0..5e2f1fa54 100644 --- a/common/lfdemod.c +++ b/common/lfdemod.c @@ -915,11 +915,11 @@ int DetectStrongNRZClk(const uint8_t *dest, size_t size, int peak, int low, bool // detect nrz clock by reading #peaks vs no peaks(or errors) int DetectNRZClock(uint8_t *dest, size_t size, int clock, size_t *clockStartIdx) { size_t i = 0; - uint8_t clk[] = {8, 16, 32, 40, 50, 64, 100, 128, 255}; + uint16_t clk[] = {8, 16, 32, 40, 50, 64, 100, 128, 255, 272, 384}; size_t loopCnt = 4096; //don't need to loop through entire array... //if we already have a valid clock quit - for (; i < 8; ++i) + for (; i < ARRAYLEN(clk); ++i) if (clk[i] == clock) return clock; if (size < 20) return 0; @@ -946,7 +946,7 @@ int DetectNRZClock(uint8_t *dest, size_t size, int clock, size_t *clockStartIdx) uint8_t tol = 0; uint16_t smplCnt = 0; int16_t peakcnt = 0; - int16_t peaksdet[] = {0, 0, 0, 0, 0, 0, 0, 0}; + int16_t peaksdet[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; uint16_t minPeak = 255; bool firstpeak = true; //test for large clipped waves - ignore first peak @@ -969,10 +969,10 @@ int DetectNRZClock(uint8_t *dest, size_t size, int clock, size_t *clockStartIdx) bool errBitHigh = 0, bitHigh = 0, lastPeakHigh = 0; uint8_t ignoreCnt = 0, ignoreWindow = 4; int lastBit = 0; - size_t bestStart[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; + size_t bestStart[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; peakcnt = 0; //test each valid clock from smallest to greatest to see which lines up - for (clkCnt = 0; clkCnt < 8; ++clkCnt) { + for (clkCnt = 0; clkCnt < ARRAYLEN(bestStart); ++clkCnt) { //ignore clocks smaller than smallest peak if (clk[clkCnt] < minPeak - (clk[clkCnt] / 4)) continue; //try lining up the peaks by moving starting point (try first 256) @@ -1025,7 +1025,7 @@ int DetectNRZClock(uint8_t *dest, size_t size, int clock, size_t *clockStartIdx) } uint8_t best = 0; - for (int m = 7; m > 0; m--) { + for (int m = ARRAYLEN(peaksdet); m > 0; m--) { if ((peaksdet[m] >= (peaksdet[best] - 1)) && (peaksdet[m] <= peaksdet[best] + 1) && lowestTransition) { if (clk[m] > (lowestTransition - (clk[m] / 8)) && clk[m] < (lowestTransition + (clk[m] / 8))) { best = m; From a918dc772ef8a3de4ba760785b43f7093645b813 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 17:12:14 +0200 Subject: [PATCH 065/299] updated to match --- doc/cheatsheet.md | 51 +++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/doc/cheatsheet.md b/doc/cheatsheet.md index 22e47b3f1..a859f4392 100644 --- a/doc/cheatsheet.md +++ b/doc/cheatsheet.md @@ -514,24 +514,22 @@ Read Hitag information pm3 --> lf hitag info ``` -Act as Hitag reader +Read Hitag memory +Crypto mode key format: ISK high + ISK low ``` Options --- - --01 HitagS, read all pages, challenge mode - --02 HitagS, read all pages, crypto mode. Set key=0 for no auth - - --21 Hitag2, read all pages, password mode. def 4D494B52 (MIKR) - --22 Hitag2, read all pages, challenge mode - --23 Hitag2, read all pages, crypto mode. Key ISK high + ISK low. def 4F4E4D494B52 (ONMIKR) - --25 Hitag2, test recorded authentications (replay?) - --26 Hitag2, read UID --k, --key key, 4 or 6 hex bytes - --nrar nonce / answer reader, 8 hex bytes + -h, --help This help + -s, --hts Hitag S + -2, --ht2 Hitag 2 + --pwd password mode + --nrar nonce / answer writer, 8 hex bytes + --crypto crypto mode + -k, --key key, 4 or 6 hex bytes -pm3 --> lf hitag --26 -pm3 --> lf hitag --21 -k 4D494B52 -pm3 --> lf hitag reader --23 -k 4F4E4D494B52 +pm3 --> lf hitag read --ht2 +pm3 --> lf hitag read --ht2 -k 4D494B52 +pm3 --> lf hitag read --ht2 -k 4F4E4D494B52 ``` Sniff Hitag traffic @@ -545,26 +543,27 @@ Simulate Hitag2 pm3 --> lf hitag sim -2 ``` -Write to Hitag block +Write a page in Hitag memory +Crypto mode key format: ISK high + ISK low ``` Options --- - --03 HitagS, write page, challenge mode - --04 HitagS, write page, crypto mode. Set key=0 for no auth + -h, --help This help + -s, --hts Hitag S + -2, --ht2 Hitag 2 + --pwd password mode + --nrar nonce / answer writer, 8 hex bytes + --crypto crypto mode + -k, --key key, 4 or 6 hex bytes + -p, --page page address to write to + -d, --data data, 4 hex bytes - --24 Hitag2, write page, crypto mode. - --27 Hitag2, write page, password mode --p, --page page address to write to --d, --data data, 4 hex bytes --k, --key key, 4 or 6 hex bytes - --nrar nonce / answer writer, 8 hex bytes - -pm3 --> lf hitag writer --24 -k 499602D2 -p 1 -d 00000000 +pm3 --> lf hitag wrbl --ht2 -k 499602D2 -p 1 -d 00000000 ``` Simulate Hitag2 sequence ``` -pm3 --> lf hitag reader --21 -k 56713368 +pm3 --> lf hitag read --ht2 -k 56713368 pm3 --> lf hitag sim -2 ``` From c1416ba256d83af631144bd71f57907f5aa08289 Mon Sep 17 00:00:00 2001 From: DidierA <1620015+DidierA@users.noreply.github.com> Date: Fri, 21 Jul 2023 17:25:49 +0200 Subject: [PATCH 066/299] Adds MAC, UNMACed to messages, and code factorisation --- client/src/cmdhflist.c | 167 ++++++++++++++++++++++------------------- client/src/cmdhflist.h | 3 + 2 files changed, 91 insertions(+), 79 deletions(-) diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index 2001c4370..663a3450d 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -273,7 +273,7 @@ int applyIso14443a(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, bool i MifareAuthState = masNone; break; case ISO14443A_CMD_RATS: - snprintf(exp, size, "RATS - FSDI=0x%x, CID=0x%x", (cmd[1] & 0xF0) >> 4, (cmd[1] & 0x0F) ); + snprintf(exp, size, "RATS - FSDI=%x, CID=%x", (cmd[1] & 0xF0) >> 4, (cmd[1] & 0x0F) ); break; /* Actually, PPSS is Dx case ISO14443A_CMD_PPS: @@ -429,7 +429,7 @@ int applyIso14443a(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, bool i default: if ( (cmd[0] & 0xF0) == 0xD0 && ( cmdsize == 4 || cmdsize == 5 )) { - snprintf(exp, size, "PPSS - CID=0x%x", cmd[0] & 0x0F) ; + snprintf(exp, size, "PPS - CID=%x", cmd[0] & 0x0F) ; } else { return PM3_ESOFT; } @@ -1202,7 +1202,10 @@ void annotateMfDesfire(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { } } } -// codes for which no data is interpreted, returns the message to print. + +// MIFARE Plus + +// returns the message to print for a given opcode. const char *mfpGetAnnotationForCode(uint8_t code) { struct mfp_code_msg { uint8_t code; @@ -1222,6 +1225,19 @@ const char *mfpGetAnnotationForCode(uint8_t code) { { MFDES_PREPARE_PC, "PREPARE PROXIMITY CHECK"}, { MFDES_PROXIMITY_CHECK, "PROXIMITY CHECK"}, { MFDES_VERIFY_PC, "VERIFY PROXIMITY CHECK"}, + { MFDES_COMMIT_READER_ID, "COMMIT READER ID"}, + { MFP_INCREMENTNOMAC, "INCREMENT"}, + { MFP_INCREMENTMAC, "INCREMENT"}, + { MFP_DECREMENTMAC, "DECREMENT"}, + { MFP_DECREMENTNOMAC, "DECREMENT"}, + { MFP_TRANSFERNOMAC, "TRANSFER"}, + { MFP_TRANSFERMAC, "TRANSFER"}, + { MFP_INCREMENTTRANSFERNOMAC, "INCREMENT, TRANSFER"}, + { MFP_INCREMENTTRANSFERMAC, "INCREMENT, TRANSFER"}, + { MFP_DECREMENTTRANSFERNOMAC, "DECREMENT, TRANSFER"}, + { MFP_DECREMENTTRANSFERMAC, "DECREMENT, TRANSFER"}, + { MFP_RESTORENOMAC, "RESTORE"}, + { MFP_RESTOREMAC, "RESTORE"}, { 0, NULL} } ; @@ -1233,7 +1249,44 @@ const char *mfpGetAnnotationForCode(uint8_t code) { return NULL ; } -// MIFARE Plus +const char *mfpGetEncryptedForCode(uint8_t code){ + /* + encrypted |plain : bit 1 + 30 A0 0000 32 A2 0010 + 31 A1 0001 33 A3 0011 + 34 0100 36 0110 + 35 0101 37 0111 + */ + if ((code & 0x02) == 2) { + return "PLAIN" ; + } + return "ENCRYPTED" ; +} + +/* + response |command + NOMAC MAC UnMACed MACed + 30 31 34 30,A0 + 32 33 35 31,A1 + A0 A1 36 32,A2 + A2 A3 37 33,A3 + bit 0 is response: NOMAC if 0, MAC if 1 + bit 2 is command: UNMACed if 1, MACed if 0 +*/ +const char *mfpGetResponseMacedForCode(uint8_t code) { + if (( code & 0x01) == 0x00) { + return "NoMAC" ; + } + return "MAC" ; +} + +const char *mfpGetCommandMacedForCode(uint8_t code) { + if (( code & 0x04) == 0x04) { + return "UnMACed" ; + } + return "MACed" ; +} + void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { // If we are in Mifare Classic Authenticated mode, all the work has already be done elsewhere @@ -1269,8 +1322,8 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { if (cmdsize > (data - cmd)) { data_size = cmdsize - (data - cmd); } - - switch (cmd[pos]) { + uint8_t opcode=cmd[pos] ; + switch (opcode) { case MFP_AUTHENTICATEFIRST: case MFP_AUTHENTICATEFIRST_VARIANT: if (data_size > 1) { @@ -1295,119 +1348,75 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { case MFP_READENCRYPTEDMAC_MACED: case MFP_READENCRYPTEDNOMAC_UNMACED: case MFP_READENCRYPTEDMAC_UNMACED: - if (data_size > 2) { - uint16_t uBlockNum = MemLeToUint2byte(data) ; - uint8_t uQty = data[2] ; - if (uQty != 1) { - snprintf(exp, size, "READ ENCRYPTED(%u-%u)", uBlockNum, uBlockNum+uQty-1); - } else { - snprintf(exp, size, "READ ENCRYPTED(%u)", uBlockNum); - } - } else { - snprintf(exp, size, "READ ENCRYPTED ?"); - } - break; - case MFP_READPLAINNOMAC_MACED: case MFP_READPLAINMAC_MACED: case MFP_READPLAINNOMAC_UNMACED: - case MFP_READPLAINMAC_UNMACED: + case MFP_READPLAINMAC_UNMACED: { + const char *encrypted = mfpGetEncryptedForCode(opcode) ; + const char *responseMaced = mfpGetResponseMacedForCode(opcode) ; + const char *commandMaced = mfpGetCommandMacedForCode(opcode) ; + if (data_size > 2) { uint16_t uBlockNum = MemLeToUint2byte(data) ; uint8_t uQty = data[2] ; if (uQty != 1) { - snprintf(exp, size, "READ PLAIN(%u-%u)", uBlockNum, uBlockNum+uQty-1); + snprintf(exp, size, "READ %s(%u-%u) %s_%s", encrypted, uBlockNum, uBlockNum+uQty-1, responseMaced, commandMaced); } else { - snprintf(exp, size, "READ PLAIN(%u)", uBlockNum); + snprintf(exp, size, "READ %s(%u) %s_%s", encrypted, uBlockNum, responseMaced, commandMaced); } } else { - snprintf(exp, size, "READ PLAIN ?"); + snprintf(exp, size, "READ %s %s_%s ?", encrypted, responseMaced, commandMaced); } break; - + } + case MFP_WRITEPLAINNOMAC : case MFP_WRITEPLAINMAC : - if (data_size > 1) { - uint16_t uBlockNum = MemLeToUint2byte(data) ; - snprintf(exp, size, "WRITE PLAIN(%u)", uBlockNum); - } else { - snprintf(exp, size, "WRITE PLAIN ?"); - } - break; - case MFP_WRITEENCRYPTEDNOMAC: - case MFP_WRITEENCRYPTEDMAC : + case MFP_WRITEENCRYPTEDMAC :{ + const char *encrypted = mfpGetEncryptedForCode(opcode) ; + const char *responseMaced = mfpGetResponseMacedForCode(opcode) ; + if (data_size > 1) { uint16_t uBlockNum = MemLeToUint2byte(data) ; - snprintf(exp, size, "WRITE ENCRYPTED(%u)", uBlockNum); + snprintf(exp, size, "WRITE %s(%u) %s", encrypted, uBlockNum, responseMaced); } else { - snprintf(exp, size, "WRITE ENCRYPTED ?"); + snprintf(exp, size, "WRITE %s %s ?", encrypted, responseMaced); } break; + } case MFP_INCREMENTNOMAC : case MFP_INCREMENTMAC : - if (data_size > 1) { - uint16_t uBlockNum = MemLeToUint2byte(data) ; - snprintf(exp, size, "INCREMENT(%u)", uBlockNum); - } else { - snprintf(exp, size, "INCREMENT ?"); - } - break; - case MFP_DECREMENTNOMAC : case MFP_DECREMENTMAC : - if (data_size > 1) { - uint16_t uBlockNum = MemLeToUint2byte(data) ; - snprintf(exp, size, "DECREMENT(%u)", uBlockNum); - } else { - snprintf(exp, size, "DECREMENT ?"); - } - break; - case MFP_TRANSFERNOMAC : case MFP_TRANSFERMAC : - if (data_size > 1) { - uint16_t uBlockNum = MemLeToUint2byte(data) ; - snprintf(exp, size, "TRANSFER(%u)", uBlockNum); - } else { - snprintf(exp, size, "TRANSFER ?"); - } - break; - case MFP_INCREMENTTRANSFERNOMAC: case MFP_INCREMENTTRANSFERMAC : - if (data_size > 1) { - uint16_t uBlockNum = MemLeToUint2byte(data) ; - snprintf(exp, size, "INCREMENT, TRANSFER(%u)", uBlockNum); - } else { - snprintf(exp, size, "INCREMENT, TRANSFER ?"); - } - break; - case MFP_DECREMENTTRANSFERNOMAC: case MFP_DECREMENTTRANSFERMAC : - if (data_size > 1) { - uint16_t uBlockNum = MemLeToUint2byte(data) ; - snprintf(exp, size, "DECREMENT, TRANSFER(%u)", uBlockNum); - } else { - snprintf(exp, size, "DECREMENT, TRANSFER ?"); - } - break; - case MFP_RESTORENOMAC : - case MFP_RESTOREMAC : + case MFP_RESTOREMAC :{ + const char *responseMaced = mfpGetResponseMacedForCode(opcode) ; + const char *annotation = mfpGetAnnotationForCode(opcode) ; + if (annotation == NULL) { + //should not happen outside of default case: it means an entry is mising in mfpGetAnnotationForCode() + annotation="?? MISSING OPCODE" ; + } + if (data_size > 1) { uint16_t uBlockNum = MemLeToUint2byte(data) ; - snprintf(exp, size, "RESTORE(%u)", uBlockNum); + snprintf(exp, size, "%s(%u) %s", annotation, uBlockNum, responseMaced); } else { - snprintf(exp, size, "RESTORE ?"); + snprintf(exp, size, "%s %s ?", annotation, responseMaced); } break; + } default: { // Messages for commands that do not need args are treated here - const char *annotation = mfpGetAnnotationForCode(cmd[pos]) ; + const char *annotation = mfpGetAnnotationForCode(opcode) ; if (annotation != NULL) { snprintf(exp, size, "%s", annotation) ; } else { diff --git a/client/src/cmdhflist.h b/client/src/cmdhflist.h index 7c7e09ffb..ab544a86f 100644 --- a/client/src/cmdhflist.h +++ b/client/src/cmdhflist.h @@ -57,6 +57,9 @@ void annotateIso14443b(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize); void annotateIso14443a(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, bool is_response); void annotateMfDesfire(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize); const char *mfpGetAnnotationForCode(uint8_t code); +const char *mfpGetEncryptedForCode(uint8_t code); +const char *mfpGetResponseMacedForCode(uint8_t code); +const char *mfpGetCommandMacedForCode(uint8_t code); void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize); void annotateMifare(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, const uint8_t *parity, uint8_t paritysize, bool isResponse); From cd2394b472a0df4ed66f2755aa8ab6de29d1067d Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 17:27:03 +0200 Subject: [PATCH 067/299] fix --- tools/pm3_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index 57d502aba..68d522ed6 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -507,7 +507,7 @@ while true; do if ! CheckExecute slow "hf iclass loclass long test" "$CLIENTBIN -c 'hf iclass loclass --long'" "verified \( ok \)"; then break; fi if ! CheckExecute slow "emv long test" "$CLIENTBIN -c 'emv test -l'" "Test\(s\) \[ ok"; then break; fi if ! CheckExecute "hf iclass lookup test" "$CLIENTBIN -c 'hf iclass lookup --csn 9655a400f8ff12e0 --epurse f0ffffffffffffff --macs 0000000089cb984b -f $DICPATH/iclass_default_keys.dic'" \ - dat "valid key AE A6 84 A6 DA B2 32 78"; then break; fi + "valid key AE A6 84 A6 DA B2 32 78"; then break; fi if ! CheckExecute "hf iclass loclass test" "$CLIENTBIN -c 'hf iclass loclass --test'" "key diversification \( ok \)"; then break; fi if ! CheckExecute "emv test" "$CLIENTBIN -c 'emv test'" "Test\(s\) \[ ok"; then break; fi if ! CheckExecute "hf cipurse test" "$CLIENTBIN -c 'hf cipurse test'" "Tests \[ ok"; then break; fi From 1a19640d188c34babac184a00946bfece80a3ff4 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 21 Jul 2023 18:22:46 +0200 Subject: [PATCH 068/299] make style --- client/luascripts/hf_legic.lua | 20 ++-- client/src/cmddata.c | 8 +- client/src/cmdhflist.c | 32 +++--- client/src/cmdhfmf.c | 34 +++--- client/src/cmdlfhitag.c | 6 +- client/src/crypto/asn1utils.c | 10 +- client/src/pm3line_vocabulory.h | 13 ++- doc/commands.json | 188 +++++++++++++++++++++----------- doc/commands.md | 23 ++-- 9 files changed, 198 insertions(+), 136 deletions(-) diff --git a/client/luascripts/hf_legic.lua b/client/luascripts/hf_legic.lua index 052f7ab06..6dcb9d8ca 100644 --- a/client/luascripts/hf_legic.lua +++ b/client/luascripts/hf_legic.lua @@ -382,7 +382,7 @@ function getInputBytes(infile) local arr = split(infile, ".") local path = core.search_file(arr[1], "."..arr[2]) if (path == nil) then oops("failed to read from file ".. infile); return false; end - + local fhi,err = io.open(path,"rb") if err then oops("failed to read from file ".. path); return false; end @@ -688,7 +688,7 @@ end -- write bytes to file function writeFile(bytes, filename) local emlext = ".eml" - local res, path + local res, path if (filename ~= 'MyLegicClone') then res, path = file_check(filename..emlext) if res then @@ -765,7 +765,7 @@ function readFromPM3() if not res then return nil end os.remove(path) - res, path = file_check(infile..".eml") + res, path = file_check(infile..".eml") os.remove(path) res, path = file_check(infile..".json") @@ -886,7 +886,7 @@ function loadTagMap(filename) if not res then return oops("input file: "..acyellow..filename..acoff.." not found") else - + local fhi,err = io.open(path) while true do line = fhi:read() @@ -956,7 +956,7 @@ function dumpTagMap(tag, tagMap) else io.write("("..("%04d"):format(v['start']).."-"..("%04d"):format(v['end'])..") "..((v['highlight']) and acmagenta or acyellow)..v['name']..acoff) end - + temp = "" while (#v['name'] + temp:len()) < 20 do temp = temp.." " end @@ -1015,14 +1015,14 @@ function editTagMap(tag, tagMap) ]]..acc..[[Mappings]]..acr..[[ - ]]..acy..[[im]]..acr..[[ - insert ]]..acy..[[am]]..acr..[[ - add + ]]..acy..[[im]]..acr..[[ - insert ]]..acy..[[am]]..acr..[[ - add ]]..acy..[[rm]]..acr..[[ - remove ]]..acy..[[mas]]..acr..[[ - map all segments ]]..acc..[[CRC8]]..acr..[[ - ]]..acy..[[ac8]]..acr..[[ - add ]]..acy..[[sc8]]..acr..[[ - show + ]]..acy..[[ac8]]..acr..[[ - add ]]..acy..[[sc8]]..acr..[[ - show ]]..acy..[[rc8]]..acr..[[ - remove - + ]]..acy..[[q]]..acr..[[ - exit ]]..acy..[[h]]..acr..[[ - Help ]] @@ -2446,7 +2446,7 @@ function modifyMode() outfile = input("enter filename:", "hf-legic-"..inTAG.MCD..inTAG.MSN0..inTAG.MSN1..inTAG.MSN2) bytes = tagToBytes(inTAG) --bytes=xorBytes(bytes, inTAG.MCC) - if (bytes) then + if (bytes) then writeFile(bytes, outfile) end end @@ -2854,7 +2854,7 @@ function main(args) -- write to outfile if (bytes) then - + if (outfile) then writeFile(bytes, outfile) end diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 9486402d1..43fa20911 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -3320,14 +3320,14 @@ int centerThreshold(const int *in, int *out, size_t len, int8_t up, int8_t down) for (size_t i = 0; i < len; ++i) { if ((in[i] <= up) && (in[i] >= down)) { out[i] = 0; - } + } } // clean out spikes. for (size_t i = 2; i < len - 2; ++i) { - int a = out[i-2] + out[i-1]; - int b = out[i+2] + out[i+1]; + int a = out[i - 2] + out[i - 1]; + int b = out[i + 2] + out[i + 1]; if (a == 0 && b == 0) { out[i] = 0; } @@ -3372,7 +3372,7 @@ static int envelope_square(const int *in, int *out, size_t len) { for (size_t i = 0; i < len - 5; i++) { - if (in[i] == 0 && in[i+1] == 0 && in[i+2] == 0 && in[i+3] == 0 && in[i+4] == 0) { + if (in[i] == 0 && in[i + 1] == 0 && in[i + 2] == 0 && in[i + 3] == 0 && in[i + 4] == 0) { i += 4; continue; } diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index 663a3450d..cf848d090 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -273,7 +273,7 @@ int applyIso14443a(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, bool i MifareAuthState = masNone; break; case ISO14443A_CMD_RATS: - snprintf(exp, size, "RATS - FSDI=%x, CID=%x", (cmd[1] & 0xF0) >> 4, (cmd[1] & 0x0F) ); + snprintf(exp, size, "RATS - FSDI=%x, CID=%x", (cmd[1] & 0xF0) >> 4, (cmd[1] & 0x0F)); break; /* Actually, PPSS is Dx case ISO14443A_CMD_PPS: @@ -428,7 +428,7 @@ int applyIso14443a(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize, bool i break; default: - if ( (cmd[0] & 0xF0) == 0xD0 && ( cmdsize == 4 || cmdsize == 5 )) { + if ((cmd[0] & 0xF0) == 0xD0 && (cmdsize == 4 || cmdsize == 5)) { snprintf(exp, size, "PPS - CID=%x", cmd[0] & 0x0F) ; } else { return PM3_ESOFT; @@ -1241,7 +1241,7 @@ const char *mfpGetAnnotationForCode(uint8_t code) { { 0, NULL} } ; - for (struct mfp_code_msg *p=messages ; p->annotation != NULL ; p++) { + for (struct mfp_code_msg *p = messages ; p->annotation != NULL ; p++) { if (p->code == code) { return p->annotation ; } @@ -1249,8 +1249,8 @@ const char *mfpGetAnnotationForCode(uint8_t code) { return NULL ; } -const char *mfpGetEncryptedForCode(uint8_t code){ - /* +const char *mfpGetEncryptedForCode(uint8_t code) { + /* encrypted |plain : bit 1 30 A0 0000 32 A2 0010 31 A1 0001 33 A3 0011 @@ -1263,10 +1263,10 @@ const char *mfpGetEncryptedForCode(uint8_t code){ return "ENCRYPTED" ; } -/* +/* response |command NOMAC MAC UnMACed MACed - 30 31 34 30,A0 + 30 31 34 30,A0 32 33 35 31,A1 A0 A1 36 32,A2 A2 A3 37 33,A3 @@ -1274,14 +1274,14 @@ const char *mfpGetEncryptedForCode(uint8_t code){ bit 2 is command: UNMACed if 1, MACed if 0 */ const char *mfpGetResponseMacedForCode(uint8_t code) { - if (( code & 0x01) == 0x00) { + if ((code & 0x01) == 0x00) { return "NoMAC" ; } return "MAC" ; } const char *mfpGetCommandMacedForCode(uint8_t code) { - if (( code & 0x04) == 0x04) { + if ((code & 0x04) == 0x04) { return "UnMACed" ; } return "MACed" ; @@ -1322,14 +1322,14 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { if (cmdsize > (data - cmd)) { data_size = cmdsize - (data - cmd); } - uint8_t opcode=cmd[pos] ; + uint8_t opcode = cmd[pos] ; switch (opcode) { case MFP_AUTHENTICATEFIRST: case MFP_AUTHENTICATEFIRST_VARIANT: if (data_size > 1) { // key : uint16_t uKeyNum = 0x4000 + sectorNum * 2 + (keyB ? 1 : 0); uint16_t uKeyNum = MemLeToUint2byte(data) ; - snprintf(exp, size, "FIRST AUTH (Keynr 0x%04X: %c sector %d)", uKeyNum, uKeyNum & 0x0001 ? 'B' : 'A', (uKeyNum - 0x4000)/2 ); + snprintf(exp, size, "FIRST AUTH (Keynr 0x%04X: %c sector %d)", uKeyNum, uKeyNum & 0x0001 ? 'B' : 'A', (uKeyNum - 0x4000) / 2); } else { snprintf(exp, size, "FIRST AUTH") ; } @@ -1360,7 +1360,7 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { uint16_t uBlockNum = MemLeToUint2byte(data) ; uint8_t uQty = data[2] ; if (uQty != 1) { - snprintf(exp, size, "READ %s(%u-%u) %s_%s", encrypted, uBlockNum, uBlockNum+uQty-1, responseMaced, commandMaced); + snprintf(exp, size, "READ %s(%u-%u) %s_%s", encrypted, uBlockNum, uBlockNum + uQty - 1, responseMaced, commandMaced); } else { snprintf(exp, size, "READ %s(%u) %s_%s", encrypted, uBlockNum, responseMaced, commandMaced); } @@ -1369,11 +1369,11 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { } break; } - + case MFP_WRITEPLAINNOMAC : case MFP_WRITEPLAINMAC : case MFP_WRITEENCRYPTEDNOMAC: - case MFP_WRITEENCRYPTEDMAC :{ + case MFP_WRITEENCRYPTEDMAC : { const char *encrypted = mfpGetEncryptedForCode(opcode) ; const char *responseMaced = mfpGetResponseMacedForCode(opcode) ; @@ -1397,12 +1397,12 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { case MFP_DECREMENTTRANSFERNOMAC: case MFP_DECREMENTTRANSFERMAC : case MFP_RESTORENOMAC : - case MFP_RESTOREMAC :{ + case MFP_RESTOREMAC : { const char *responseMaced = mfpGetResponseMacedForCode(opcode) ; const char *annotation = mfpGetAnnotationForCode(opcode) ; if (annotation == NULL) { //should not happen outside of default case: it means an entry is mising in mfpGetAnnotationForCode() - annotation="?? MISSING OPCODE" ; + annotation = "?? MISSING OPCODE" ; } if (data_size > 1) { diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 06b7c8a18..0531b4f28 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -7035,12 +7035,12 @@ static int CmdHf14AMfSuperCard(const char *Cmd) { uint8_t aCHANGE[] = {0x00, 0xa6, 0xa0, 0x00, 0x05, 0xff, 0xff, 0xff, 0xff, 0x00}; memcpy(aCHANGE + 5, uid, uidlen); res = ExchangeAPDU14a( - aCHANGE, sizeof(aCHANGE), - activate_field, - keep_field_on, - response, sizeof(response), - &resplen - ); + aCHANGE, sizeof(aCHANGE), + activate_field, + keep_field_on, + response, sizeof(response), + &resplen + ); if (res != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Super card UID change [ " _RED_("fail") " ]"); @@ -7061,12 +7061,12 @@ static int CmdHf14AMfSuperCard(const char *Cmd) { // --------------- RESET CARD ---------------- uint8_t aRESET[] = {0x00, 0xa6, 0xc0, 0x00}; res = ExchangeAPDU14a( - aRESET, sizeof(aRESET), - activate_field, - keep_field_on, - response, sizeof(response), - &resplen - ); + aRESET, sizeof(aRESET), + activate_field, + keep_field_on, + response, sizeof(response), + &resplen + ); if (res != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Super card reset [ " _RED_("fail") " ]"); @@ -7157,11 +7157,11 @@ static int CmdHf14AMfSuperCard(const char *Cmd) { uint64_t key64 = -1; if (mfkey32_moebius(&data, &key64)) { PrintAndLogEx(SUCCESS, "UID: %s Sector %02x key %c [ " _GREEN_("%012" PRIX64) " ]", - sprint_hex_inrow(outA, 4), - data.sector, - (data.keytype == 0x60) ? 'A' : 'B', - key64 - ); + sprint_hex_inrow(outA, 4), + data.sector, + (data.keytype == 0x60) ? 'A' : 'B', + key64 + ); } else { PrintAndLogEx(FAILED, "failed to recover any key"); } diff --git a/client/src/cmdlfhitag.c b/client/src/cmdlfhitag.c index c3e30f61f..7fd58c798 100644 --- a/client/src/cmdlfhitag.c +++ b/client/src/cmdlfhitag.c @@ -631,7 +631,7 @@ static int CmdLFHitagReader(const char *Cmd) { memcpy(key, "MIKR", 4); keylen = 4; } - if ((keylen == 0) && use_crypto) { + if ((keylen == 0) && use_crypto) { memcpy(key, "ONMIKR", 6); keylen = 6; } @@ -888,7 +888,7 @@ static int CmdLFHitagWriter(const char *Cmd) { memcpy(key, "MIKR", 4); keylen = 4; } - if ((keylen == 0) && use_crypto) { + if ((keylen == 0) && use_crypto) { memcpy(key, "ONMIKR", 6); keylen = 6; } @@ -1047,7 +1047,7 @@ static int CmdLFHitag2Dump(const char *Cmd) { memcpy(key, "MIKR", 4); keylen = 4; } - if ((keylen == 0) && use_crypto) { + if ((keylen == 0) && use_crypto) { memcpy(key, "ONMIKR", 6); keylen = 6; } diff --git a/client/src/crypto/asn1utils.c b/client/src/crypto/asn1utils.c index 34b9a8e80..1fa839a7f 100644 --- a/client/src/crypto/asn1utils.c +++ b/client/src/crypto/asn1utils.c @@ -120,12 +120,12 @@ int asn1_selftest(void) { /* - ICEMAN: + ICEMAN: Problem to be solved, how to extract data back from our asn1 decoder to compare with the expected text found in the following test cases. Thanks @Mistial for the suggestion and links. These test cases are from the project lapo-luchini's asn1js (ISC license which is like MIT license) - https://github.com/lapo-luchini/asn1js/blob/trunk/test.js + https://github.com/lapo-luchini/asn1js/blob/trunk/test.js const asn1_test tests[] = { @@ -211,7 +211,7 @@ int asn1_selftest(void) { {"181531393835313130363231303632372E332D31323334", "1985-11-06 21:06:27.3 UTC-12:34", "UTC offsets with minutes"}, // GitHub issue #54 {"181331393835313130363231303632372E332B3134", "1985-11-06 21:06:27.3 UTC+14:00", "UTC offset +13 and +14"}, - }; + }; int tot = ARRAYLEN(tests); @@ -238,7 +238,7 @@ int asn1_selftest(void) { if (t) { bool candump = false; if (asn1_tag_dump(&t->tag, 0, &candump)) { - count++; + count++; } tlvdb_free(t); } @@ -250,6 +250,6 @@ int asn1_selftest(void) { PrintAndLogEx(NORMAL, ""); */ - + return PM3_SUCCESS; } diff --git a/client/src/pm3line_vocabulory.h b/client/src/pm3line_vocabulory.h index 950d8816f..b3f177ed2 100644 --- a/client/src/pm3line_vocabulory.h +++ b/client/src/pm3line_vocabulory.h @@ -83,6 +83,7 @@ const static vocabulory_t vocabulory[] = { { 1, "data autocorr" }, { 1, "data dirthreshold" }, { 1, "data decimate" }, + { 1, "data envelope" }, { 1, "data undecimate" }, { 1, "data hide" }, { 1, "data hpf" }, @@ -92,6 +93,7 @@ const static vocabulory_t vocabulory[] = { { 1, "data mtrim" }, { 1, "data norm" }, { 1, "data plot" }, + { 1, "data cthreshold" }, { 1, "data rtrim" }, { 1, "data setgraphmarkers" }, { 1, "data shiftgraphzero" }, @@ -599,15 +601,16 @@ const static vocabulory_t vocabulory[] = { { 0, "lf hid brute" }, { 0, "lf hid watch" }, { 1, "lf hitag help" }, - { 0, "lf hitag eload" }, { 1, "lf hitag list" }, { 0, "lf hitag info" }, - { 0, "lf hitag reader" }, - { 0, "lf hitag sim" }, - { 0, "lf hitag sniff" }, - { 0, "lf hitag writer" }, { 0, "lf hitag dump" }, + { 0, "lf hitag read" }, + { 0, "lf hitag wrbl" }, + { 0, "lf hitag sniff" }, { 0, "lf hitag cc" }, + { 0, "lf hitag ta" }, + { 0, "lf hitag eload" }, + { 0, "lf hitag sim" }, { 1, "lf idteck help" }, { 1, "lf idteck demod" }, { 0, "lf idteck reader" }, diff --git a/doc/commands.json b/doc/commands.json index 0618f5152..7e6061ec3 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -199,9 +199,10 @@ "offline": true, "options": [ "-h, --help This help", - "-d ASN1 encoded byte array" + "-d ASN1 encoded byte array", + "-t, --test perform selftest" ], - "usage": "data asn1 [-h] -d " + "usage": "data asn1 [-ht] [-d ]" }, "data autocorr": { "command": "data autocorr", @@ -283,6 +284,20 @@ ], "usage": "data convertbitstream [-h]" }, + "data cthreshold": { + "command": "data cthreshold", + "description": "Inverse of dirty threshold command, all values between up and down will be average out", + "notes": [ + "data cthreshold -u 10 -d -10" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-d, --down threshold down", + "-u, --up threshold up" + ], + "usage": "data cthreshold [-h] -d -u " + }, "data decimate": { "command": "data decimate", "description": "Performs decimation, by reducing samples N times in the grapbuf. Good for PSK", @@ -301,20 +316,18 @@ "command": "data detectclock", "description": "Detect ASK, FSK, NRZ, PSK clock rate of wave in GraphBuffer", "notes": [ - "data detectclock -A -> detect clock of an ask wave in GraphBuffer", - "data detectclock -F -> detect clock of an fsk wave in GraphBuffer", - "data detectclock -N -> detect clock of an psk wave in GraphBuffer", - "data detectclock -P -> detect clock of an nrz/direct wave in GraphBuffer" + "data detectclock --ask", + "data detectclock --nzr -> detect clock of an nrz/direct wave in GraphBuffer" ], "offline": true, "options": [ "-h, --help This help", - "-A, --ASK specify ASK modulation clock detection", - "-F, --FSK specify FSK modulation clock detection", - "-N, --NZR specify NZR/DIRECT modulation clock detection", - "-P, --PSK specify PSK modulation clock detection" + "--ask specify ASK modulation clock detection", + "--fsk specify FSK modulation clock detection", + "--nzr specify NZR/DIRECT modulation clock detection", + "--psk specify PSK modulation clock detection" ], - "usage": "data detectclock [-hAFNP]" + "usage": "data detectclock [-h] [--ask] [--fsk] [--nzr] [--psk]" }, "data diff": { "command": "data diff", @@ -352,6 +365,18 @@ ], "usage": "data dirthreshold [-h] -d -u " }, + "data envelope": { + "command": "data envelope", + "description": "Create an square envelop of the samples", + "notes": [ + "data envelop" + ], + "offline": true, + "options": [ + "-h, --help This help" + ], + "usage": "data envelop [-h]" + }, "data fsktonrz": { "command": "data fsktonrz", "description": "Convert fsk2 to nrz wave for alternate fsk demodulating (for weak fsk) Omitted values are autodetect instead", @@ -8638,19 +8663,29 @@ }, "lf hitag dump": { "command": "lf hitag dump", - "description": "Read all card memory and save to fileIn password mode the default key is 4D494B52 (MIKR) In crypto mode the default key is 4F4E4D494B52 (ONMIKR) format: ISK high + ISK low.", + "description": "Read all Hitag 2 card memory and save to file Crypto mode key format: ISK high + ISK low", "notes": [ - "lf hitag dump -k 4F4E4D494B52", - "lf hitag dump -k 4D494B52" + "Password mode => use default key 4D494B52 (MIKR)", + "lf hitag dump --pwd", + "Short key = password mode", + "lf hitag dump -k 4D494B52", + "Challenge mode", + "lf hitag dump --nrar 0102030411223344", + "Crypto mode => use default key 4F4E4D494B52 (ONMIKR)", + "lf hitag dump --crypto", + "Long key = crypto mode", + "lf hitag dump -k 4F4E4D494B52" ], "offline": false, "options": [ "-h, --help This help", - "-f, --file specify file name", + "--pwd password mode", + "--nrar nonce / answer reader, 8 hex bytes", + "--crypto crypto mode", "-k, --key key, 4 or 6 hex bytes", - "--nrar nonce / answer reader, 8 hex bytes" + "-f, --file specify file name" ], - "usage": "lf hitag dump [-h] [-f ] [-k ] [--nrar ]" + "usage": "lf hitag dump [-h] [--pwd] [--nrar ] [--crypto] [-k ] [-f ]" }, "lf hitag eload": { "command": "lf hitag eload", @@ -8661,11 +8696,11 @@ "offline": false, "options": [ "-h, --help This help", - "-f, --file Specfiy dump filename", - "-1 Card type Hitag1", - "-2 Card type Hitag2", - "-s Card type HitagS", - "-m Card type HitagM" + "-f, --file Specify dump filename", + "-1, --ht1 Card type Hitag 1", + "-2, --ht2 Card type Hitag 2", + "-s, --hts Card type Hitag S", + "-m, --htm Card type Hitag \u03bc" ], "usage": "lf hitag eload [-h12sm] -f " }, @@ -8702,46 +8737,54 @@ ], "usage": "lf hitag list [-h1crux] [--frame] [-f ]" }, - "lf hitag reader": { - "command": "lf hitag reader", - "description": "Act like a Hitag Reader", + "lf hitag read": { + "command": "lf hitag read", + "description": "Read Hitag memory Crypto mode key format: ISK high + ISK low", "notes": [ - "Hitag S", - "lf hitag reader --01 --nrar 0102030411223344", - "lf hitag reader --02 -k 4F4E4D494B52", - "Hitag 2", - "lf hitag reader --21 -k 4D494B52", - "lf hitag reader --22 --nrar 0102030411223344", - "lf hitag reader --23 -k 4F4E4D494B52", - "lf hitag reader --26" + "Hitag S, plain mode", + "lf hitag read --hts", + "Hitag S, challenge mode", + "lf hitag read --hts --nrar 0102030411223344", + "Hitag S, crypto mode => use default key 4F4E4D494B52 (ONMIKR)", + "lf hitag read --hts --crypto", + "Hitag S, long key = crypto mode", + "lf hitag read --hts -k 4F4E4D494B52", + "", + "Hitag 2, password mode => use default key 4D494B52 (MIKR)", + "lf hitag read --ht2 --pwd", + "Hitag 2, providing a short key = password mode", + "lf hitag read --ht2 -k 4D494B52", + "Hitag 2, challenge mode", + "lf hitag read --ht2 --nrar 0102030411223344", + "Hitag 2, crypto mode => use default key 4F4E4D494B52 (ONMIKR)", + "lf hitag read --ht2 --crypto", + "Hitag 2, providing a long key = crypto mode", + "lf hitag read --ht2 -k 4F4E4D494B52" ], "offline": false, "options": [ "-h, --help This help", - "--01 HitagS, read all pages, challenge mode", - "--02 HitagS, read all pages, crypto mode. Set key=0 for no auth", - "--21 Hitag2, read all pages, password mode. def 4D494B52 (MIKR)", - "--22 Hitag2, read all pages, challenge mode", - "--23 Hitag2, read all pages, crypto mode. Key ISK high + ISK low. def 4F4E4D494B52 (ONMIKR)", - "--25 Hitag2, test recorded authentications (replay?)", - "--26 Hitag2, read UID", - "-k, --key key, 4 or 6 hex bytes", - "--nrar nonce / answer reader, 8 hex bytes" + "-s, --hts Hitag S", + "-2, --ht2 Hitag 2", + "--pwd password mode", + "--nrar nonce / answer writer, 8 hex bytes", + "--crypto crypto mode", + "-k, --key key, 4 or 6 hex bytes" ], - "usage": "lf hitag reader [-h] [--01] [--02] [--21] [--22] [--23] [--25] [--26] [-k ] [--nrar ]" + "usage": "lf hitag read [-hs2] [--pwd] [--nrar ] [--crypto] [-k ]" }, "lf hitag sim": { "command": "lf hitag sim", - "description": "Simulate Hitag2 / HitagS transponder You need to `lf hitag eload` first", + "description": "Simulate Hitag transponder You need to `lf hitag eload` first", "notes": [ "lf hitag sim -2" ], "offline": false, "options": [ "-h, --help This help", - "-1 simulate Hitag1", - "-2 simulate Hitag2", - "-s simulate HitagS" + "-1, --ht1 simulate Hitag 1", + "-2, --ht2 simulate Hitag 2", + "-s, --hts simulate Hitag S" ], "usage": "lf hitag sim [-h12s]" }, @@ -8757,30 +8800,43 @@ ], "usage": "lf hitag sniff [-h]" }, - "lf hitag writer": { - "command": "lf hitag writer", - "description": "Act like a Hitag writerIn password mode the default key is 4D494B52 (MIKR) In crypto mode the default key is 4F4E4D494B52 (ONMIKR) format: ISK high + ISK low.", + "lf hitag wrbl": { + "command": "lf hitag wrbl", + "description": "Write a page in Hitag memory Crypto mode key format: ISK high + ISK low", "notes": [ - "Hitag S", - "lf hitag writer --03 --nrar 0102030411223344 -p 3 -d 01020304", - "lf hitag writer --04 -k 4F4E4D494B52 -p 3 -d 01020304", - "Hitag 2", - "lf hitag writer --24 -k 4F4E4D494B52 -p 3 -d 01020304", - "lf hitag writer --27 -k 4D494B52 -p 3 -d 01020304" + "Hitag S, plain mode", + "lf hitag wrbl --hts -p 6 -d 01020304", + "Hitag S, challenge mode", + "lf hitag wrbl --hts --nrar 0102030411223344 -p 6 -d 01020304", + "Hitag S, crypto mode => use default key 4F4E4D494B52 (ONMIKR)", + "lf hitag wrbl --hts --crypto -p 6 -d 01020304", + "Hitag S, long key = crypto mode", + "lf hitag wrbl --hts -k 4F4E4D494B52 -p 6 -d 01020304", + "", + "Hitag 2, password mode => use default key 4D494B52 (MIKR)", + "lf hitag wrbl --ht2 --pwd -p 6 -d 01020304", + "Hitag 2, providing a short key = password mode", + "lf hitag wrbl --ht2 -k 4D494B52 -p 6 -d 01020304", + "Hitag 2, challenge mode", + "lf hitag wrbl --ht2 --nrar 0102030411223344 -p 6 -d 01020304", + "Hitag 2, crypto mode => use default key 4F4E4D494B52 (ONMIKR)", + "lf hitag wrbl --ht2 --crypto -p 6 -d 01020304", + "Hitag 2, providing a long key = crypto mode", + "lf hitag wrbl --ht2 -k 4F4E4D494B52 -p 6 -d 01020304" ], "offline": false, "options": [ "-h, --help This help", - "--03 HitagS, write page, challenge mode", - "--04 HitagS, write page, crypto mode. Set key=0 for no auth", - "--24 Hitag2, write page, crypto mode.", - "--27 Hitag2, write page, password mode", - "-p, --page page address to write to", - "-d, --data data, 4 hex bytes", + "-s, --hts Hitag S", + "-2, --ht2 Hitag 2", + "--pwd password mode", + "--nrar nonce / answer writer, 8 hex bytes", + "--crypto crypto mode", "-k, --key key, 4 or 6 hex bytes", - "--nrar nonce / answer writer, 8 hex bytes" + "-p, --page page address to write to", + "-d, --data data, 4 hex bytes" ], - "usage": "lf hitag writer [-h] [--03] [--04] [--24] [--27] -p [-d ] [-k ] [--nrar ]" + "usage": "lf hitag wrbl [-hs2] [--pwd] [--nrar ] [--crypto] [-k ] -p -d " }, "lf idteck clone": { "command": "lf idteck clone", @@ -11693,8 +11749,8 @@ } }, "metadata": { - "commands_extracted": 679, + "commands_extracted": 681, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-07-19T19:11:10" + "extracted_on": "2023-07-21T16:22:30" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index ce203b57a..cd538fe3c 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -98,10 +98,11 @@ Check column "offline" for their availability. |`data manrawdecode `|Y |`Manchester decode binary stream in DemodBuffer` |`data modulation `|Y |`Identify LF signal for clock and modulation` |`data rawdemod `|Y |`Demodulate the data in the GraphBuffer and output binary` -|`data askedgedetect `|Y |`Adjust Graph for manual ASK demod using the length of sample differences to detect the edge of a wave` +|`data askedgedetect `|Y |`Adjust Graph for manual ASK demod` |`data autocorr `|Y |`Autocorrelation over window` -|`data dirthreshold `|Y |`Max rising higher up-thres/ Min falling lower down-thres, keep rest as prev.` +|`data dirthreshold `|Y |`Max rising higher up-thres/ Min falling lower down-thres` |`data decimate `|Y |`Decimate samples` +|`data envelope `|Y |`Generate square envelope of samples` |`data undecimate `|Y |`Un-decimate samples` |`data hide `|Y |`Hide graph window` |`data hpf `|Y |`Remove DC offset from trace` @@ -111,10 +112,11 @@ Check column "offline" for their availability. |`data mtrim `|Y |`Trim out samples from the specified start to the specified stop` |`data norm `|Y |`Normalize max/min to +/-128` |`data plot `|Y |`Show graph window` +|`data cthreshold `|Y |`Average out all values between` |`data rtrim `|Y |`Trim samples from right of trace` |`data setgraphmarkers `|Y |`Set blue and orange marker in graph window` |`data shiftgraphzero `|Y |`Shift 0 for Graphed wave + or - shift value` -|`data timescale `|Y |`Set a timescale to get a differential reading between the yellow and purple markers as time duration` +|`data timescale `|Y |`Set cursor display timescale` |`data zerocrossings `|Y |`Count time between zero-crossings` |`data convertbitstream `|Y |`Convert GraphBuffer's 0/1 values to 127 / -127` |`data getbitstream `|Y |`Convert GraphBuffer's >=1 values to 1 and <1 to 0` @@ -986,15 +988,16 @@ Check column "offline" for their availability. |command |offline |description |------- |------- |----------- |`lf hitag help `|Y |`This help` -|`lf hitag eload `|N |`Load Hitag dump file into emulator memory` |`lf hitag list `|Y |`List Hitag trace history` -|`lf hitag info `|N |`Hitag2 tag information` -|`lf hitag reader `|N |`Act like a Hitag reader` -|`lf hitag sim `|N |`Simulate Hitag transponder` +|`lf hitag info `|N |`Hitag 2 tag information` +|`lf hitag dump `|N |`Dump Hitag 2 tag` +|`lf hitag read `|N |`Read Hitag memory` +|`lf hitag wrbl `|N |`Write a block (page) in Hitag memory` |`lf hitag sniff `|N |`Eavesdrop Hitag communication` -|`lf hitag writer `|N |`Act like a Hitag writer` -|`lf hitag dump `|N |`Dump Hitag2 tag` -|`lf hitag cc `|N |`Test all challenges` +|`lf hitag cc `|N |`Hitag S: test all provided challenges` +|`lf hitag ta `|N |`Hitag 2: test all recorded authentications` +|`lf hitag eload `|N |`Load Hitag dump file into emulator memory` +|`lf hitag sim `|N |`Simulate Hitag transponder` ### lf idteck From 44b7aa2e8b7c6dc15d8c9f92589666ba5cec4b72 Mon Sep 17 00:00:00 2001 From: startrekdude Date: Fri, 21 Jul 2023 16:02:46 -0400 Subject: [PATCH 069/299] Add a tagType for Seos cards to SimulateIso14443aInit These values were observed from a standard-keyed 4K Seos card. --- armsrc/iso14443a.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 62baab9fc..c47339497 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -1165,6 +1165,10 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r sak = 0x20; } break; + case 12: { // HID Seos 4K card + rATQA[0] = 0x01; + sak = 0x20; + } default: { if (g_dbglevel >= DBG_ERROR) Dbprintf("Error: unknown tagtype (%d)", tagType); From 97e61650ab0388d5fd880598a4cbcfbc325fcecc Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 22:07:16 +0200 Subject: [PATCH 070/299] added missing value --- client/src/cmdhf14a.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index e6e0a20e8..63b3ebd82 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -754,7 +754,9 @@ int CmdHF14ASim(const char *Cmd) { "hf 14a sim -t 7 -> MFU EV1 / NTAG 215 Amiibo\n" "hf 14a sim -t 8 -> MIFARE Classic 4k\n" "hf 14a sim -t 9 -> FM11RF005SH Shanghai Metro\n" - "hf 14a sim -t 10 -> ST25TA IKEA Rothult\n"); + "hf 14a sim -t 10 -> ST25TA IKEA Rothult\n" + "hf 14a sim -t 11 -> javacard (JCOP)\n" + ); void *argtable[] = { arg_param_begin, @@ -808,7 +810,7 @@ int CmdHF14ASim(const char *Cmd) { CLIParserFree(ctx); - if (tagtype > 10) { + if (tagtype > 11) { PrintAndLogEx(ERR, "Undefined tag %d", tagtype); return PM3_EINVARG; } From b0fd944c7189c41e886ff0536be106c80577784f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 21 Jul 2023 22:08:52 +0200 Subject: [PATCH 071/299] added missing value --- client/src/cmdhf14a.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 63b3ebd82..cff210ad9 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -755,12 +755,13 @@ int CmdHF14ASim(const char *Cmd) { "hf 14a sim -t 8 -> MIFARE Classic 4k\n" "hf 14a sim -t 9 -> FM11RF005SH Shanghai Metro\n" "hf 14a sim -t 10 -> ST25TA IKEA Rothult\n" - "hf 14a sim -t 11 -> javacard (JCOP)\n" + "hf 14a sim -t 11 -> Javacard (JCOP)\n" + "hf 14a sim -t 12 -> 4K Seos card\n" ); void *argtable[] = { arg_param_begin, - arg_int1("t", "type", "<1-10> ", "Simulation type to use"), + arg_int1("t", "type", "<1-12> ", "Simulation type to use"), arg_str0("u", "uid", "", "<4|7|10> hex bytes UID"), arg_int0("n", "num", "", "Exit simulation after blocks have been read by reader. 0 = infinite"), arg_lit0("x", NULL, "Performs the 'reader attack', nr/ar attack against a reader"), @@ -810,7 +811,7 @@ int CmdHF14ASim(const char *Cmd) { CLIParserFree(ctx); - if (tagtype > 11) { + if (tagtype > 12) { PrintAndLogEx(ERR, "Undefined tag %d", tagtype); return PM3_EINVARG; } From 6da1b74fa928ea0b266a5ee42113b68ac44c2d12 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 22 Jul 2023 13:51:28 +0200 Subject: [PATCH 072/299] text --- client/src/cmdhflegic.c | 85 +++++++++++++++++++++++------------------ 1 file changed, 48 insertions(+), 37 deletions(-) diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index a0b703453..56399a365 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -85,7 +85,7 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff uint32_t calc_crc = CRC8Legic(data, 4); PrintAndLogEx(SUCCESS, " " _CYAN_("CDF: System Area")); - PrintAndLogEx(NORMAL, "------------------------------------------------------"); + PrintAndLogEx(INFO, "------------------------------------------------------"); PrintAndLogEx(SUCCESS, "MCD: " _GREEN_("%02X") " MSN: " _GREEN_("%s") " MCC: " _GREEN_("%02X") " ( %s )", data[0], sprint_hex(data + 1, 3), @@ -134,7 +134,7 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff stamp_len = 0xfc - data[6]; } - PrintAndLogEx(SUCCESS, "DCF: %d (%02x %02x), Token Type=" _YELLOW_("%s") " (OLE=%01u), OL=%02u, FL=%02u", + PrintAndLogEx(SUCCESS, "DCF: %d (%02x %02x) Token Type=" _YELLOW_("%s") " (OLE=%01u) OL=%02u FL=%02u", dcf, data[5], data[6], @@ -153,7 +153,7 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff strncpy(token_type, "IM", sizeof(token_type) - 1); } - PrintAndLogEx(SUCCESS, "DCF: %d (%02x %02x), Token Type = %s (OLE = %01u)", + PrintAndLogEx(SUCCESS, "DCF: %d (%02x %02x) Token Type = %s (OLE = %01u)", dcf, data[5], data[6], @@ -166,7 +166,7 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff if (dcf != 0xFFFF) { if (bIsSegmented) { - PrintAndLogEx(SUCCESS, "WRP = %02u, WRC = %01u, RD = %01u, SSC = %02X", + PrintAndLogEx(SUCCESS, "WRP = %02u WRC = %01u RD = %01u SSC = %02X", data[7] & 0x0f, (data[7] & 0x70) >> 4, (data[7] & 0x80) >> 7, @@ -185,7 +185,7 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff } } } - PrintAndLogEx(NORMAL, "------------------------------------------------------"); + PrintAndLogEx(INFO, "------------------------------------------------------"); uint8_t segCrcBytes[8] = {0, 0, 0, 0, 0, 0, 0, 0}; uint32_t segCalcCRC = 0; @@ -197,7 +197,7 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff } PrintAndLogEx(SUCCESS, _CYAN_("ADF: User Area")); - PrintAndLogEx(NORMAL, "------------------------------------------------------"); + PrintAndLogEx(INFO, "------------------------------------------------------"); if (bIsSegmented) { @@ -208,8 +208,8 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff for (segmentNum = 1; segmentNum < 128; segmentNum++) { // for decoding the segment header we need at least 4 bytes left in buffer if ((i + 4) > card_size) { - PrintAndLogEx(FAILED, "Cannot read segment header, because the input buffer is too small. " - "Please check that the data is correct and properly aligned. "); + PrintAndLogEx(FAILED, "Cannot read segment header, because the input buffer is too small."); + PrintAndLogEx(FAILED, "Please check that the data is correct and properly aligned"); return_value = PM3_EOUTOFBOUND; goto out; } @@ -236,20 +236,20 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff segCalcCRC = CRC8Legic(segCrcBytes, 8); segCRC = data[i + 4] ^ crc; - PrintAndLogEx(SUCCESS, "Segment | " _YELLOW_("%02u"), segmentNum); - PrintAndLogEx(SUCCESS, "raw header | 0x%02X 0x%02X 0x%02X 0x%02X", + PrintAndLogEx(SUCCESS, "Segment....... " _YELLOW_("%02u"), segmentNum); + PrintAndLogEx(SUCCESS, "Raw header.... 0x%02X 0x%02X 0x%02X 0x%02X", data[i] ^ crc, data[i + 1] ^ crc, data[i + 2] ^ crc, data[i + 3] ^ crc ); - PrintAndLogEx(SUCCESS, "Segment len | %u, Flag: 0x%X (valid:%01u, last:%01u)", + PrintAndLogEx(SUCCESS, "Segment len... %u Flag: 0x%X (valid:%01u last:%01u)", segment_len, segment_flag, (segment_flag & 0x4) >> 2, (segment_flag & 0x8) >> 3 ); - PrintAndLogEx(SUCCESS, " | WRP: %02u, WRC: %02u, RD: %01u, CRC: 0x%02X ( %s )", + PrintAndLogEx(SUCCESS, " WRP: %02u WRC: %02u RD: %01u CRC: 0x%02X ( %s )", wrp, wrc, ((data[i + 3] ^ crc) & 0x80) >> 7, @@ -268,28 +268,33 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff } if (hasWRC) { - PrintAndLogEx(SUCCESS, "\nWRC protected area: (I %d | K %d| WRC %d)", i, k, wrc); - PrintAndLogEx(NORMAL, "\nrow | data"); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------"); + PrintAndLogEx(INFO, ""); + PrintAndLogEx(SUCCESS, _CYAN_("WRC protected area:") " (I %d | K %d| WRC %d)", i, k, wrc); + PrintAndLogEx(INFO, ""); + PrintAndLogEx(INFO, "## | data"); + PrintAndLogEx(INFO, "---+------------------------------------------------"); for (k = i; k < (i + wrc); ++k) data[k] ^= crc; print_hex_break(data + i, wrc, 16); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------\n"); + PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, ""); i += wrc; } if (hasWRP) { - PrintAndLogEx(SUCCESS, "Remaining write protected area: (I %d | K %d | WRC %d | WRP %d WRP_LEN %d)", i, k, wrc, wrp, wrp_len); - PrintAndLogEx(NORMAL, "\nrow | data"); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------"); + PrintAndLogEx(SUCCESS, _CYAN_("Remaining write protected area:") " (I %d | K %d | WRC %d | WRP %d WRP_LEN %d)", i, k, wrc, wrp, wrp_len); + PrintAndLogEx(INFO, ""); + PrintAndLogEx(INFO, "## | data"); + PrintAndLogEx(INFO, "---+------------------------------------------------"); for (k = i; k < (i + wrp_len); ++k) data[k] ^= crc; print_hex_break(data + i, wrp_len, 16); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------\n"); + PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, ""); i += wrp_len; // does this one work? (Answer: Only if KGH/BGH is used with BCD encoded card number! So maybe this will show just garbage...) @@ -302,15 +307,16 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff } } if (remain_seg_payload_len > 0) { - PrintAndLogEx(SUCCESS, "Remaining segment payload: (I %d | K %d | Remain LEN %d)", i, k, remain_seg_payload_len); - PrintAndLogEx(NORMAL, "\nrow | data"); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------"); + PrintAndLogEx(SUCCESS, _CYAN_("Remaining segment payload:") " (I %d | K %d | Remain LEN %d)", i, k, remain_seg_payload_len); + PrintAndLogEx(INFO, ""); + PrintAndLogEx(INFO, "## | data"); + PrintAndLogEx(INFO, "---+------------------------------------------------"); for (k = i; k < (i + remain_seg_payload_len); ++k) data[k] ^= crc; print_hex_break(data + i, remain_seg_payload_len, 16); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------\n"); + PrintAndLogEx(INFO, "---+------------------------------------------------\n"); i += remain_seg_payload_len; } // end with last segment @@ -331,7 +337,7 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff int wrp_len = (wrp - wrc); int remain_seg_payload_len = (card_size - 22 - wrp); - PrintAndLogEx(SUCCESS, "Unsegmented card - WRP: %02u, WRC: %02u, RD: %01u", + PrintAndLogEx(SUCCESS, "Unsegmented card - WRP: %02u WRC: %02u RD: %01u", wrp, wrc, (data[7] & 0x80) >> 7 @@ -346,20 +352,24 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff } if (hasWRC) { - PrintAndLogEx(SUCCESS, "WRC protected area: (I %d | WRC %d)", i, wrc); - PrintAndLogEx(NORMAL, "\nrow | data"); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------"); + PrintAndLogEx(SUCCESS, _CYAN_("WRC protected area:") " (I %d | WRC %d)", i, wrc); + PrintAndLogEx(INFO, ""); + PrintAndLogEx(INFO, "## | data"); + PrintAndLogEx(INFO, "---+------------------------------------------------"); print_hex_break(data + i, wrc, 16); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------\n"); + PrintAndLogEx(INFO, "----+------------------------------------------------"); + PrintAndLogEx(INFO, ""); i += wrc; } if (hasWRP) { - PrintAndLogEx(SUCCESS, "Remaining write protected area: (I %d | WRC %d | WRP %d | WRP_LEN %d)", i, wrc, wrp, wrp_len); - PrintAndLogEx(NORMAL, "\nrow | data"); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------"); + PrintAndLogEx(SUCCESS, _CYAN_("Remaining write protected area:") " (I %d | WRC %d | WRP %d | WRP_LEN %d)", i, wrc, wrp, wrp_len); + PrintAndLogEx(INFO, ""); + PrintAndLogEx(INFO, "## | data"); + PrintAndLogEx(INFO, "---+------------------------------------------------"); print_hex_break(data + i, wrp_len, 16); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------\n"); + PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, ""); i += wrp_len; // Q: does this one work? @@ -374,11 +384,12 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff } if (remain_seg_payload_len > 0) { - PrintAndLogEx(SUCCESS, "Remaining segment payload: (I %d | Remain LEN %d)", i, remain_seg_payload_len); - PrintAndLogEx(NORMAL, "\nrow | data"); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------"); + PrintAndLogEx(SUCCESS, _CYAN_("Remaining segment payload:") " (I %d | Remain LEN %d)", i, remain_seg_payload_len); + PrintAndLogEx(INFO, ""); + PrintAndLogEx(INFO, "## | data"); + PrintAndLogEx(INFO, "---+------------------------------------------------"); print_hex_break(data + i, remain_seg_payload_len, 16); - PrintAndLogEx(NORMAL, "-----+------------------------------------------------\n"); + PrintAndLogEx(INFO, "---+------------------------------------------------\n"); } } From 0180ca305e7c81b75a24c215277907a6f3dab063 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 22 Jul 2023 14:07:51 +0200 Subject: [PATCH 073/299] added verbose flag to eview/view/info command where it will print the raw hex dump. This makes it a bit cleaner output --- CHANGELOG.md | 1 + client/src/cmdhflegic.c | 98 +++++++++++++++++++++++++---------------- 2 files changed, 61 insertions(+), 38 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 96cabb6ed..3caa5134d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Change `hf legic view/eview/info` - now in verbose mode will print raw hex dump (@iceman1001) - Added new test for cotag demod using data commands in pm3_test.sh (@iceman1001) - Added new sample trace file for cotag w fc/272. Thanks s1acky! (@iceman1001) - Fixed `hf legic eload` - now it doesn't crash client (@doegox) diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index 56399a365..639947311 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -58,32 +58,33 @@ static bool legic_xor(uint8_t *data, uint16_t cardsize) { } static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buffer) { - int i = 0, k = 0, segmentNum = 0, segment_len = 0, segment_flag = 0; - int crc = 0, wrp = 0, wrc = 0; - uint8_t stamp_len = 0; - char token_type[6] = {0, 0, 0, 0, 0, 0}; - int dcf = 0; - int bIsSegmented = 0; - int return_value = PM3_SUCCESS; if (!(card_size == LEGIC_PRIME_MIM22 || card_size == LEGIC_PRIME_MIM256 || card_size == LEGIC_PRIME_MIM1024)) { PrintAndLogEx(FAILED, "Bytebuffer is not any known legic card size! (MIM22, MIM256, MIM1024)"); - return_value = PM3_EFAILED; return PM3_EFAILED; } // copy input buffer into newly allocated buffer, because the existing code mutates the data inside. uint8_t *data = calloc(card_size, sizeof(uint8_t)); - if (!data) { + if (data == NULL) { PrintAndLogEx(WARNING, "Cannot allocate memory"); return PM3_EMALLOC; } memcpy(data, input_buffer, card_size); + int i = 0, k = 0, segmentNum = 0, segment_len = 0, segment_flag = 0; + int wrp = 0, wrc = 0, dcf = 0; + uint8_t stamp_len = 0; + char token_type[6] = {0, 0, 0, 0, 0, 0}; + int bIsSegmented = 0; + int return_value = PM3_SUCCESS; + // Output CDF System area (9 bytes) plus remaining header area (12 bytes) - crc = data[4]; + int crc = data[4]; uint32_t calc_crc = CRC8Legic(data, 4); + PrintAndLogEx(INFO, "--------------------- " _CYAN_("Tag Information") " ----------------------"); + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(SUCCESS, " " _CYAN_("CDF: System Area")); PrintAndLogEx(INFO, "------------------------------------------------------"); PrintAndLogEx(SUCCESS, "MCD: " _GREEN_("%02X") " MSN: " _GREEN_("%s") " MCC: " _GREEN_("%02X") " ( %s )", @@ -196,6 +197,7 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff goto out; } + PrintAndLogEx(INFO, ""); PrintAndLogEx(SUCCESS, _CYAN_("ADF: User Area")); PrintAndLogEx(INFO, "------------------------------------------------------"); @@ -271,14 +273,14 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff PrintAndLogEx(INFO, ""); PrintAndLogEx(SUCCESS, _CYAN_("WRC protected area:") " (I %d | K %d| WRC %d)", i, k, wrc); PrintAndLogEx(INFO, ""); - PrintAndLogEx(INFO, "## | data"); - PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, "## | data | ascii"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); for (k = i; k < (i + wrc); ++k) data[k] ^= crc; print_hex_break(data + i, wrc, 16); - PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); PrintAndLogEx(INFO, ""); i += wrc; } @@ -286,14 +288,14 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff if (hasWRP) { PrintAndLogEx(SUCCESS, _CYAN_("Remaining write protected area:") " (I %d | K %d | WRC %d | WRP %d WRP_LEN %d)", i, k, wrc, wrp, wrp_len); PrintAndLogEx(INFO, ""); - PrintAndLogEx(INFO, "## | data"); - PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, "## | data | ascii"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); for (k = i; k < (i + wrp_len); ++k) data[k] ^= crc; print_hex_break(data + i, wrp_len, 16); - PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); PrintAndLogEx(INFO, ""); i += wrp_len; @@ -309,14 +311,14 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff if (remain_seg_payload_len > 0) { PrintAndLogEx(SUCCESS, _CYAN_("Remaining segment payload:") " (I %d | K %d | Remain LEN %d)", i, k, remain_seg_payload_len); PrintAndLogEx(INFO, ""); - PrintAndLogEx(INFO, "## | data"); - PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, "## | data | ascii"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); for (k = i; k < (i + remain_seg_payload_len); ++k) data[k] ^= crc; print_hex_break(data + i, remain_seg_payload_len, 16); - PrintAndLogEx(INFO, "---+------------------------------------------------\n"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------\n"); i += remain_seg_payload_len; } // end with last segment @@ -354,10 +356,10 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff if (hasWRC) { PrintAndLogEx(SUCCESS, _CYAN_("WRC protected area:") " (I %d | WRC %d)", i, wrc); PrintAndLogEx(INFO, ""); - PrintAndLogEx(INFO, "## | data"); - PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, "## | data | ascii"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); print_hex_break(data + i, wrc, 16); - PrintAndLogEx(INFO, "----+------------------------------------------------"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); PrintAndLogEx(INFO, ""); i += wrc; } @@ -365,10 +367,10 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff if (hasWRP) { PrintAndLogEx(SUCCESS, _CYAN_("Remaining write protected area:") " (I %d | WRC %d | WRP %d | WRP_LEN %d)", i, wrc, wrp, wrp_len); PrintAndLogEx(INFO, ""); - PrintAndLogEx(INFO, "## | data"); - PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, "## | data | ascii"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); print_hex_break(data + i, wrp_len, 16); - PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); PrintAndLogEx(INFO, ""); i += wrp_len; @@ -386,10 +388,10 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff if (remain_seg_payload_len > 0) { PrintAndLogEx(SUCCESS, _CYAN_("Remaining segment payload:") " (I %d | Remain LEN %d)", i, remain_seg_payload_len); PrintAndLogEx(INFO, ""); - PrintAndLogEx(INFO, "## | data"); - PrintAndLogEx(INFO, "---+------------------------------------------------"); + PrintAndLogEx(INFO, "## | data | ascii"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); print_hex_break(data + i, remain_seg_payload_len, 16); - PrintAndLogEx(INFO, "---+------------------------------------------------\n"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------\n"); } } @@ -411,9 +413,11 @@ static int CmdLegicInfo(const char *Cmd) { void *argtable[] = { arg_param_begin, + arg_lit0("v", "verbose", "verbose output"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); + bool verbose = arg_get_lit(ctx, 1); CLIParserFree(ctx); uint16_t datalen = 0; @@ -429,7 +433,7 @@ static int CmdLegicInfo(const char *Cmd) { // allocate receiver buffer uint8_t *data = calloc(card.cardsize, sizeof(uint8_t)); - if (!data) { + if (data == NULL) { PrintAndLogEx(WARNING, "Cannot allocate memory"); return PM3_EMALLOC; } @@ -441,8 +445,15 @@ static int CmdLegicInfo(const char *Cmd) { return status; } - decode_and_print_memory(card.cardsize, data); + if (verbose) { + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "## | 0 1 2 3 4 5 6 7 8 9 A B C D E F | ascii"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); + print_hex_break(data, datalen, 16); + } + PrintAndLogEx(NORMAL, ""); + decode_and_print_memory(card.cardsize, data); free(data); return PM3_SUCCESS; } @@ -1186,6 +1197,7 @@ static int CmdLegicEView(const char *Cmd) { arg_lit0(NULL, "22", "LEGIC Prime MIM22"), arg_lit0(NULL, "256", "LEGIC Prime MIM256 (def)"), arg_lit0(NULL, "1024", "LEGIC Prime MIM1024"), + arg_lit0("v", "verbose", "verbose output"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -1193,6 +1205,7 @@ static int CmdLegicEView(const char *Cmd) { bool m1 = arg_get_lit(ctx, 1); bool m2 = arg_get_lit(ctx, 2); bool m3 = arg_get_lit(ctx, 3); + bool verbose = arg_get_lit(ctx, 4); CLIParserFree(ctx); // validations @@ -1224,10 +1237,16 @@ static int CmdLegicEView(const char *Cmd) { return PM3_ETIMEOUT; } + if (verbose) { + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "## | 0 1 2 3 4 5 6 7 8 9 A B C D E F | ascii"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); + print_hex_break(dump, bytes, 16); + } + PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "## | 0 1 2 3 4 5 6 7 8 9 A B C D E F | ascii"); - PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); - print_hex_break(dump, bytes, 16); + decode_and_print_memory(bytes, dump); + free(dump); return PM3_SUCCESS; } @@ -1380,12 +1399,14 @@ static int CmdLegicView(const char *Cmd) { void *argtable[] = { arg_param_begin, arg_str1("f", "file", "", "Filename of dump"), + arg_lit0("v", "verbose", "verbose output"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); int fnlen = 0; char filename[FILE_PATH_SIZE]; CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); + bool verbose = arg_get_lit(ctx, 2); CLIParserFree(ctx); // read dump file @@ -1396,14 +1417,15 @@ static int CmdLegicView(const char *Cmd) { return res; } - PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "## | 0 1 2 3 4 5 6 7 8 9 A B C D E F | ascii"); - PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); - print_hex_break(dump, bytes_read, 16); + if (verbose) { + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "## | 0 1 2 3 4 5 6 7 8 9 A B C D E F | ascii"); + PrintAndLogEx(INFO, "---+-------------------------------------------------+-----------------"); + print_hex_break(dump, bytes_read, 16); + } PrintAndLogEx(NORMAL, ""); decode_and_print_memory(bytes_read, dump); - free(dump); return PM3_SUCCESS; } From c6cc1b241686d5f2d1a584c8d9e6a7ba45edbfdf Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 22 Jul 2023 14:22:39 +0200 Subject: [PATCH 074/299] fix the loadfile command and more colors --- client/luascripts/hf_legic.lua | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/client/luascripts/hf_legic.lua b/client/luascripts/hf_legic.lua index 6dcb9d8ca..fb98b777e 100644 --- a/client/luascripts/hf_legic.lua +++ b/client/luascripts/hf_legic.lua @@ -269,7 +269,6 @@ local function padString(str) if (#str == 1) then return '0'..str end - return str end @@ -336,6 +335,7 @@ end --- -- check availability of file function file_check(file_name) + if not file_name then return false, "" end local arr = split(file_name, ".") local path = core.search_file(arr[1], "."..arr[2]) @@ -2424,8 +2424,7 @@ function modifyMode() --- -- load file into mainTAG ["lf"] = function(x) - - if (type(x)=='string' and file_check(x)) then + if (x and not x=="" and type(x)=='string' and file_check(x)) then filename = x else filename = input("enter filename: ", "legic.temp") @@ -2782,7 +2781,7 @@ function modifyMode() } repeat -- default message / prompt - ic=input("Legic command? ('h' for help - 'q' for quit)", "h") + ic=input("Legic command? ('"..acy.."h"..acr.."' for help - '"..acy.."q"..acr.."' for quit)", acy.."h"..acr) -- command actions decisions (first match, longer commands before shorter) if (type(actions[string.lower(string.sub(ic,0,3))])=='function') then actions[string.lower(string.sub(ic,0,3))](string.sub(ic,5)) From ef03d0bee0d480f5f39e660ef46d95439d287267 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 22 Jul 2023 15:51:35 +0200 Subject: [PATCH 075/299] text --- client/src/cmdlf.c | 15 +++++++++------ client/src/cmdlfmotorola.c | 4 ++-- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index e6585d334..81ca3a081 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -352,18 +352,21 @@ int CmdLFCommandRead(const char *Cmd) { } } - PrintAndLogEx(DEBUG, "Cmd read - settings"); + PrintAndLogEx(DEBUG, _CYAN_("Cmd read - settings")); PrintAndLogEx(DEBUG, "-------------------"); - PrintAndLogEx(DEBUG, "delay: %u , zero %u , one %u , samples %u", payload.delay, payload.period_0, payload.period_1, payload.samples); - PrintAndLogEx(DEBUG, "Extra symbols"); + PrintAndLogEx(DEBUG, "delay... " _YELLOW_("%u")" zero... " _YELLOW_("%u") " one... " _YELLOW_("%u")" samples... %u", payload.delay, payload.period_0, payload.period_1, payload.samples); + PrintAndLogEx(DEBUG, ""); + PrintAndLogEx(DEBUG, _CYAN_("Extra symbols")); PrintAndLogEx(DEBUG, "-------------"); for (i = 0; i < LF_CMDREAD_MAX_EXTRA_SYMBOLS; i++) { if (payload.symbol_extra[i] == 0x00) continue; - PrintAndLogEx(DEBUG, " %c - %u", payload.symbol_extra[i], payload.period_extra[i]); + PrintAndLogEx(DEBUG, " %c ... " _YELLOW_("%u"), payload.symbol_extra[i], payload.period_extra[i]); } - PrintAndLogEx(DEBUG, "data: %s", payload.data); + PrintAndLogEx(DEBUG, ""); + PrintAndLogEx(DEBUG, "data... " _YELLOW_("%s"), payload.data); + PrintAndLogEx(DEBUG, ""); if (cm) { PrintAndLogEx(INFO, "Press " _GREEN_("") " to exit"); @@ -1825,7 +1828,7 @@ static command_t CommandTable[] = { {"io", CmdLFIO, AlwaysAvailable, "{ ioProx RFIDs... }"}, {"jablotron", CmdLFJablotron, AlwaysAvailable, "{ Jablotron RFIDs... }"}, {"keri", CmdLFKeri, AlwaysAvailable, "{ KERI RFIDs... }"}, - {"motorola", CmdLFMotorola, AlwaysAvailable, "{ Motorola RFIDs... }"}, + {"motorola", CmdLFMotorola, AlwaysAvailable, "{ Motorola Flexpass RFIDs... }"}, {"nedap", CmdLFNedap, AlwaysAvailable, "{ Nedap RFIDs... }"}, {"nexwatch", CmdLFNEXWATCH, AlwaysAvailable, "{ NexWatch RFIDs... }"}, {"noralsy", CmdLFNoralsy, AlwaysAvailable, "{ Noralsy RFIDs... }"}, diff --git a/client/src/cmdlfmotorola.c b/client/src/cmdlfmotorola.c index 90394be54..cd0c91864 100644 --- a/client/src/cmdlfmotorola.c +++ b/client/src/cmdlfmotorola.c @@ -128,7 +128,7 @@ int demodMotorola(bool verbose) { static int CmdMotorolaDemod(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "lf motorola demod", - "Try to find Motorola preamble, if found decode / descramble data", + "Try to find Motorola Flexpass preamble, if found decode / descramble data", "lf motorola demod" ); @@ -144,7 +144,7 @@ static int CmdMotorolaDemod(const char *Cmd) { static int CmdMotorolaReader(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "lf motorola reader", - "read a Motorola tag", + "read a Motorola Flexpass tag", "lf motorola reader -@ -> continuous reader mode" ); From eaf8aac21700b371ce544220707b2c75ff3a996d Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 22 Jul 2023 17:34:27 +0200 Subject: [PATCH 076/299] better smoothing in the envelope command and also allow for other raw demod to accept a larger clock as in param --- client/src/cmddata.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 43fa20911..be8f5e716 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -740,7 +740,7 @@ static int Cmdaskbiphdemod(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - uint8_t clk = (uint8_t)arg_get_int_def(ctx, 1, 0) & 0xFF; + uint16_t clk = (uint16_t)arg_get_int_def(ctx, 1, 0); bool invert = arg_get_lit(ctx, 2); int offset = arg_get_int_def(ctx, 3, 0); uint8_t max_err = (uint8_t)arg_get_int_def(ctx, 4, 50) & 0xFF; @@ -1397,7 +1397,7 @@ static int CmdNRZrawDemod(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - uint8_t clk = (uint8_t)arg_get_int_def(ctx, 1, 0) & 0xFF; + uint16_t clk = (uint16_t)arg_get_int_def(ctx, 1, 0); bool invert = arg_get_lit(ctx, 2); uint8_t max_err = (uint8_t)arg_get_int_def(ctx, 3, 100) & 0xFF; CLIParserFree(ctx); @@ -1427,7 +1427,7 @@ int CmdPSK1rawDemod(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - uint8_t clk = (uint8_t)arg_get_int_def(ctx, 1, 0) & 0xFF; + uint16_t clk = (uint16_t)arg_get_int_def(ctx, 1, 0); bool invert = arg_get_lit(ctx, 2); uint8_t max_err = (uint8_t)arg_get_int_def(ctx, 3, 100) & 0xFF; CLIParserFree(ctx); @@ -3370,14 +3370,19 @@ static int envelope_square(const int *in, int *out, size_t len) { return PM3_EINVARG; } - for (size_t i = 0; i < len - 5; i++) { - if (in[i] == 0 && in[i + 1] == 0 && in[i + 2] == 0 && in[i + 3] == 0 && in[i + 4] == 0) { - i += 4; + size_t i = 0; + while ( i < len - 8) { + + if (in[i] == 0 && in[i+1] == 0 && in[i+2] == 0 && in[i+3] == 0 && + in[i+4] == 0 && in[i+5] == 0 && in[i+6] == 0 && in[i+7] == 0) { + + i += 8; continue; } out[i] = 255; + i++; } return PM3_SUCCESS; } From 2d5724f4c38a8858c286972727b0a951b8d42750 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 22 Jul 2023 18:19:02 +0200 Subject: [PATCH 077/299] text --- CHANGELOG.md | 3 ++- client/src/cmdlfcotag.c | 28 ++++++++++++++++++++++++++++ client/src/comms.c | 2 +- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3caa5134d..bcd40f863 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] - - Change `hf legic view/eview/info` - now in verbose mode will print raw hex dump (@iceman1001) + - Changed `lf cotag demo` - a new decoder (@iceman1001) + - Changed `hf legic view/eview/info` - now in verbose mode will print raw hex dump (@iceman1001) - Added new test for cotag demod using data commands in pm3_test.sh (@iceman1001) - Added new sample trace file for cotag w fc/272. Thanks s1acky! (@iceman1001) - Fixed `hf legic eload` - now it doesn't crash client (@doegox) diff --git a/client/src/cmdlfcotag.c b/client/src/cmdlfcotag.c index 8161ceacc..2306b0024 100644 --- a/client/src/cmdlfcotag.c +++ b/client/src/cmdlfcotag.c @@ -25,6 +25,7 @@ #include "ui.h" // PrintAndLog #include "ctype.h" // tolower #include "cliparser.h" +#include "commonutil.h" // reflect32 static int CmdHelp(const char *Cmd); @@ -37,6 +38,9 @@ int demodCOTAG(bool verbose) { size_t bitlen = COTAG_BITS; memcpy(bits, g_DemodBuffer, COTAG_BITS); + uint8_t inv_bits[COTAG_BITS] = {0}; + memcpy(inv_bits, g_DemodBuffer, COTAG_BITS); + uint8_t alignPos = 0; uint16_t err = manrawdecode(bits, &bitlen, 1, &alignPos); if (err > 50) { @@ -55,14 +59,38 @@ int demodCOTAG(bool verbose) { uint32_t raw3 = bytebits_to_byteLSBF(bits + 64, 32); uint32_t raw4 = bytebits_to_byteLSBF(bits + 96, 32); + /* fc 161: 1010 0001 -> LSB 1000 0101 cn 33593 1000 0011 0011 1001 -> LSB 1001 1100 1100 0001 cccc cccc cccc cccc ffffffff 0 1001 1100 1100 0001 1000 0101 0000 0000 100001010000000001111011100000011010000010000000000000000000000000000000000000000000000000000000100111001100000110000101000 1001 1100 1100 0001 10000101 + + COTAG FC/272 + 1 7 7 D E 2 0 0 8 0 0 0 3 9 2 0 D 0 4 0000000000000 + 0001 0111 0111 1101 1110 0010 0000 0000 1000 0000 0000 0000 0011 1001 0010 0000 1101 0000 0100 0000000000000000000000000000000000000000000000000000000 + 0001 0111 0111 1101 1110 001 0010 1001 0011 1000 0110 0100 + */ PrintAndLogEx(SUCCESS, "COTAG Found: FC " _GREEN_("%u")", CN: " _GREEN_("%u")" Raw: %08X%08X%08X%08X", fc, cn, raw1, raw2, raw3, raw4); + + bitlen = COTAG_BITS; + err = manrawdecode(inv_bits, &bitlen, 0, &alignPos); + if (err < 50) { + uint32_t cn_large = bytebits_to_byte(inv_bits + 1, 23); + cn_large = reflect32(cn_large) >> 9; + uint8_t a = bytebits_to_byte(inv_bits + 48, 4); + uint8_t b = bytebits_to_byte(inv_bits + 52, 4); + uint8_t c = bytebits_to_byte(inv_bits + 56, 4); + uint16_t fc_large = NIBBLE_LOW(c) << 8 | NIBBLE_LOW(b) << 4 | NIBBLE_LOW(a); + + raw1 = bytebits_to_byte(inv_bits, 32); + raw2 = bytebits_to_byte(inv_bits + 32, 32); + raw3 = bytebits_to_byte(inv_bits + 64, 32); + raw4 = bytebits_to_byte(inv_bits + 96, 32); + PrintAndLogEx(SUCCESS, " FC " _GREEN_("%u")", CN: " _GREEN_("%u")" Raw: %08X%08X%08X%08X", fc_large, cn_large, raw1, raw2, raw3, raw4); + } return PM3_SUCCESS; } diff --git a/client/src/comms.c b/client/src/comms.c index 3b7509a38..1422c42d3 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -97,7 +97,7 @@ void SendCommandOLD(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, v #endif if (!g_session.pm3_present) { - PrintAndLogEx(WARNING, "Sending bytes to Proxmark3 failed." _YELLOW_("offline")); + PrintAndLogEx(WARNING, "Sending bytes to Proxmark3 failed ( " _RED_("offline") " )"); return; } From c6b720fdcda6bf6b482df637e5f608ae47e68b41 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 22 Jul 2023 23:26:04 +0200 Subject: [PATCH 078/299] make data grid less verbose --- client/src/cmddata.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index be8f5e716..3dc6494c0 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -1601,7 +1601,8 @@ int CmdGrid(const char *Cmd) { g_PlotGridX = arg_get_dbl_def(ctx, 1, 0); g_PlotGridY = arg_get_dbl_def(ctx, 2, 0); CLIParserFree(ctx); - PrintAndLogEx(INFO, "Setting X %.0f Y %.0f", g_PlotGridX, g_PlotGridY); + + PrintAndLogEx(DEBUG, "Setting X %.0f Y %.0f", g_PlotGridX, g_PlotGridY); g_PlotGridXdefault = g_PlotGridX; g_PlotGridYdefault = g_PlotGridY; RepaintGraphWindow(); From 8e387231491e1e46c067c1d8d1c4c946cf0944a0 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 22 Jul 2023 23:27:30 +0200 Subject: [PATCH 079/299] just in case psk get odd clocks in some old system --- common/lfdemod.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/common/lfdemod.c b/common/lfdemod.c index 5e2f1fa54..f7f734eb4 100644 --- a/common/lfdemod.c +++ b/common/lfdemod.c @@ -1118,10 +1118,12 @@ uint16_t countFC(const uint8_t *bits, size_t size, bool fskAdj) { fcH = fcLens[best2]; fcL = fcLens[best1]; } + /* if ((size - 180) / fcH / 3 > fcCnts[best1] + fcCnts[best2]) { if (g_debugMode == 2) prnt("DEBUG countfc: fc is too large: %zu > %u. Not psk or fsk", (size - 180) / fcH / 3, fcCnts[best1] + fcCnts[best2]); return 0; //lots of waves not psk or fsk } + */ // TODO: take top 3 answers and compare to known Field clocks to get top 2 uint16_t fcs = (((uint16_t)fcH) << 8) | fcL; @@ -1132,8 +1134,8 @@ uint16_t countFC(const uint8_t *bits, size_t size, bool fskAdj) { // detect psk clock by reading each phase shift // a phase shift is determined by measuring the sample length of each wave int DetectPSKClock(uint8_t *dest, size_t size, int clock, size_t *firstPhaseShift, uint8_t *curPhase, uint8_t *fc) { - uint8_t clk[] = {255, 16, 32, 40, 50, 64, 100, 128, 255}; //255 is not a valid clock - uint16_t loopCnt = 4096; //don't need to loop through entire array... + uint16_t clk[] = {255, 16, 32, 40, 50, 64, 100, 128, 256, 272, 384}; // 255 is not a valid clock + uint16_t loopCnt = 4096; // don't need to loop through entire array... if (size < 160 + 20) return 0; // size must be larger than 20 here, and 160 later on. @@ -1154,8 +1156,8 @@ int DetectPSKClock(uint8_t *dest, size_t size, int clock, size_t *firstPhaseShif uint8_t clkCnt; uint16_t waveLenCnt, fullWaveLen = 0; - uint16_t bestErr[] = {1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000}; - uint16_t peaksdet[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; + uint16_t bestErr[] = {1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000}; + uint16_t peaksdet[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; //find start of modulating data in trace size_t i = findModStart(dest, size, *fc); @@ -1177,7 +1179,7 @@ int DetectPSKClock(uint8_t *dest, size_t size, int clock, size_t *firstPhaseShif } //test each valid clock from greatest to smallest to see which lines up - for (clkCnt = 7; clkCnt >= 1 ; clkCnt--) { + for (clkCnt = 9; clkCnt >= 1 ; clkCnt--) { uint8_t tol = *fc / 2; size_t lastClkBit = firstFullWave; //set end of wave as clock align size_t waveStart = 0; @@ -1217,8 +1219,8 @@ int DetectPSKClock(uint8_t *dest, size_t size, int clock, size_t *firstPhaseShif } //all tested with errors //return the highest clk with the most peaks found - uint8_t best = 7; - for (i = 7; i >= 1; i--) { + uint8_t best = 9; + for (i = 9; i >= 1; i--) { if (peaksdet[i] > peaksdet[best]) best = i; From c8acec74589d69815f234e7bf236e4b65d1827ee Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 22 Jul 2023 23:30:53 +0200 Subject: [PATCH 080/299] clean up --- client/src/cmdhfmfp.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/client/src/cmdhfmfp.h b/client/src/cmdhfmfp.h index 29723b204..e8be12e07 100644 --- a/client/src/cmdhfmfp.h +++ b/client/src/cmdhfmfp.h @@ -20,10 +20,6 @@ #include "common.h" - -#define AES_KEY_LEN 16 -#define MAX_AES_KEYS_LIST_LEN 1024 - typedef enum { MFP_UNKNOWN = 0, DESFIRE_MF3ICD40, From 4b64a45899cb5dc0eea5840b214f70436ee4d7fc Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 23 Jul 2023 11:15:52 +0200 Subject: [PATCH 081/299] make style --- client/src/cmddata.c | 6 +++--- client/src/cmdhf14a.c | 2 +- client/src/cmdhflegic.c | 4 ++-- doc/commands.json | 29 +++++++++++++++++------------ doc/commands.md | 2 +- 5 files changed, 24 insertions(+), 19 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 3dc6494c0..74273921f 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -3373,10 +3373,10 @@ static int envelope_square(const int *in, int *out, size_t len) { size_t i = 0; - while ( i < len - 8) { + while (i < len - 8) { - if (in[i] == 0 && in[i+1] == 0 && in[i+2] == 0 && in[i+3] == 0 && - in[i+4] == 0 && in[i+5] == 0 && in[i+6] == 0 && in[i+7] == 0) { + if (in[i] == 0 && in[i + 1] == 0 && in[i + 2] == 0 && in[i + 3] == 0 && + in[i + 4] == 0 && in[i + 5] == 0 && in[i + 6] == 0 && in[i + 7] == 0) { i += 8; continue; diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index cff210ad9..f2ca64076 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -757,7 +757,7 @@ int CmdHF14ASim(const char *Cmd) { "hf 14a sim -t 10 -> ST25TA IKEA Rothult\n" "hf 14a sim -t 11 -> Javacard (JCOP)\n" "hf 14a sim -t 12 -> 4K Seos card\n" - ); + ); void *argtable[] = { arg_param_begin, diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index 639947311..160eac05b 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -84,7 +84,7 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff uint32_t calc_crc = CRC8Legic(data, 4); PrintAndLogEx(INFO, "--------------------- " _CYAN_("Tag Information") " ----------------------"); - PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(SUCCESS, " " _CYAN_("CDF: System Area")); PrintAndLogEx(INFO, "------------------------------------------------------"); PrintAndLogEx(SUCCESS, "MCD: " _GREEN_("%02X") " MSN: " _GREEN_("%s") " MCC: " _GREEN_("%02X") " ( %s )", @@ -417,7 +417,7 @@ static int CmdLegicInfo(const char *Cmd) { arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); - bool verbose = arg_get_lit(ctx, 1); + bool verbose = arg_get_lit(ctx, 1); CLIParserFree(ctx); uint16_t datalen = 0; diff --git a/doc/commands.json b/doc/commands.json index 7e6061ec3..84b09c862 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -1297,19 +1297,21 @@ "hf 14a sim -t 7 -> MFU EV1 / NTAG 215 Amiibo", "hf 14a sim -t 8 -> MIFARE Classic 4k", "hf 14a sim -t 9 -> FM11RF005SH Shanghai Metro", - "hf 14a sim -t 10 -> ST25TA IKEA Rothult" + "hf 14a sim -t 10 -> ST25TA IKEA Rothult", + "hf 14a sim -t 11 -> Javacard (JCOP)", + "hf 14a sim -t 12 -> 4K Seos card" ], "offline": false, "options": [ "-h, --help This help", - "-t, --type <1-10> Simulation type to use", + "-t, --type <1-12> Simulation type to use", "-u, --uid <4|7|10> hex bytes UID", "-n, --num Exit simulation after blocks have been read by reader. 0 = infinite", "-x Performs the 'reader attack', nr/ar attack against a reader", "--sk Fill simulator keys from found keys", "-v, --verbose verbose output" ], - "usage": "hf 14a sim [-hxv] -t <1-10> [-u ] [-n ] [--sk]" + "usage": "hf 14a sim [-hxv] -t <1-12> [-u ] [-n ] [--sk]" }, "hf 14a sniff": { "command": "hf 14a sniff", @@ -3617,9 +3619,10 @@ "-h, --help This help", "--22 LEGIC Prime MIM22", "--256 LEGIC Prime MIM256 (def)", - "--1024 LEGIC Prime MIM1024" + "--1024 LEGIC Prime MIM1024", + "-v, --verbose verbose output" ], - "usage": "hf legic eview [-h] [--22] [--256] [--1024]" + "usage": "hf legic eview [-hv] [--22] [--256] [--1024]" }, "hf legic info": { "command": "hf legic info", @@ -3629,9 +3632,10 @@ ], "offline": false, "options": [ - "-h, --help This help" + "-h, --help This help", + "-v, --verbose verbose output" ], - "usage": "hf legic info [-h]" + "usage": "hf legic info [-hv]" }, "hf legic list": { "command": "hf legic list", @@ -3723,9 +3727,10 @@ "offline": true, "options": [ "-h, --help This help", - "-f, --file Filename of dump" + "-f, --file Filename of dump", + "-v, --verbose verbose output" ], - "usage": "hf legic view [-h] -f " + "usage": "hf legic view [-hv] -f " }, "hf legic wipe": { "command": "hf legic wipe", @@ -9204,7 +9209,7 @@ }, "lf motorola demod": { "command": "lf motorola demod", - "description": "Try to find Motorola preamble, if found decode / descramble data", + "description": "Try to find Motorola Flexpass preamble, if found decode / descramble data", "notes": [ "lf motorola demod" ], @@ -9216,7 +9221,7 @@ }, "lf motorola reader": { "command": "lf motorola reader", - "description": "read a Motorola tag", + "description": "read a Motorola Flexpass tag", "notes": [ "lf motorola reader -@ -> continuous reader mode" ], @@ -11751,6 +11756,6 @@ "metadata": { "commands_extracted": 681, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-07-21T16:22:30" + "extracted_on": "2023-07-23T09:14:42" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index cd538fe3c..adbecb5bf 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -1070,7 +1070,7 @@ Check column "offline" for their availability. ### lf motorola - { Motorola RFIDs... } + { Motorola Flexpass RFIDs... } |command |offline |description |------- |------- |----------- From c5c829bce2efd76140c9163821c87d246a225e2b Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 23 Jul 2023 11:57:03 +0200 Subject: [PATCH 082/299] a bunch of minor textual changes, hiding things when no compilation support for it, also fixed the loop in keyroll generation. Added the skeleton SAM command --- CHANGELOG.md | 20 ++++---- client/src/cmdhficlass.c | 108 +++++++++++++++++++++++++++------------ common/cardhelper.c | 68 +++++++++++++++++++----- common/cardhelper.h | 1 + 4 files changed, 143 insertions(+), 54 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bcd40f863..51a06b0db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed `hf iclass config` - now loops correct in keyroll generation (@iceman1001) + - Added `hf iclass sam` - skeleton command (@iceman1001) - Changed `lf cotag demo` - a new decoder (@iceman1001) - Changed `hf legic view/eview/info` - now in verbose mode will print raw hex dump (@iceman1001) - Added new test for cotag demod using data commands in pm3_test.sh (@iceman1001) @@ -15,7 +17,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Added `hf mfp list` - interprets MIFARE Plus commands in traces (@DidierA) - Changed `hf legic sim` - loop and return codes on deviceside updated to DEFINES (@iceman1001) - Changed `hf legic einfo` - now accepts the three different cardsizes as params (@iceman1001) - - Fix `lf cotag reader -1` - now doesn't fail (@iceman1001) + - Fixed `lf cotag reader -1` - now doesn't fail (@iceman1001) - Added support for LZ4 compressed hadnested tables (@doegox) - Changed `emv reader -v` - now tries to print found transactions logs (@iceman1001) - Added ISO4217 currency lookup (@iceman1001) @@ -23,10 +25,10 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Changed `emv reader -v` - now can decode track1/2 data if found (@iceman1001) - Added `emv reader` - act as a EMV reader (@iceman1001) - Added support for Apple Wallet NFC Passes with the Value Added Services protocol implementation (@gm3197) - - Fix compiling liblua on iOS (@The-SamminAter) + - Fixed compiling liblua on iOS (@The-SamminAter) - Changed `hf_mf_luxeo_dump.lua` - now have list of keys to iterate (@iceman1001) - Fixed the timeout of TCP connections (@wh201906) - - Made the connection timeout configurable (@wh201906) + - Changed the connection timeout configurable (@wh201906) ## [Seven.4.16717][2023-06-25] - Change `hf 14a info` - now identifes QL88 tags (@iceman1001) @@ -43,7 +45,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Added more default keys (@iceman1001) Thanks anon! - Fixed `pm3-flash-all` shell script now correctly identify the if running on outdated bootloader (@iceman1001) - Fixed `hf 15693/iclass sniff` trace timings (@nvx) - - Fix LegicCash segment handling in `hf_legic.lua` script (@jmichelp) + - Fixed LegicCash segment handling in `hf_legic.lua` script (@jmichelp) - Fixed `trace list` - now handles marking of crc bytes w color a bit better (@iceman1001) - Changed `hf mfu pwdgen -r` - now generates pwd/pack for Philips Sonicare, thanks @ckuenzi, @atc1441 (@iceman1001) - Changed `hf mfu info` - now detects Philips Sonicare devices (@iceman1001) @@ -133,11 +135,11 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Changed `hf mfu info` - now also does a simple OTP fingerprinting (@iceman1001) - Changed `hf mf wrbl` - now checks for strict readonly ACL's in the data to write (@iceman1001) - Changed `hf mf view` - verbose printing if strict readonly ACL's exists in dump file (@iceman1001) - - Add command `piv authsign` to get a buffer signed by the selected key (@jmichelp) - - Add command `piv scan` which tries to read all known containers on PIV (@jmichelp) - - Add support for PIV commands, over wired and contactless interfaces (@jmichelp) - - Add `--shallow` option to `hf iclass` reader commands to do shallow (ASK) reader modulation instead of OOK (@nvx) - - Improved NXP SLI/SLIX series tag identification (@nvx) + - Added command `piv authsign` to get a buffer signed by the selected key (@jmichelp) + - Added command `piv scan` which tries to read all known containers on PIV (@jmichelp) + - Added support for PIV commands, over wired and contactless interfaces (@jmichelp) + - Added `--shallow` option to `hf iclass` reader commands to do shallow (ASK) reader modulation instead of OOK (@nvx) + - Change and improved NXP SLI/SLIX series tag identification (@nvx) - Fixed buffer overflow in "lf em 4x05 sniff" (@HeinrichsH) - Fixed potential NULL array printing (@jmichelp) - Added PIV aid to resource file (@jmichelp) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index a48bbb98e..7ccec1221 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -40,7 +40,6 @@ #include "crypto/asn1utils.h" // ASN1 decoder #include "preferences.h" - #define PICOPASS_BLOCK_SIZE 8 #define NUM_CSNS 9 #define ICLASS_KEYS_MAX 8 @@ -400,9 +399,10 @@ static int generate_config_card(const iclass_config_card_item_t *o, uint8_t *ke // encrypted 0xFF PrintAndLogEx(INFO, "Setting 0xFF's... " NOLF); - for (uint8_t i = 0x16; i <= app1_limit; i++) { + for (uint16_t i = 0x16; i < (app1_limit + 1); i++) { memcpy(data + (i * 8), ffs, sizeof(ffs)); } + PrintAndLogEx(NORMAL, "( " _GREEN_("ok") " )"); // revert potential modified app1_limit @@ -443,14 +443,14 @@ static void fuse_config(const picopass_hdr_t *hdr) { uint16_t otp = (hdr->conf.otp[1] << 8 | hdr->conf.otp[0]); - PrintAndLogEx(INFO, " Raw: " _YELLOW_("%s"), sprint_hex((uint8_t *)&hdr->conf, 8)); - PrintAndLogEx(INFO, " " _YELLOW_("%02X") "..................... app limit", hdr->conf.app_limit); - PrintAndLogEx(INFO, " " _YELLOW_("%04X") " ( %5u )...... OTP", otp, otp); - PrintAndLogEx(INFO, " " _YELLOW_("%02X") "............ block write lock", hdr->conf.block_writelock); - PrintAndLogEx(INFO, " " _YELLOW_("%02X") "......... chip", hdr->conf.chip_config); - PrintAndLogEx(INFO, " " _YELLOW_("%02X") "...... mem", hdr->conf.mem_config); - PrintAndLogEx(INFO, " " _YELLOW_("%02X") "... EAS", hdr->conf.eas); - PrintAndLogEx(INFO, " " _YELLOW_("%02X") " fuses", hdr->conf.fuses); + PrintAndLogEx(INFO, " Raw... " _YELLOW_("%s"), sprint_hex((uint8_t *)&hdr->conf, 8)); + PrintAndLogEx(INFO, " " _YELLOW_("%02X") " ( %3u )............. app limit", hdr->conf.app_limit, hdr->conf.app_limit); + PrintAndLogEx(INFO, " " _YELLOW_("%04X") " ( %5u )...... OTP", otp, otp); + PrintAndLogEx(INFO, " " _YELLOW_("%02X") "............ block write lock", hdr->conf.block_writelock); + PrintAndLogEx(INFO, " " _YELLOW_("%02X") "......... chip", hdr->conf.chip_config); + PrintAndLogEx(INFO, " " _YELLOW_("%02X") "...... mem", hdr->conf.mem_config); + PrintAndLogEx(INFO, " " _YELLOW_("%02X") "... EAS", hdr->conf.eas); + PrintAndLogEx(INFO, " " _YELLOW_("%02X") " fuses", hdr->conf.fuses); uint8_t fuses = hdr->conf.fuses; @@ -594,47 +594,47 @@ static void mem_app_config(const picopass_hdr_t *hdr) { PrintAndLogEx(INFO, " * Kd, Debit key, AA1 Kc, Credit key, AA2 *"); uint8_t keyAccess = isset(mem, 0x01); if (keyAccess) { - PrintAndLogEx(INFO, " Read AA1....... debit"); - PrintAndLogEx(INFO, " Write AA1...... debit"); - PrintAndLogEx(INFO, " Read AA2....... credit"); - PrintAndLogEx(INFO, " Write AA2...... credit"); + PrintAndLogEx(INFO, " Read AA1..... debit"); + PrintAndLogEx(INFO, " Write AA1.... debit"); + PrintAndLogEx(INFO, " Read AA2..... credit"); + PrintAndLogEx(INFO, " Write AA2.... credit"); PrintAndLogEx(INFO, " Debit........ debit or credit"); PrintAndLogEx(INFO, " Credit....... credit"); } else { - PrintAndLogEx(INFO, " Read AA1....... debit or credit"); - PrintAndLogEx(INFO, " Write AA1...... credit"); - PrintAndLogEx(INFO, " Read AA2....... debit or credit"); - PrintAndLogEx(INFO, " Write AA2...... credit"); + PrintAndLogEx(INFO, " Read AA1..... debit or credit"); + PrintAndLogEx(INFO, " Write AA1.... credit"); + PrintAndLogEx(INFO, " Read AA2..... debit or credit"); + PrintAndLogEx(INFO, " Write AA2.... credit"); PrintAndLogEx(INFO, " Debit........ debit or credit"); PrintAndLogEx(INFO, " Credit....... credit"); } } void print_picopass_info(const picopass_hdr_t *hdr) { - PrintAndLogEx(INFO, "-------------------- " _CYAN_("card configuration") " --------------------"); + PrintAndLogEx(INFO, "-------------------- " _CYAN_("Card configuration") " --------------------"); fuse_config(hdr); mem_app_config(hdr); } void print_picopass_header(const picopass_hdr_t *hdr) { - PrintAndLogEx(INFO, "--------------------------- " _CYAN_("card") " ---------------------------"); - PrintAndLogEx(SUCCESS, " CSN: " _GREEN_("%s") " uid", sprint_hex(hdr->csn, sizeof(hdr->csn))); - PrintAndLogEx(SUCCESS, " Config: %s Card configuration", sprint_hex((uint8_t *)&hdr->conf, sizeof(hdr->conf))); - PrintAndLogEx(SUCCESS, "E-purse: %s Card challenge, CC", sprint_hex(hdr->epurse, sizeof(hdr->epurse))); + PrintAndLogEx(INFO, "--------------------------- " _CYAN_("Card") " ---------------------------"); + PrintAndLogEx(SUCCESS, " CSN... " _GREEN_("%s") " uid", sprint_hex(hdr->csn, sizeof(hdr->csn))); + PrintAndLogEx(SUCCESS, " Config... %s card configuration", sprint_hex((uint8_t *)&hdr->conf, sizeof(hdr->conf))); + PrintAndLogEx(SUCCESS, "E-purse... %s card challenge, CC", sprint_hex(hdr->epurse, sizeof(hdr->epurse))); if (memcmp(hdr->key_d, zeros, sizeof(zeros)) && memcmp(hdr->key_d, empty, sizeof(empty))) { - PrintAndLogEx(SUCCESS, " Kd: " _YELLOW_("%s") " debit key", sprint_hex(hdr->key_d, sizeof(hdr->key_d))); + PrintAndLogEx(SUCCESS, " Kd... " _YELLOW_("%s") " debit key", sprint_hex(hdr->key_d, sizeof(hdr->key_d))); } else { - PrintAndLogEx(SUCCESS, " Kd: %s debit key ( hidden )", sprint_hex(hdr->key_d, sizeof(hdr->key_d))); + PrintAndLogEx(SUCCESS, " Kd... %s debit key ( hidden )", sprint_hex(hdr->key_d, sizeof(hdr->key_d))); } if (memcmp(hdr->key_c, zeros, sizeof(zeros)) && memcmp(hdr->key_c, empty, sizeof(empty))) { - PrintAndLogEx(SUCCESS, " Kc: " _YELLOW_("%s") " credit key", sprint_hex(hdr->key_c, sizeof(hdr->key_c))); + PrintAndLogEx(SUCCESS, " Kc... " _YELLOW_("%s") " credit key", sprint_hex(hdr->key_c, sizeof(hdr->key_c))); } else { - PrintAndLogEx(SUCCESS, " Kc: %s credit key ( hidden )", sprint_hex(hdr->key_c, sizeof(hdr->key_c))); + PrintAndLogEx(SUCCESS, " Kc... %s credit key ( hidden )", sprint_hex(hdr->key_c, sizeof(hdr->key_c))); } - PrintAndLogEx(SUCCESS, " AIA: %s Application Issuer area", sprint_hex(hdr->app_issuer_area, sizeof(hdr->app_issuer_area))); + PrintAndLogEx(SUCCESS, " AIA... %s application issuer area", sprint_hex(hdr->app_issuer_area, sizeof(hdr->app_issuer_area))); } static int CmdHFiClassList(const char *Cmd) { @@ -2469,7 +2469,7 @@ static int CmdHFiClass_ReadBlock(const char *Cmd) { return PM3_SUCCESS; // crypto helper available. - PrintAndLogEx(INFO, "----------------------------- " _CYAN_("cardhelper") " -----------------------------"); + PrintAndLogEx(INFO, "----------------------------- " _CYAN_("Cardhelper") " -----------------------------"); switch (blockno) { case 6: { @@ -2509,7 +2509,7 @@ static int CmdHFiClass_ReadBlock(const char *Cmd) { PrintAndLogEx(SUCCESS, " bin : %s", pbin); PrintAndLogEx(INFO, ""); - PrintAndLogEx(INFO, "------------------------------ " _CYAN_("wiegand") " -------------------------------"); + PrintAndLogEx(INFO, "------------------------------ " _CYAN_("Wiegand") " -------------------------------"); wiegand_message_t packed = initialize_message_object(top, mid, bot, 0); HIDTryUnpack(&packed); } else { @@ -4147,6 +4147,48 @@ static int CmdHFiClassConfigCard(const char *Cmd) { return PM3_SUCCESS; } +static int CmdHFiClassSAM(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf iclass sam", + "Manage via SAM\n", + "hf iclass sam\n" + ); + + void *argtable[] = { + arg_param_begin, + arg_str0("d", "data", "", "data"), + arg_lit0("v", "verbose", "verbose output"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, true); + int dlen = 0; + uint8_t data[128] = {0}; + CLIGetHexWithReturn(ctx, 1, data, &dlen); + + bool verbose = arg_get_lit(ctx, 2); + CLIParserFree(ctx); + + Iso7816CommandChannel channel = CC_CONTACT; + if (IfPm3Smartcard() == false) { + if (channel == CC_CONTACT) { + PrintAndLogEx(WARNING, "PM3 does not have SMARTCARD support, exiting"); + return PM3_EDEVNOTSUPP; + } + } + + int res = IsHIDSamPresent(verbose); + if (res != PM3_SUCCESS) { + return res; + } + + SetAPDULogging(verbose); + +// do things with sending apdus.. + + SetAPDULogging(false); + return PM3_SUCCESS; +} + static command_t CommandTable[] = { {"-----------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("operations") " ---------------------"}, {"help", CmdHelp, AlwaysAvailable, "This help"}, @@ -4156,7 +4198,7 @@ static command_t CommandTable[] = { {"list", CmdHFiClassList, AlwaysAvailable, "List iclass history"}, {"rdbl", CmdHFiClass_ReadBlock, IfPm3Iclass, "Read Picopass / iCLASS block"}, {"reader", CmdHFiClassReader, IfPm3Iclass, "Act like a Picopass / iCLASS reader"}, - {"restore", CmdHFiClassRestore, IfPm3Iclass, "Restore a dump file onto a Picopass / iCLASS tag"}, + {"restore", CmdHFiClassRestore, IfPm3Iclass, "Restore a dump file onto a Picopass / iCLASS tag"}, {"sniff", CmdHFiClassSniff, IfPm3Iclass, "Eavesdrop Picopass / iCLASS communication"}, {"wrbl", CmdHFiClass_WriteBlock, IfPm3Iclass, "Write Picopass / iCLASS block"}, @@ -4165,7 +4207,7 @@ static command_t CommandTable[] = { {"chk", CmdHFiClassCheckKeys, IfPm3Iclass, "Check keys"}, {"loclass", CmdHFiClass_loclass, AlwaysAvailable, "Use loclass to perform bruteforce reader attack"}, {"lookup", CmdHFiClassLookUp, AlwaysAvailable, "Uses authentication trace to check for key in dictionary file"}, - {"-----------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("simulation") " ---------------------"}, + {"-----------", CmdHelp, IfPm3Iclass, "--------------------- " _CYAN_("simulation") " ---------------------"}, {"sim", CmdHFiClassSim, IfPm3Iclass, "Simulate iCLASS tag"}, {"eload", CmdHFiClassELoad, IfPm3Iclass, "Load Picopass / iCLASS dump file into emulator memory"}, {"esave", CmdHFiClassESave, IfPm3Iclass, "Save emulator memory to file"}, @@ -4180,6 +4222,8 @@ static command_t CommandTable[] = { {"managekeys", CmdHFiClassManageKeys, AlwaysAvailable, "Manage keys to use with iclass commands"}, {"permutekey", CmdHFiClassPermuteKey, AlwaysAvailable, "Permute function from 'heart of darkness' paper"}, {"view", CmdHFiClassView, AlwaysAvailable, "Display content from tag dump file"}, + {"-----------", CmdHelp, IfPm3Smartcard, "--------------------- " _CYAN_("SAM") " ---------------------"}, + {"sam", CmdHFiClassSAM, IfPm3Smartcard, "SAM tests"}, {NULL, NULL, NULL, NULL} }; diff --git a/common/cardhelper.c b/common/cardhelper.c index c8c8b6bd8..fe0f7957f 100644 --- a/common/cardhelper.c +++ b/common/cardhelper.c @@ -35,26 +35,68 @@ // look for CardHelper bool IsCardHelperPresent(bool verbose) { - if (IfPm3Smartcard()) { - int resp_len = 0; - uint8_t version[] = {0x96, 0x69, 0x00, 0x00, 0x00}; - uint8_t resp[30] = {0}; - ExchangeAPDUSC(verbose, version, sizeof(version), true, true, resp, sizeof(resp), &resp_len); + if (IfPm3Smartcard() == false) { + return false; + } - if (resp_len < 8) { - return false; - } + int resp_len = 0; + uint8_t version[] = {0x96, 0x69, 0x00, 0x00, 0x00}; + uint8_t resp[30] = {0}; + ExchangeAPDUSC(verbose, version, sizeof(version), true, true, resp, sizeof(resp), &resp_len); - if (strstr("CryptoHelper", (char *)resp) == 0) { - if (verbose) { - PrintAndLogEx(INFO, "Found smart card helper"); - } - return true; + if (resp_len < 8) { + return false; + } + + if (strstr("CryptoHelper", (char *)resp) == 0) { + if (verbose) { + PrintAndLogEx(INFO, "Found smart card helper"); } + return true; } return false; } +bool IsHIDSamPresent(bool verbose) { + + if (IfPm3Smartcard() == false) { + return false; + } + + // detect SAM + smart_card_atr_t card; + smart_select(verbose, &card); + if (!card.atr_len) { + PrintAndLogEx(ERR, "Can't get ATR from a smart card"); + return false; + } + + // SAM identification + uint8_t sam_atr[] = {0x3B, 0x95, 0x96, 0x80, 0xB1, 0xFE, 0x55, 0x1F, 0xC7, 0x47, 0x72, 0x61, 0x63, 0x65, 0x13}; + if (memcmp(card.atr, sam_atr, card.atr_len) < 0) { + + uint8_t sam_atr2[] = {0x3b, 0x90, 0x96, 0x91, 0x81, 0xb1, 0xfe, 0x55, 0x1f, 0xc7, 0xd4}; + if (memcmp(card.atr, sam_atr2, card.atr_len) < 0) { + if (verbose) { + PrintAndLogEx(SUCCESS, "Not detecting a SAM"); + } + return false; + } + } + + // Suspect some SAMs has version name in their ATR + uint8_t T0 = card.atr[1]; + uint8_t K = T0 & 0x0F; + if (K > 4 && verbose) { + if (byte_strstr(card.atr, card.atr_len, (const uint8_t*)"Grace", 5)> -1) { + PrintAndLogEx(SUCCESS, "SAM (Grace) detected"); + } else if (byte_strstr(card.atr, card.atr_len, (const uint8_t*)"Hopper", 6) > -1) { + PrintAndLogEx(SUCCESS, "SAM (Hopper) detected"); + } + } + return true; +} + static bool executeCrypto(uint8_t ins, uint8_t *src, uint8_t *dest) { uint8_t cmd[] = {0x96, ins, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; memcpy(cmd + 5, src, 8); diff --git a/common/cardhelper.h b/common/cardhelper.h index 9574397a1..b88ff1e16 100644 --- a/common/cardhelper.h +++ b/common/cardhelper.h @@ -22,6 +22,7 @@ #include #include "common.h" +bool IsHIDSamPresent(bool verbose); bool IsCardHelperPresent(bool verbose); bool Encrypt(uint8_t *src, uint8_t *dest); bool Decrypt(uint8_t *src, uint8_t *dest); From 514af4cf845dcf6529eae4cd7c1b0d4fe99956ff Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 23 Jul 2023 12:51:12 +0200 Subject: [PATCH 083/299] missing break --- armsrc/iso14443a.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index c47339497..74caf51c1 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -1054,8 +1054,8 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r case 1: { // MIFARE Classic 1k rATQA[0] = 0x04; sak = 0x08; + break; } - break; case 2: { // MIFARE Ultralight rATQA[0] = 0x44; sak = 0x00; @@ -1085,32 +1085,31 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r // READ_SIG memcpy(rSIGN, mfu_header->signature, 32); AddCrc14A(rSIGN, sizeof(rSIGN) - 2); - + break; } - break; case 3: { // MIFARE DESFire rATQA[0] = 0x44; rATQA[1] = 0x03; sak = 0x20; memcpy(rRATS, "\x06\x75\x77\x81\x02\x80\x00\x00", 8); + break; } - break; case 4: { // ISO/IEC 14443-4 - javacard (JCOP) rATQA[0] = 0x04; sak = 0x28; + break; } - break; case 5: { // MIFARE TNP3XXX rATQA[0] = 0x01; rATQA[1] = 0x0f; sak = 0x01; + break; } - break; case 6: { // MIFARE Mini 320b rATQA[0] = 0x44; sak = 0x09; + break; } - break; case 7: { // NTAG rATQA[0] = 0x44; sak = 0x00; @@ -1140,41 +1139,39 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r // READ_SIG memcpy(rSIGN, mfu_header->signature, 32); AddCrc14A(rSIGN, sizeof(rSIGN) - 2); - + break; } - break; case 8: { // MIFARE Classic 4k rATQA[0] = 0x02; sak = 0x18; + break; } - break; case 9: { // FM11RF005SH (Shanghai Metro) rATQA[0] = 0x03; rATQA[1] = 0x00; sak = 0x0A; + break; } - break; case 10: { // ST25TA IKEA Rothult rATQA[0] = 0x42; rATQA[1] = 0x00; sak = 0x20; + break; } - break; case 11: { // ISO/IEC 14443-4 - javacard (JCOP) rATQA[0] = 0x04; sak = 0x20; + break; } - break; case 12: { // HID Seos 4K card rATQA[0] = 0x01; sak = 0x20; + break; } - default: { if (g_dbglevel >= DBG_ERROR) Dbprintf("Error: unknown tagtype (%d)", tagType); return false; } - break; } // if uid not supplied then get from emulator memory From a761c9765a4339170b837a7ffa4a87972e93a631 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 23 Jul 2023 12:53:04 +0200 Subject: [PATCH 084/299] style --- client/src/pm3line_vocabulory.h | 1 + common/cardhelper.c | 4 ++-- doc/commands.json | 18 ++++++++++++++++-- doc/commands.md | 1 + 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/client/src/pm3line_vocabulory.h b/client/src/pm3line_vocabulory.h index b3f177ed2..2646a0477 100644 --- a/client/src/pm3line_vocabulory.h +++ b/client/src/pm3line_vocabulory.h @@ -288,6 +288,7 @@ const static vocabulory_t vocabulory[] = { { 1, "hf iclass managekeys" }, { 1, "hf iclass permutekey" }, { 1, "hf iclass view" }, + { 0, "hf iclass sam" }, { 1, "hf legic help" }, { 0, "hf legic dump" }, { 0, "hf legic info" }, diff --git a/common/cardhelper.c b/common/cardhelper.c index fe0f7957f..7523c9a72 100644 --- a/common/cardhelper.c +++ b/common/cardhelper.c @@ -88,9 +88,9 @@ bool IsHIDSamPresent(bool verbose) { uint8_t T0 = card.atr[1]; uint8_t K = T0 & 0x0F; if (K > 4 && verbose) { - if (byte_strstr(card.atr, card.atr_len, (const uint8_t*)"Grace", 5)> -1) { + if (byte_strstr(card.atr, card.atr_len, (const uint8_t *)"Grace", 5) > -1) { PrintAndLogEx(SUCCESS, "SAM (Grace) detected"); - } else if (byte_strstr(card.atr, card.atr_len, (const uint8_t*)"Hopper", 6) > -1) { + } else if (byte_strstr(card.atr, card.atr_len, (const uint8_t *)"Hopper", 6) > -1) { PrintAndLogEx(SUCCESS, "SAM (Hopper) detected"); } } diff --git a/doc/commands.json b/doc/commands.json index 84b09c862..4506b7450 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -3303,6 +3303,20 @@ ], "usage": "hf iclass restore [-hv] -f [-k ] [--ki ] --first --last [--credit] [--elite] [--raw] [--shallow]" }, + "hf iclass sam": { + "command": "hf iclass sam", + "description": "Manage via SAM", + "notes": [ + "hf iclass sam" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-d, --data data", + "-v, --verbose verbose output" + ], + "usage": "hf iclass sam [-hv] [-d ]" + }, "hf iclass sim": { "command": "hf iclass sim", "description": "Simulate a iCLASS legacy/standard tag", @@ -11754,8 +11768,8 @@ } }, "metadata": { - "commands_extracted": 681, + "commands_extracted": 682, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-07-23T09:14:42" + "extracted_on": "2023-07-23T09:59:37" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index adbecb5bf..99ddf0efb 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -427,6 +427,7 @@ Check column "offline" for their availability. |`hf iclass managekeys `|Y |`Manage keys to use with iclass commands` |`hf iclass permutekey `|Y |`Permute function from 'heart of darkness' paper` |`hf iclass view `|Y |`Display content from tag dump file` +|`hf iclass sam `|N |`SAM tests` ### hf legic From 7473bebdbd6a9f82d18f96e39b413c61e907ae58 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 23 Jul 2023 22:32:59 +0200 Subject: [PATCH 085/299] coverty --- common/commonutil.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/common/commonutil.c b/common/commonutil.c index 4af16b3c0..5bb77a936 100644 --- a/common/commonutil.c +++ b/common/commonutil.c @@ -161,27 +161,39 @@ uint64_t bytes_to_num(uint8_t *src, size_t len) { } uint16_t MemLeToUint2byte(const uint8_t *data) { - return (data[1] << 8) + data[0]; + return (uint16_t)( + (data[1] << 8) + data[0] + ); } uint32_t MemLeToUint3byte(const uint8_t *data) { - return (data[2] << 16) + (data[1] << 8) + data[0]; + return (uint32_t)( + (data[2] << 16) + (data[1] << 8) + data[0] + ); } uint32_t MemLeToUint4byte(const uint8_t *data) { - return (data[3] << 24) + (data[2] << 16) + (data[1] << 8) + data[0]; + return (uint32_t)( + (data[3] << 24) + (data[2] << 16) + (data[1] << 8) + data[0] + ); } uint16_t MemBeToUint2byte(const uint8_t *data) { - return (data[0] << 8) + data[1]; + return (uint16_t)( + (data[0] << 8) + data[1] + ); } uint32_t MemBeToUint3byte(const uint8_t *data) { - return (data[0] << 16) + (data[1] << 8) + data[2]; + return (uint32_t)( + (data[0] << 16) + (data[1] << 8) + data[2] + ); } uint32_t MemBeToUint4byte(const uint8_t *data) { - return (data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3]; + return (uint32_t)( + (data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3] + ); } void Uint2byteToMemLe(uint8_t *data, uint16_t value) { From 95e8f0693eb1786c6f3e145dc591b50554706118 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 23 Jul 2023 22:38:02 +0200 Subject: [PATCH 086/299] coverity --- client/src/nfc/ndef.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/nfc/ndef.c b/client/src/nfc/ndef.c index 44ef70ee6..fc829e8d7 100644 --- a/client/src/nfc/ndef.c +++ b/client/src/nfc/ndef.c @@ -121,7 +121,7 @@ static int ndefDecodePayload(NDEFHeader_t *ndef, bool verbose); static uint16_t ndefTLVGetLength(const uint8_t *data, size_t *indx) { uint16_t len = 0; if (data[0] == 0xFF) { - len = (data[1] << 8) + data[2]; + len = MemBeToUint2byte(data + 1); *indx += 3; } else { len = data[0]; From d6142296f376b1a3204e51f3d40e22f33a2ac423 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 23 Jul 2023 23:23:45 +0200 Subject: [PATCH 087/299] coverity --- client/deps/hardnested/hardnested_bruteforce.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/client/deps/hardnested/hardnested_bruteforce.c b/client/deps/hardnested/hardnested_bruteforce.c index 17edfaad0..ee0c1c8f2 100644 --- a/client/deps/hardnested/hardnested_bruteforce.c +++ b/client/deps/hardnested/hardnested_bruteforce.c @@ -412,11 +412,14 @@ static bool read_bench_data(statelist_t *test_candidates) { return false; } free(path); - bytes_read = fread(&nonces_to_bruteforce, 1, sizeof(nonces_to_bruteforce), benchfile); - if (bytes_read != sizeof(nonces_to_bruteforce)) { + + // read 4 bytes of data ? + bytes_read = fread(&nonces_to_bruteforce, 1, sizeof(uint32_t), benchfile); + if (bytes_read != sizeof(uint32_t)) { fclose(benchfile); return false; } + for (uint32_t i = 0; i < nonces_to_bruteforce && i < 256; i++) { bytes_read = fread(&bf_test_nonce[i], 1, sizeof(uint32_t), benchfile); if (bytes_read != sizeof(uint32_t)) { @@ -430,11 +433,13 @@ static bool read_bench_data(statelist_t *test_candidates) { return false; } } + bytes_read = fread(&num_states, 1, sizeof(uint32_t), benchfile); if (bytes_read != sizeof(uint32_t)) { fclose(benchfile); return false; } + for (states_read = 0; states_read < MIN(num_states, TEST_BENCH_SIZE); states_read++) { bytes_read = fread(test_candidates->states[EVEN_STATE] + states_read, 1, sizeof(uint32_t), benchfile); if (bytes_read != sizeof(uint32_t)) { @@ -442,9 +447,11 @@ static bool read_bench_data(statelist_t *test_candidates) { return false; } } + for (uint32_t i = states_read; i < TEST_BENCH_SIZE; i++) { test_candidates->states[EVEN_STATE][i] = test_candidates->states[EVEN_STATE][i - states_read]; } + for (uint32_t i = states_read; i < num_states; i++) { bytes_read = fread(&temp, 1, sizeof(uint32_t), benchfile); if (bytes_read != sizeof(uint32_t)) { @@ -452,6 +459,7 @@ static bool read_bench_data(statelist_t *test_candidates) { return false; } } + for (states_read = 0; states_read < MIN(num_states, TEST_BENCH_SIZE); states_read++) { bytes_read = fread(test_candidates->states[ODD_STATE] + states_read, 1, sizeof(uint32_t), benchfile); if (bytes_read != sizeof(uint32_t)) { @@ -459,6 +467,7 @@ static bool read_bench_data(statelist_t *test_candidates) { return false; } } + for (uint32_t i = states_read; i < TEST_BENCH_SIZE; i++) { test_candidates->states[ODD_STATE][i] = test_candidates->states[ODD_STATE][i - states_read]; } From 7558846e7609728664594632e3eb5bd4b361756f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 23 Jul 2023 23:47:22 +0200 Subject: [PATCH 088/299] text --- common_arm/Makefile.hal | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/common_arm/Makefile.hal b/common_arm/Makefile.hal index 9679382ce..f9d7d2fe4 100644 --- a/common_arm/Makefile.hal +++ b/common_arm/Makefile.hal @@ -48,7 +48,9 @@ Known definitions: endef define HELP_DEFINITIONS + Options to define platform, platform extras and/or standalone mode: + (1) Run make with your PLATFORM, PLATFORM_EXTRAS and/or STANDALONE choices as follows: make PLATFORM=PM3GENERIC STANDALONE=$(HELP_EXAMPLE_STANDALONE) @@ -65,6 +67,7 @@ STANDALONE= For Proxmarks with only 256k, you can define PLATFORM_SIZE=256 + to be warned if the image is too big for your device and you can specify which parts to skip in order to reduce the size: SKIP_LF=1 @@ -80,6 +83,7 @@ SKIP_NFCBARCODE=1 SKIP_HFSNIFF=1 SKIP_HFPLOT=1 SKIP_ZX8211=1 + endef define KNOWN_DEFINITIONS From 5013d672087422f06e631ccdef5b832f4b20fa28 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 00:08:23 +0200 Subject: [PATCH 089/299] maybe coverity likes this better --- client/src/cmdhfmf.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 0531b4f28..a02026b06 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -366,10 +366,11 @@ static int mf_print_keys(uint16_t n, uint8_t *d) { for (uint16_t i = 0; i < n; i++) { if (mfIsSectorTrailer(i)) { - e_sector[mfSectorNum(i)].foundKey[0] = 1; - e_sector[mfSectorNum(i)].Key[0] = bytes_to_num(d + (i * MFBLOCK_SIZE), MIFARE_KEY_SIZE); - e_sector[mfSectorNum(i)].foundKey[1] = 1; - e_sector[mfSectorNum(i)].Key[1] = bytes_to_num(d + (i * MFBLOCK_SIZE) + 10, MIFARE_KEY_SIZE); + uint8_t sec = mfSectorNum(i); + e_sector[sec].foundKey[0] = 1; + e_sector[sec].Key[0] = bytes_to_num(d + (i * MFBLOCK_SIZE), MIFARE_KEY_SIZE); + e_sector[sec].foundKey[1] = 1; + e_sector[sec].Key[1] = bytes_to_num(d + (i * MFBLOCK_SIZE) + 10, MIFARE_KEY_SIZE); } } printKeyTable(sectors, e_sector); From 300d274d43fbefad171ee84e274dbbd68de74b54 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 00:14:56 +0200 Subject: [PATCH 090/299] coverity migth consider this to be better --- client/src/flash.c | 3 ++- client/src/proxendian.h | 8 ++++++-- common/commonutil.c | 12 ++++++------ 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/client/src/flash.c b/client/src/flash.c index cca2de7b1..4629dbdcd 100644 --- a/client/src/flash.c +++ b/client/src/flash.c @@ -240,7 +240,8 @@ static int print_and_validate_version(struct version_information_t *vi) { return PM3_EFILE; } - char temp[PM3_CMD_DATA_SIZE - 12]; // same limit as for ARM image + // same limit as for ARM image + char temp[PM3_CMD_DATA_SIZE - 12] = {0}; FormatVersionInformation(temp, sizeof(temp), "", vi); PrintAndLogEx(SUCCESS, _CYAN_("ELF file version") _YELLOW_(" %s"), temp); diff --git a/client/src/proxendian.h b/client/src/proxendian.h index 17003e75e..05b699747 100644 --- a/client/src/proxendian.h +++ b/client/src/proxendian.h @@ -53,11 +53,15 @@ #else static inline uint16_t le16(uint16_t v) { - return (v >> 8) | (v << 8); + return (uint16_t)( + (v >> 8) | (v << 8) + ); } static inline uint32_t le32(uint32_t v) { - return (le16(v) << 16) | (le16(v >> 16)); + return (uint32_t)( + (le16(v) << 16) | (le16(v >> 16)) + ); } #endif // HOST_LITTLE_ENDIAN diff --git a/common/commonutil.c b/common/commonutil.c index 5bb77a936..6790d835a 100644 --- a/common/commonutil.c +++ b/common/commonutil.c @@ -160,37 +160,37 @@ uint64_t bytes_to_num(uint8_t *src, size_t len) { return num; } -uint16_t MemLeToUint2byte(const uint8_t *data) { +inline uint16_t MemLeToUint2byte(const uint8_t *data) { return (uint16_t)( (data[1] << 8) + data[0] ); } -uint32_t MemLeToUint3byte(const uint8_t *data) { +inline uint32_t MemLeToUint3byte(const uint8_t *data) { return (uint32_t)( (data[2] << 16) + (data[1] << 8) + data[0] ); } -uint32_t MemLeToUint4byte(const uint8_t *data) { +inline uint32_t MemLeToUint4byte(const uint8_t *data) { return (uint32_t)( (data[3] << 24) + (data[2] << 16) + (data[1] << 8) + data[0] ); } -uint16_t MemBeToUint2byte(const uint8_t *data) { +inline uint16_t MemBeToUint2byte(const uint8_t *data) { return (uint16_t)( (data[0] << 8) + data[1] ); } -uint32_t MemBeToUint3byte(const uint8_t *data) { +inline uint32_t MemBeToUint3byte(const uint8_t *data) { return (uint32_t)( (data[0] << 16) + (data[1] << 8) + data[2] ); } -uint32_t MemBeToUint4byte(const uint8_t *data) { +inline uint32_t MemBeToUint4byte(const uint8_t *data) { return (uint32_t)( (data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3] ); From d19c9a262a898fc333c2a4bef912c4f2b8eb5eed Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 00:53:35 +0200 Subject: [PATCH 091/299] style, same name everywhere in project --- client/src/cmddata.c | 8 ++++---- client/src/cmdhf.c | 4 ++-- client/src/cmdhfmfhard.c | 15 ++++++++++++++- client/src/cmdlfhitag.c | 6 +++--- client/src/cmdtrace.c | 6 +++--- 5 files changed, 26 insertions(+), 13 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 74273921f..2208a34d4 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -1758,8 +1758,8 @@ int getSamplesEx(uint32_t start, uint32_t end, bool verbose, bool ignore_lf_conf if (verbose) PrintAndLogEx(INFO, "Reading " _YELLOW_("%u") " bytes from device memory", n); - PacketResponseNG response; - if (!GetFromDevice(BIG_BUF, got, n, start, NULL, 0, &response, 10000, true)) { + PacketResponseNG resp; + if (!GetFromDevice(BIG_BUF, got, n, start, NULL, 0, &resp, 10000, true)) { PrintAndLogEx(WARNING, "timeout while waiting for reply."); return PM3_ETIMEOUT; } @@ -1769,8 +1769,8 @@ int getSamplesEx(uint32_t start, uint32_t end, bool verbose, bool ignore_lf_conf uint8_t bits_per_sample = 8; // Old devices without this feature would send 0 at arg[0] - if (response.oldarg[0] > 0 && (ignore_lf_config == false)) { - sample_config *sc = (sample_config *) response.data.asBytes; + if (resp.oldarg[0] > 0 && (ignore_lf_config == false)) { + sample_config *sc = (sample_config *) resp.data.asBytes; if (verbose) PrintAndLogEx(INFO, "Samples @ " _YELLOW_("%d") " bits/smpl, decimation 1:%d ", sc->bits_per_sample, sc->decimation); bits_per_sample = sc->bits_per_sample; } diff --git a/client/src/cmdhf.c b/client/src/cmdhf.c index b15671272..b5cff4e19 100644 --- a/client/src/cmdhf.c +++ b/client/src/cmdhf.c @@ -426,8 +426,8 @@ int handle_hf_plot(void) { uint8_t buf[FPGA_TRACE_SIZE] = {0}; - PacketResponseNG response; - if (GetFromDevice(FPGA_MEM, buf, FPGA_TRACE_SIZE, 0, NULL, 0, &response, 4000, true) == false) { + PacketResponseNG resp; + if (GetFromDevice(FPGA_MEM, buf, FPGA_TRACE_SIZE, 0, NULL, 0, &resp, 4000, true) == false) { PrintAndLogEx(WARNING, "timeout while waiting for reply."); return PM3_ETIMEOUT; } diff --git a/client/src/cmdhfmfhard.c b/client/src/cmdhfmfhard.c index d66b3eb43..3d85a2c60 100644 --- a/client/src/cmdhfmfhard.c +++ b/client/src/cmdhfmfhard.c @@ -1562,7 +1562,20 @@ static int acquire_nonces(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_ float brute_force_depth; FILE *fnonces = NULL; - PacketResponseNG resp; + + // init to ZERO + PacketResponseNG resp = { + .cmd = 0, + .length = 0, + .magic = 0, + .status = 0, + .crc = 0, + .ng = false, + }; + resp.oldarg[0] = 0; + resp.oldarg[1] = 0; + resp.oldarg[2] = 0; + memset(resp.data.asBytes, 0, PM3_CMD_DATA_SIZE); uint8_t write_buf[9]; char progress_text[80]; diff --git a/client/src/cmdlfhitag.c b/client/src/cmdlfhitag.c index 7fd58c798..4df9ca4a7 100644 --- a/client/src/cmdlfhitag.c +++ b/client/src/cmdlfhitag.c @@ -72,14 +72,14 @@ static int CmdLFHitagList(const char *Cmd) { } // Query for the actual size of the trace - PacketResponseNG response; - if (!GetFromDevice(BIG_BUF, got, PM3_CMD_DATA_SIZE, 0, NULL, 0, &response, 2500, false)) { + PacketResponseNG resp; + if (!GetFromDevice(BIG_BUF, got, PM3_CMD_DATA_SIZE, 0, NULL, 0, &resp, 2500, false)) { PrintAndLogEx(WARNING, "command execution time out"); free(got); return PM3_ETIMEOUT; } - uint16_t traceLen = response.arg[2]; + uint16_t traceLen = resp.arg[2]; if (traceLen > PM3_CMD_DATA_SIZE) { uint8_t *p = realloc(got, traceLen); if (p == NULL) { diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 0d47d2d7c..7efb8bc35 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -986,15 +986,15 @@ static int download_trace(void) { PrintAndLogEx(INFO, "downloading tracelog data from device"); // Query for the size of the trace, downloading PM3_CMD_DATA_SIZE - PacketResponseNG response; - if (!GetFromDevice(BIG_BUF, gs_trace, PM3_CMD_DATA_SIZE, 0, NULL, 0, &response, 4000, true)) { + PacketResponseNG resp; + if (!GetFromDevice(BIG_BUF, gs_trace, PM3_CMD_DATA_SIZE, 0, NULL, 0, &resp, 4000, true)) { PrintAndLogEx(WARNING, "timeout while waiting for reply."); free(gs_trace); gs_trace = NULL; return PM3_ETIMEOUT; } - gs_traceLen = response.oldarg[2]; + gs_traceLen = resp.oldarg[2]; // if tracelog buffer was larger and we need to download more. if (gs_traceLen > PM3_CMD_DATA_SIZE) { From 8029e081535672dae582c7be6a8349cce0aa9c0e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 00:54:12 +0200 Subject: [PATCH 092/299] cppchecker, make sure struct is initialized to zero --- client/src/comms.c | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/client/src/comms.c b/client/src/comms.c index 1422c42d3..7bd553f20 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -742,9 +742,21 @@ static size_t communication_delay(void) { bool WaitForResponseTimeoutW(uint32_t cmd, PacketResponseNG *response, size_t ms_timeout, bool show_warning) { PacketResponseNG resp; - - if (response == NULL) + if (response == NULL) { response = &resp; + } + + // init to ZERO + resp.cmd = 0, + resp.length = 0, + resp.magic = 0, + resp.status = 0, + resp.crc = 0, + resp.ng = false, + resp.oldarg[0] = 0; + resp.oldarg[1] = 0; + resp.oldarg[2] = 0; + memset(resp.data.asBytes, 0, PM3_CMD_DATA_SIZE); // Add delay depending on the communication channel & speed if (ms_timeout != (size_t) - 1) @@ -811,8 +823,21 @@ bool GetFromDevice(DeviceMemType_t memtype, uint8_t *dest, uint32_t bytes, uint3 if (bytes == 0) return true; PacketResponseNG resp; - if (response == NULL) + if (response == NULL) { response = &resp; + } + + // init to ZERO + resp.cmd = 0, + resp.length = 0, + resp.magic = 0, + resp.status = 0, + resp.crc = 0, + resp.ng = false, + resp.oldarg[0] = 0; + resp.oldarg[1] = 0; + resp.oldarg[2] = 0; + memset(resp.data.asBytes, 0, PM3_CMD_DATA_SIZE); // clear clearCommandBuffer(); From 38034480ca3cf5627627efd323dcb8e58441f7d3 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 01:42:24 +0200 Subject: [PATCH 093/299] text --- client/src/cmdhf14a.c | 26 ++++++++++++-------------- client/src/cmdhffudan.c | 2 +- client/src/cmdhfjooki.c | 4 ++-- client/src/cmdhfmf.c | 28 ++++++++++++++-------------- client/src/cmdhfmfu.c | 8 ++++---- client/src/mifare/mifarehost.c | 14 ++++++++++---- 6 files changed, 43 insertions(+), 39 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index f2ca64076..ac94d8d0c 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -418,11 +418,10 @@ static int CmdHf14AConfig(const char *Cmd) { } int Hf14443_4aGetCardData(iso14a_card_select_t *card) { - SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); + SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); PacketResponseNG resp; WaitForResponse(CMD_ACK, &resp); - memcpy(card, (iso14a_card_select_t *)resp.data.asBytes, sizeof(iso14a_card_select_t)); uint64_t select_status = resp.oldarg[0]; // 0: couldn't read, 1: OK, with ATS, 2: OK, no ATS, 3: proprietary Anticollision @@ -548,16 +547,17 @@ static int CmdHF14AReader(const char *Cmd) { } bool continuous = arg_get_lit(ctx, 7); - CLIParserFree(ctx); - int res = PM3_SUCCESS; - - if (!disconnectAfter) + if (!disconnectAfter == false) { cm |= ISO14A_NO_DISCONNECT; + } + if (continuous) { PrintAndLogEx(INFO, "Press " _GREEN_("Enter") " to exit"); } + + int res = PM3_SUCCESS; do { clearCommandBuffer(); @@ -570,8 +570,7 @@ static int CmdHF14AReader(const char *Cmd) { if (ISO14A_CONNECT & cm) { PacketResponseNG resp; - if (!WaitForResponseTimeout(CMD_ACK, &resp, 2500)) { - if (!silent) PrintAndLogEx(WARNING, "iso14443a card select failed"); + if (WaitForResponseTimeout(CMD_ACK, &resp, 2500) == false) { DropField(); res = PM3_ESOFT; goto plot; @@ -589,7 +588,6 @@ static int CmdHF14AReader(const char *Cmd) { uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - if (!silent) PrintAndLogEx(WARNING, "iso14443a card select failed"); DropField(); res = PM3_ESOFT; goto plot; @@ -625,8 +623,8 @@ static int CmdHF14AReader(const char *Cmd) { } PrintAndLogEx(NORMAL, ""); } - if (!disconnectAfter) { - if (!silent) PrintAndLogEx(SUCCESS, "Card is selected. You can now start sending commands"); + if ((disconnectAfter == false) && (silent == false)) { + PrintAndLogEx(SUCCESS, "Card is selected. You can now start sending commands"); } } plot: @@ -1865,8 +1863,8 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { clearCommandBuffer(); SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_NO_DISCONNECT, 0, 0, NULL, 0); PacketResponseNG resp; - if (!WaitForResponseTimeout(CMD_ACK, &resp, 2500)) { - if (verbose) PrintAndLogEx(WARNING, "iso14443a card select failed"); + if (WaitForResponseTimeout(CMD_ACK, &resp, 2500) == false) { + PrintAndLogEx(DEBUG, "iso14443a card select timeout"); DropField(); return 0; } @@ -1883,7 +1881,7 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - if (verbose) PrintAndLogEx(WARNING, "iso14443a card select failed"); + PrintAndLogEx(DEBUG, "iso14443a card select failed"); DropField(); return select_status; } diff --git a/client/src/cmdhffudan.c b/client/src/cmdhffudan.c index 38ef8eef5..53e580e1b 100644 --- a/client/src/cmdhffudan.c +++ b/client/src/cmdhffudan.c @@ -110,7 +110,7 @@ static int fudan_get_type(iso14a_card_select_t *card, bool verbose) { SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_NO_DISCONNECT, 0, 0, NULL, 0); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 2500) == false) { - PrintAndLogEx(DEBUG, "iso14443a card select failed"); + PrintAndLogEx(DEBUG, "iso14443a card select timeout"); return PM3_ESOFT; } diff --git a/client/src/cmdhfjooki.c b/client/src/cmdhfjooki.c index 93ca6a00a..025fdf5c4 100644 --- a/client/src/cmdhfjooki.c +++ b/client/src/cmdhfjooki.c @@ -200,7 +200,7 @@ static int jooki_create_ndef(uint8_t *b64ndef, uint8_t *ndefrecord) { static void jooki_printEx(uint8_t *b64, uint8_t *iv, uint8_t tid, uint8_t fid, uint8_t *uid, bool verbose) { int idx = jooki_lookup(tid, fid); - PrintAndLogEx(INFO, "Encoded URL.. %s ( %s )", sprint_hex(b64, 12), b64); + PrintAndLogEx(INFO, "Encoded URL.. %s ( " _YELLOW_("%s") " )", sprint_hex(b64, 12), b64); PrintAndLogEx(INFO, "Figurine..... %02x %02x - " _GREEN_("%s, %s") , tid , fid @@ -574,7 +574,7 @@ static int CmdHF14AJookiSim(const char *Cmd) { break; } - if (WaitForResponseTimeout(CMD_HF_MIFARE_SIMULATE, &resp, 1500) == 0) + if (WaitForResponseTimeout(CMD_HF_MIFARE_SIMULATE, &resp, 1500) == false) continue; if (resp.status != PM3_SUCCESS) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index a02026b06..8c03888f0 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -101,8 +101,8 @@ static int GetHFMF14AUID(uint8_t *uid, int *uidlen) { clearCommandBuffer(); SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); PacketResponseNG resp; - if (!WaitForResponseTimeout(CMD_ACK, &resp, 2500)) { - PrintAndLogEx(WARNING, "iso14443a card select failed"); + if (WaitForResponseTimeout(CMD_ACK, &resp, 2500) == false) { + PrintAndLogEx(DEBUG, "iso14443a card select failed"); DropField(); return PM3_ERFTRANS; } @@ -551,13 +551,13 @@ static int mfc_read_tag(iso14a_card_select_t *card, uint8_t *carddata, uint8_t n SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) { - PrintAndLogEx(WARNING, "iso14443a card select timeout"); + PrintAndLogEx(DEBUG, "iso14443a card select timeout"); return PM3_ETIMEOUT; } uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - PrintAndLogEx(WARNING, "iso14443a card select failed"); + PrintAndLogEx(DEBUG, "iso14443a card select failed"); return PM3_SUCCESS; } @@ -2487,13 +2487,13 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) { - PrintAndLogEx(WARNING, "iso14443a card select timeout"); + PrintAndLogEx(DEBUG, "iso14443a card select timeout"); return PM3_ETIMEOUT; } uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - PrintAndLogEx(WARNING, "iso14443a card select failed"); + PrintAndLogEx(DEBUG, "iso14443a card select failed"); return PM3_ECARDEXCHANGE; } @@ -5248,7 +5248,7 @@ static int CmdHF14AMfCSave(const char *Cmd) { SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) { - PrintAndLogEx(WARNING, "iso14443a card select timeout"); + PrintAndLogEx(DEBUG, "iso14443a card select timeout"); return PM3_ETIMEOUT; } @@ -5260,7 +5260,7 @@ static int CmdHF14AMfCSave(const char *Cmd) { */ uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - PrintAndLogEx(WARNING, "iso14443a card select failed"); + PrintAndLogEx(DEBUG, "iso14443a card select failed"); return PM3_SUCCESS; } @@ -5398,7 +5398,7 @@ static int CmdHF14AMfCView(const char *Cmd) { SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) { - PrintAndLogEx(WARNING, "iso14443a card select timeout"); + PrintAndLogEx(DEBUG, "iso14443a card select timeout"); return PM3_ETIMEOUT; } @@ -5411,7 +5411,7 @@ static int CmdHF14AMfCView(const char *Cmd) { uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - PrintAndLogEx(WARNING, "iso14443a card select failed"); + PrintAndLogEx(DEBUG, "iso14443a card select failed"); return PM3_ERFTRANS; } @@ -6231,13 +6231,13 @@ int CmdHFMFNDEFFormat(const char *Cmd) { SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) { - PrintAndLogEx(WARNING, "iso14443a card select timeout"); + PrintAndLogEx(DEBUG, "iso14443a card select timeout"); return PM3_ETIMEOUT; } uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - PrintAndLogEx(WARNING, "iso14443a card select failed"); + PrintAndLogEx(DEBUG, "iso14443a card select failed"); return PM3_SUCCESS; } @@ -7933,7 +7933,7 @@ static int CmdHF14AGen4Save(const char *Cmd) { SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) { - PrintAndLogEx(WARNING, "iso14443a card select timeout"); + PrintAndLogEx(DEBUG, "iso14443a card select timeout"); return PM3_ETIMEOUT; } @@ -7945,7 +7945,7 @@ static int CmdHF14AGen4Save(const char *Cmd) { */ uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - PrintAndLogEx(WARNING, "iso14443a card select failed"); + PrintAndLogEx(DEBUG, "iso14443a card select failed"); return PM3_SUCCESS; } diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 9f7f54c53..6762d0b1c 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -190,7 +190,7 @@ int ul_read_uid(uint8_t *uid) { // 2: OK, no ATS // 3: proprietary Anticollision if (select_status == 0) { - PrintAndLogEx(WARNING, "iso14443a card select failed"); + PrintAndLogEx(DEBUG, "iso14443a card select failed"); return PM3_ESOFT; } if (card.uidlen != 7) { @@ -224,14 +224,14 @@ static bool ul_select(iso14a_card_select_t *card) { PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500) == false) { - PrintAndLogEx(WARNING, "timeout while waiting for reply."); + PrintAndLogEx(DEBUG, "iso14443a card select timeout"); DropField(); return false; } else { uint16_t len = (resp.oldarg[1] & 0xFFFF); if (len == 0) { - PrintAndLogEx(WARNING, "iso14443a card select failed"); + PrintAndLogEx(DEBUG, "iso14443a card select failed"); DropField(); return false; } @@ -1351,7 +1351,7 @@ static mfu_identify_t mfu_ident_table[] = { "Jooki", "0004040201000F03", 12, 32, "E11012000103A00C340329D101255504732E6A6F6F6B692E726F636B732F732F", ul_ev1_pwdgen_def, ul_ev1_packgen_def, - "hf jooki decode -r" + "hf mfu ndefread" }, { "Lego Dimensions", "0004040201000F03", diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index 6c9d8caa2..bdf4ec7f1 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -195,15 +195,22 @@ int mfCheckKeys(uint8_t blockNo, uint8_t keyType, bool clear_trace, uint8_t keyc SendCommandNG(CMD_HF_MIFARE_CHKKEYS, data, (5 + 6 * keycnt)); PacketResponseNG resp; - if (!WaitForResponseTimeout(CMD_HF_MIFARE_CHKKEYS, &resp, 2500)) return PM3_ETIMEOUT; - if (resp.status != PM3_SUCCESS) return resp.status; + if (!WaitForResponseTimeout(CMD_HF_MIFARE_CHKKEYS, &resp, 2500)) { + return PM3_ETIMEOUT; + } + if (resp.status != PM3_SUCCESS) { + return resp.status; + } struct kr { uint8_t key[6]; bool found; } PACKED; struct kr *keyresult = (struct kr *)&resp.data.asBytes; - if (!keyresult->found) return PM3_ESOFT; + if (!keyresult->found) { + return PM3_ESOFT; + } + *key = bytes_to_num(keyresult->key, sizeof(keyresult->key)); return PM3_SUCCESS; } @@ -585,7 +592,6 @@ out: return PM3_ESOFT; } - int mfStaticNested(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_t trgBlockNo, uint8_t trgKeyType, uint8_t *resultKey) { uint32_t uid; From 10504ae4fd9bb584eae642ec7ea05d6f7b7f0412 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 03:15:14 +0200 Subject: [PATCH 094/299] text and increasing a buffer --- .../deps/hardnested/hardnested_bruteforce.c | 2 +- client/src/cmdhffido.c | 30 +++++++++++-------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/client/deps/hardnested/hardnested_bruteforce.c b/client/deps/hardnested/hardnested_bruteforce.c index ee0c1c8f2..6bc400d1d 100644 --- a/client/deps/hardnested/hardnested_bruteforce.c +++ b/client/deps/hardnested/hardnested_bruteforce.c @@ -415,7 +415,7 @@ static bool read_bench_data(statelist_t *test_candidates) { // read 4 bytes of data ? bytes_read = fread(&nonces_to_bruteforce, 1, sizeof(uint32_t), benchfile); - if (bytes_read != sizeof(uint32_t)) { + if (bytes_read != sizeof(uint32_t) || (nonces_to_bruteforce >= 256)) { fclose(benchfile); return false; } diff --git a/client/src/cmdhffido.c b/client/src/cmdhffido.c index a8021e4cf..d3ab66fc6 100644 --- a/client/src/cmdhffido.c +++ b/client/src/cmdhffido.c @@ -78,33 +78,36 @@ static int CmdHFFidoInfo(const char *Cmd) { uint8_t buf[APDU_RES_LEN] = {0}; size_t len = 0; uint16_t sw = 0; - int res = FIDOSelect(true, true, buf, sizeof(buf), &len, &sw); + int res = FIDOSelect(true, true, buf, sizeof(buf), &len, &sw); if (res) { DropField(); return res; } if (sw != ISO7816_OK) { - if (sw) - PrintAndLogEx(INFO, "Not a FIDO card! APDU response: %04x - %s", sw, GetAPDUCodeDescription(sw >> 8, sw & 0xff)); - else - PrintAndLogEx(ERR, "APDU exchange error. Card returns 0x0000."); - + if (sw) { + PrintAndLogEx(INFO, "Not a FIDO card. APDU response: %04x - %s", sw, GetAPDUCodeDescription(sw >> 8, sw & 0xff)); + } else { + PrintAndLogEx(ERR, "APDU exchange error. Card returns 0x0000"); + } DropField(); return PM3_SUCCESS; } - if (!strncmp((char *)buf, "U2F_V2", 7)) { - if (!strncmp((char *)buf, "FIDO_2_0", 8)) { - PrintAndLogEx(INFO, "FIDO2 authenticator detected. Version... " _YELLOW_("%.*s"), (int)len, buf); + if (strncmp((char *)buf, "U2F_V2", 7) == 0) { + if (strncmp((char *)buf, "FIDO_2_0", 8) == 0) { + PrintAndLogEx(INFO, "FIDO2 authenticator"); + PrintAndLogEx(INFO, "Version... " _YELLOW_("%.*s"), (int)len, buf); } else { - PrintAndLogEx(INFO, "FIDO authenticator detected (not standard U2F)."); - PrintAndLogEx(INFO, "Non U2F authenticator version:"); + PrintAndLogEx(INFO, "FIDO authenticator (not standard U2F)"); + PrintAndLogEx(INFO, "Non U2F authenticator"); + PrintAndLogEx(INFO, "version... "); print_buffer((const unsigned char *)buf, len, 1); } } else { - PrintAndLogEx(INFO, "FIDO U2F authenticator detected. Version... " _YELLOW_("%.*s"), (int)len, buf); + PrintAndLogEx(INFO, "FIDO U2F authenticator detected"); + PrintAndLogEx(INFO, "Version... " _YELLOW_("%.*s"), (int)len, buf); } res = FIDO2GetInfo(buf, sizeof(buf), &len, &sw); @@ -112,6 +115,7 @@ static int CmdHFFidoInfo(const char *Cmd) { if (res) { return res; } + if (sw != ISO7816_OK) { PrintAndLogEx(ERR, "FIDO2 version doesn't exist (%04x - %s).", sw, GetAPDUCodeDescription(sw >> 8, sw & 0xff)); return PM3_SUCCESS; @@ -441,7 +445,7 @@ static int CmdHFFidoAuthenticate(const char *cmd) { controlByte = 0x07; uint8_t data[512] = {0}; - uint8_t hdata[250] = {0}; + uint8_t hdata[256] = {0}; bool public_key_loaded = false; uint8_t public_key[65] = {0}; int hdatalen = 0; From fa82c46ff730393df48e49f1fc37485bc31c8596 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 03:15:42 +0200 Subject: [PATCH 095/299] minor text --- client/src/cmdhf14a.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index ac94d8d0c..ad0eff3b5 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -2432,22 +2432,22 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { } if (isMifareUltralight) - PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf mfu info`")); + PrintAndLogEx(HINT, "Hint: try `" _YELLOW_("hf mfu info") "`"); if (isMifarePlus && isMagic == 0 && isEMV == false) - PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf mfp info`")); + PrintAndLogEx(HINT, "Hint: try `" _YELLOW_("hf mfp info") "`"); if (isMifareDESFire && isMagic == 0 && isEMV == false) - PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf mfdes info`")); + PrintAndLogEx(HINT, "Hint: try `" _YELLOW_("hf mfdes info") "`"); if (isST) - PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf st info`")); + PrintAndLogEx(HINT, "Hint: try `" _YELLOW_("hf st info") "`"); if (isEMV) - PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`emv reader`")); + PrintAndLogEx(HINT, "Hint: try `" _YELLOW_("emv reader") "`"); if (isFUDAN) { - PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf fudan dump`")); + PrintAndLogEx(HINT, "Hint: try `" _YELLOW_("hf fudan dump") "`"); /* PrintAndLogEx(HINT, " hf 14a raw -a -b 7 -k 26"); PrintAndLogEx(HINT, " hf 14a raw -k -c 3000"); @@ -2507,7 +2507,7 @@ int infoHF14A4Applications(bool verbose) { } else { for (int i = 0; i < ARRAYLEN(hintAIDList); i++) { if (cardFound[i] && strlen(hintAIDList[i].hint)) - PrintAndLogEx(HINT, "Hint: try " _YELLOW_("%s") " commands", hintAIDList[i].hint); + PrintAndLogEx(HINT, "Hint: try `" _YELLOW_("%s") "` commands", hintAIDList[i].hint); } } } From b7900816bd127b85a394855ad5fa877081422834 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 03:16:18 +0200 Subject: [PATCH 096/299] checking if calloc failed --- tools/fpga_compress/fpga_compress.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/tools/fpga_compress/fpga_compress.c b/tools/fpga_compress/fpga_compress.c index 135125bfc..711cc2f68 100644 --- a/tools/fpga_compress/fpga_compress.c +++ b/tools/fpga_compress/fpga_compress.c @@ -144,12 +144,15 @@ typedef struct lz4_stream_s { // Call it either with opened infile + outsize=0 // or with opened infile, opened outfiles, num_outfiles and valid outsize static int zlib_decompress(FILE *infile, FILE *outfiles[], uint8_t num_outfiles, long *outsize) { + if (num_outfiles > 10) { return (EXIT_FAILURE); } - LZ4_streamDecode_t lz4StreamDecode_body = {{ 0 }}; - char outbuf[FPGA_RING_BUFFER_BYTES]; + LZ4_streamDecode_t lz4StreamDecode_body = {{ 0 }}; + char outbuf[FPGA_RING_BUFFER_BYTES] = {0}; + + // file size fseek(infile, 0L, SEEK_END); long infile_size = ftell(infile); fseek(infile, 0L, SEEK_SET); @@ -168,17 +171,30 @@ static int zlib_decompress(FILE *infile, FILE *outfiles[], uint8_t num_outfiles, char *outbufall = NULL; if (*outsize > 0) { outbufall = calloc(*outsize, sizeof(char)); + if (outbufall == NULL) { + return (EXIT_FAILURE); + } } + char *inbuf = calloc(infile_size, sizeof(char)); + if (inbuf == NULL) { + if (outbufall) { + free(outbufall); + } + return (EXIT_FAILURE); + } + size_t num_read = fread(inbuf, sizeof(char), infile_size, infile); if (num_read != infile_size) { + if (*outsize > 0) { fclose(infile); for (uint16_t j = 0; j < num_outfiles; j++) { fclose(outfiles[j]); } } + if (outbufall) { free(outbufall); } From 72057f9b81796f35574f8080235f9c3fb77a4cd8 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 13:34:24 +0200 Subject: [PATCH 097/299] text --- client/src/cmdhfmf.c | 21 ++++++++++++++++----- client/src/mifare/mifare4.c | 14 +++++++++++--- client/src/mifare/mifare4.h | 1 + 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 8c03888f0..6f28d7d7c 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -153,26 +153,37 @@ static int initSectorTable(sector_t **src, size_t items) { static void decode_print_st(uint16_t blockno, uint8_t *data) { if (mfIsSectorTrailer(blockno)) { PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "----------------------- " _CYAN_("Sector trailer decoder") " -----------------------"); + PrintAndLogEx(INFO, "-------------------------- " _CYAN_("Sector trailer decoder") " --------------------------"); PrintAndLogEx(INFO, "key A........ " _GREEN_("%s"), sprint_hex_inrow(data, 6)); PrintAndLogEx(INFO, "acr.......... " _GREEN_("%s"), sprint_hex_inrow(data + 6, 3)); PrintAndLogEx(INFO, "user / gpb... " _GREEN_("%02x"), data[9]); PrintAndLogEx(INFO, "key B........ " _GREEN_("%s"), sprint_hex_inrow(data + 10, 6)); - PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, " # | Access rights"); - PrintAndLogEx(INFO, "----+-----------------------------------------------------------------"); + PrintAndLogEx(INFO, ""); + PrintAndLogEx(INFO, " # | access rights"); + PrintAndLogEx(INFO, "----+-----------------------------------------------------------------------"); if (mfValidateAccessConditions(&data[6]) == false) { PrintAndLogEx(WARNING, _RED_("Invalid Access Conditions")); } + int bln = mfFirstBlockOfSector(mfSectorNum(blockno)); int blinc = (mfNumBlocksPerSector(mfSectorNum(blockno)) > 4) ? 5 : 1; for (int i = 0; i < 4; i++) { PrintAndLogEx(INFO, "%3d%c| " _YELLOW_("%s"), bln, ((blinc > 1) && (i < 3) ? '+' : ' '), mfGetAccessConditionsDesc(i, &data[6])); bln += blinc; + + if (i == 3) { + uint8_t cond = mf_get_accesscondition(i, &data[6]); + if (cond == 0 || cond == 1 || cond == 2) { + PrintAndLogEx(INFO, ""); + PrintAndLogEx(INFO, "OBS! Key B is readable, it SHALL NOT be able to authenticate on original MFC"); + } + } } - PrintAndLogEx(INFO, "----------------------------------------------------------------------"); + + + PrintAndLogEx(INFO, "----------------------------------------------------------------------------"); PrintAndLogEx(NORMAL, ""); } } diff --git a/client/src/mifare/mifare4.c b/client/src/mifare/mifare4.c index 7a3ec9f77..420c93a9e 100644 --- a/client/src/mifare/mifare4.c +++ b/client/src/mifare/mifare4.c @@ -83,6 +83,7 @@ bool mfValidateAccessConditions(const uint8_t *data) { return ((nd1 == (d1 ^ 0xF)) && (nd2 == (d2 ^ 0xF)) && (nd3 == (d3 ^ 0xF))); } + bool mfReadOnlyAccessConditions(uint8_t blockn, const uint8_t *data) { uint8_t d1 = NIBBLE_HIGH(data[1]) >> blockn; @@ -98,7 +99,6 @@ bool mfReadOnlyAccessConditions(uint8_t blockn, const uint8_t *data) { return false; } - const char *mfGetAccessConditionsDesc(uint8_t blockn, const uint8_t *data) { uint8_t d1 = NIBBLE_HIGH(data[1]) >> blockn; uint8_t d2 = NIBBLE_LOW(data[2]) >> blockn; @@ -118,9 +118,17 @@ const char *mfGetAccessConditionsDesc(uint8_t blockn, const uint8_t *data) { } }; - static char StaticNone[] = "none"; - return StaticNone; + static char none[] = "none"; + return none; } + +uint8_t mf_get_accesscondition(uint8_t blockn, const uint8_t *data) { + uint8_t d1 = NIBBLE_HIGH(data[1]) >> blockn; + uint8_t d2 = NIBBLE_LOW(data[2]) >> blockn; + uint8_t d3 = NIBBLE_HIGH(data[2]) >> blockn; + return (d1 & 0x01) << 2 | (d2 & 0x01) << 1 | (d3 & 0x01); +} + /* static int CalculateEncIVCommand(mf4Session_t *mf4session, uint8_t *iv, bool verbose) { memcpy(&iv[0], &mf4session->TI, 4); diff --git a/client/src/mifare/mifare4.h b/client/src/mifare/mifare4.h index fee12ef6e..6687930e6 100644 --- a/client/src/mifare/mifare4.h +++ b/client/src/mifare/mifare4.h @@ -73,6 +73,7 @@ int MFPGetVersion(bool activateField, bool leaveSignalON, uint8_t *dataout, int bool mfValidateAccessConditions(const uint8_t *data); bool mfReadOnlyAccessConditions(uint8_t blockn, const uint8_t *data); const char *mfGetAccessConditionsDesc(uint8_t blockn, const uint8_t *data); +uint8_t mf_get_accesscondition(uint8_t blockn, const uint8_t *data); uint8_t mfNumBlocksPerSector(uint8_t sectorNo); uint8_t mfFirstBlockOfSector(uint8_t sectorNo); From fcde2978a8ffe1ccbb86d8ed9103a8c792da47a8 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 15:11:21 +0200 Subject: [PATCH 098/299] coverity believes somehow the return value from mfSectorNum can be 31. And wants us to check that it is only same size as sectors allocated --- client/src/cmdhfmf.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 6f28d7d7c..bbeaa5fce 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -376,13 +376,14 @@ static int mf_print_keys(uint16_t n, uint8_t *d) { } for (uint16_t i = 0; i < n; i++) { - if (mfIsSectorTrailer(i)) { - uint8_t sec = mfSectorNum(i); - e_sector[sec].foundKey[0] = 1; - e_sector[sec].Key[0] = bytes_to_num(d + (i * MFBLOCK_SIZE), MIFARE_KEY_SIZE); - e_sector[sec].foundKey[1] = 1; - e_sector[sec].Key[1] = bytes_to_num(d + (i * MFBLOCK_SIZE) + 10, MIFARE_KEY_SIZE); + if (mfIsSectorTrailer(i) == false) { + continue; } + uint8_t sec = MIN(sectors, mfSectorNum(i)); + e_sector[sec].foundKey[0] = 1; + e_sector[sec].Key[0] = bytes_to_num(d + (i * MFBLOCK_SIZE), MIFARE_KEY_SIZE); + e_sector[sec].foundKey[1] = 1; + e_sector[sec].Key[1] = bytes_to_num(d + (i * MFBLOCK_SIZE) + 10, MIFARE_KEY_SIZE); } printKeyTable(sectors, e_sector); free(e_sector); From 90d1fed1fab42594d285f7d4d488eb56f3505bb3 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 15:14:17 +0200 Subject: [PATCH 099/299] coverity somehow believes we read a long string from a file and the data isnt null terminated (i.e. last char is 0x00) so let see if a ugly + 1 will do the trick --- client/src/flash.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/flash.c b/client/src/flash.c index 4629dbdcd..b1f4a28c9 100644 --- a/client/src/flash.c +++ b/client/src/flash.c @@ -286,7 +286,7 @@ int flash_load(flash_file_t *ctx, bool force) { goto fail; } - ctx->elf = calloc(fsize, sizeof(uint8_t)); + ctx->elf = calloc(fsize + 1, sizeof(uint8_t)); if (!ctx->elf) { PrintAndLogEx(ERR, "Error, cannot allocate memory"); res = PM3_EMALLOC; From fb35a29ba079fb6f38dc02945c0cd99e68e01a1c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 15:18:56 +0200 Subject: [PATCH 100/299] coverity doesnt think we checked the bytes_read values enough. lets add a check --- client/src/cmdnfc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdnfc.c b/client/src/cmdnfc.c index eadfa7161..431464076 100644 --- a/client/src/cmdnfc.c +++ b/client/src/cmdnfc.c @@ -109,7 +109,7 @@ static int CmdNfcDecode(const char *Cmd) { uint8_t *dump = NULL; size_t bytes_read = 4096; res = pm3_load_dump(filename, (void **)&dump, &bytes_read, 4096); - if (res != PM3_SUCCESS || dump == NULL) { + if (res != PM3_SUCCESS || dump == NULL || bytes_read > 4096) { return res; } From 90a3b968fd89d47c9d991c672d8f69994b2ea23e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 15:24:53 +0200 Subject: [PATCH 101/299] coverity dont think we check if we got enough bytes to operate on. The sizeof the bmp_header_t gives a bit, we would need more ... --- client/src/cmdhfwaveshare.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhfwaveshare.c b/client/src/cmdhfwaveshare.c index 8df62bcc1..12e5320e3 100644 --- a/client/src/cmdhfwaveshare.c +++ b/client/src/cmdhfwaveshare.c @@ -1064,7 +1064,13 @@ static int CmdHF14AWSLoadBmp(const char *Cmd) { size_t bytes_read = 0; if (loadFile_safe(filename, ".bmp", (void **)&bmp, &bytes_read) != PM3_SUCCESS) { PrintAndLogEx(WARNING, "Could not find file " _YELLOW_("%s"), filename); - return PM3_EIO; + return PM3_EFILE; + } + if (bmp == NULL) { + return PM3_EMALLOC; + } + if (bytes_read < sizeof(bmp_header_t)) { + return PM3_ESOFT; } int depth = picture_bit_depth(bmp, bytes_read, model_nr); From 97ca694c103a35bc0ffb811e2c0e8222ce58f430 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 16:39:48 +0200 Subject: [PATCH 102/299] added a view command for ISO15693 --- CHANGELOG.md | 1 + client/src/cmdhf15.c | 48 +++++++++++++++++++++++++++++++++++++++----- 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 51a06b0db..bb0835a11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added `hf 15 vie` - view ISO15693 dump files (@iceman1001) - Fixed `hf iclass config` - now loops correct in keyroll generation (@iceman1001) - Added `hf iclass sam` - skeleton command (@iceman1001) - Changed `lf cotag demo` - a new decoder (@iceman1001) diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index c16bfb10b..63ed2dd09 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -2820,10 +2820,45 @@ static int CmdHF15EASPassProtect(const char *Cmd) { return resp.status; } +static int CmdHF15View(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf 15 view", + "Print a ISO-15693 tag dump file (bin/eml/json)", + "hf 15 view -f hf-iclass-AA162D30F8FF12F1-dump.bin\n" + ); + void *argtable[] = { + arg_param_begin, + arg_str1("f", "file", "", "filename of dump (bin/eml/json)"), +// arg_lit0("z", "dense", "dense dump output style"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); + + int fnlen = 0; + char filename[FILE_PATH_SIZE]; + CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)filename, FILE_PATH_SIZE, &fnlen); +// bool dense_output = g_session.dense_output || arg_get_lit(ctx, 2); + CLIParserFree(ctx); + + // read dump file + uint8_t *dump = NULL; + size_t bytes_read = CARD_MEMORY_SIZE; + int res = pm3_load_dump(filename, (void **)&dump, &bytes_read, CARD_MEMORY_SIZE); + if (res != PM3_SUCCESS) { + return res; + } + + PrintAndLogEx(NORMAL, ""); + print_blocks_15693(dump, bytes_read, 4); + + free(dump); + return PM3_SUCCESS; +} + static command_t CommandTable[] = { - {"-----------", CmdHF15Help, AlwaysAvailable, "--------------------- " _CYAN_("General") " ---------------------"}, {"help", CmdHF15Help, AlwaysAvailable, "This help"}, {"list", CmdHF15List, AlwaysAvailable, "List ISO-15693 history"}, + {"-----------", CmdHF15Help, AlwaysAvailable, "----------------------- " _CYAN_("general") " -----------------------"}, {"demod", CmdHF15Demod, AlwaysAvailable, "Demodulate ISO-15693 from tag"}, {"dump", CmdHF15Dump, IfPm3Iso15693, "Read all memory pages of an ISO-15693 tag, save to file"}, {"info", CmdHF15Info, IfPm3Iso15693, "Tag information"}, @@ -2834,10 +2869,14 @@ static command_t CommandTable[] = { {"reader", CmdHF15Reader, IfPm3Iso15693, "Act like an ISO-15693 reader"}, {"restore", CmdHF15Restore, IfPm3Iso15693, "Restore from file to all memory pages of an ISO-15693 tag"}, {"samples", CmdHF15Samples, IfPm3Iso15693, "Acquire samples as reader (enables carrier, sends inquiry)"}, + {"view", CmdHF15View, AlwaysAvailable, "Display content from tag dump file"}, + {"wrbl", CmdHF15Write, IfPm3Iso15693, "Write a block"}, + {"-----------", CmdHF15Help, IfPm3Iso15693, "--------------------- " _CYAN_("simulation") " ----------------------"}, + {"sim", CmdHF15Sim, IfPm3Iso15693, "Fake an ISO-15693 tag"}, {"eload", CmdHF15ELoad, IfPm3Iso15693, "Load image file into emulator to be used by 'sim' command"}, {"esave", CmdHF15ESave, IfPm3Iso15693, "Save emulator memory into image file"}, {"eview", CmdHF15EView, IfPm3Iso15693, "View emulator memory"}, - {"sim", CmdHF15Sim, IfPm3Iso15693, "Fake an ISO-15693 tag"}, + {"-----------", CmdHF15Help, IfPm3Iso15693, "------------------------ " _CYAN_("SLIX") " -------------------------"}, {"slixwritepwd", CmdHF15SlixWritePassword, IfPm3Iso15693, "Writes a password on a SLIX ISO-15693 tag"}, {"slixeasdisable", CmdHF15SlixEASDisable, IfPm3Iso15693, "Disable EAS mode on SLIX ISO-15693 tag"}, {"slixeasenable", CmdHF15SlixEASEnable, IfPm3Iso15693, "Enable EAS mode on SLIX ISO-15693 tag"}, @@ -2845,12 +2884,11 @@ static command_t CommandTable[] = { {"slixprivacyenable", CmdHF15SlixEnable, IfPm3Iso15693, "Enable privacy mode on SLIX ISO-15693 tag"}, {"passprotectafi", CmdHF15AFIPassProtect, IfPm3Iso15693, "Password protect AFI - Cannot be undone"}, {"passprotecteas", CmdHF15EASPassProtect, IfPm3Iso15693, "Password protect EAS - Cannot be undone"}, - {"wrbl", CmdHF15Write, IfPm3Iso15693, "Write a block"}, - {"-----------", CmdHF15Help, IfPm3Iso15693, "----------------------- " _CYAN_("afi") " -----------------------"}, + {"-----------", CmdHF15Help, IfPm3Iso15693, "-------------------------- " _CYAN_("afi") " ------------------------"}, {"findafi", CmdHF15FindAfi, IfPm3Iso15693, "Brute force AFI of an ISO-15693 tag"}, {"writeafi", CmdHF15WriteAfi, IfPm3Iso15693, "Writes the AFI on an ISO-15693 tag"}, {"writedsfid", CmdHF15WriteDsfid, IfPm3Iso15693, "Writes the DSFID on an ISO-15693 tag"}, - {"-----------", CmdHF15Help, IfPm3Iso15693, "----------------------- " _CYAN_("magic") " -----------------------"}, + {"-----------", CmdHF15Help, IfPm3Iso15693, "------------------------- " _CYAN_("magic") " -----------------------"}, {"csetuid", CmdHF15CSetUID, IfPm3Iso15693, "Set UID for magic card"}, {NULL, NULL, NULL, NULL} }; From eaee05908ca86e4d9db5ceda5541826578042704 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 17:01:33 +0200 Subject: [PATCH 103/299] text --- client/src/cmdhficlass.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 7ccec1221..11bec0d16 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -4190,30 +4190,29 @@ static int CmdHFiClassSAM(const char *Cmd) { } static command_t CommandTable[] = { - {"-----------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("operations") " ---------------------"}, {"help", CmdHelp, AlwaysAvailable, "This help"}, + {"list", CmdHFiClassList, AlwaysAvailable, "List iclass history"}, + {"-----------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("general") " ---------------------"}, // {"clone", CmdHFiClassClone, IfPm3Iclass, "Create a HID credential to Picopass / iCLASS tag"}, {"dump", CmdHFiClassDump, IfPm3Iclass, "Dump Picopass / iCLASS tag to file"}, {"info", CmdHFiClassInfo, AlwaysAvailable, "Tag information"}, - {"list", CmdHFiClassList, AlwaysAvailable, "List iclass history"}, {"rdbl", CmdHFiClass_ReadBlock, IfPm3Iclass, "Read Picopass / iCLASS block"}, {"reader", CmdHFiClassReader, IfPm3Iclass, "Act like a Picopass / iCLASS reader"}, {"restore", CmdHFiClassRestore, IfPm3Iclass, "Restore a dump file onto a Picopass / iCLASS tag"}, {"sniff", CmdHFiClassSniff, IfPm3Iclass, "Eavesdrop Picopass / iCLASS communication"}, + {"view", CmdHFiClassView, AlwaysAvailable, "Display content from tag dump file"}, {"wrbl", CmdHFiClass_WriteBlock, IfPm3Iclass, "Write Picopass / iCLASS block"}, - - {"-----------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("recovery") " ---------------------"}, + {"-----------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("recovery") " --------------------"}, // {"autopwn", CmdHFiClassAutopwn, IfPm3Iclass, "Automatic key recovery tool for iCLASS"}, {"chk", CmdHFiClassCheckKeys, IfPm3Iclass, "Check keys"}, {"loclass", CmdHFiClass_loclass, AlwaysAvailable, "Use loclass to perform bruteforce reader attack"}, {"lookup", CmdHFiClassLookUp, AlwaysAvailable, "Uses authentication trace to check for key in dictionary file"}, - {"-----------", CmdHelp, IfPm3Iclass, "--------------------- " _CYAN_("simulation") " ---------------------"}, + {"-----------", CmdHelp, IfPm3Iclass, "-------------------- " _CYAN_("simulation") " -------------------"}, {"sim", CmdHFiClassSim, IfPm3Iclass, "Simulate iCLASS tag"}, {"eload", CmdHFiClassELoad, IfPm3Iclass, "Load Picopass / iCLASS dump file into emulator memory"}, {"esave", CmdHFiClassESave, IfPm3Iclass, "Save emulator memory to file"}, {"eview", CmdHFiClassEView, IfPm3Iclass, "View emulator memory"}, - - {"-----------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("utils") " ---------------------"}, + {"-----------", CmdHelp, AlwaysAvailable, "---------------------- " _CYAN_("utils") " ----------------------"}, {"configcard", CmdHFiClassConfigCard, AlwaysAvailable, "Reader configuration card"}, {"calcnewkey", CmdHFiClassCalcNewKey, AlwaysAvailable, "Calc diversified keys (blocks 3 & 4) to write new keys"}, {"encode", CmdHFiClassEncode, AlwaysAvailable, "Encode binary wiegand to block 7"}, @@ -4221,8 +4220,7 @@ static command_t CommandTable[] = { {"decrypt", CmdHFiClassDecrypt, AlwaysAvailable, "Decrypt given block data or tag dump file" }, {"managekeys", CmdHFiClassManageKeys, AlwaysAvailable, "Manage keys to use with iclass commands"}, {"permutekey", CmdHFiClassPermuteKey, AlwaysAvailable, "Permute function from 'heart of darkness' paper"}, - {"view", CmdHFiClassView, AlwaysAvailable, "Display content from tag dump file"}, - {"-----------", CmdHelp, IfPm3Smartcard, "--------------------- " _CYAN_("SAM") " ---------------------"}, + {"-----------", CmdHelp, IfPm3Smartcard, "----------------------- " _CYAN_("SAM") " -----------------------"}, {"sam", CmdHFiClassSAM, IfPm3Smartcard, "SAM tests"}, {NULL, NULL, NULL, NULL} }; From 63bb831a64e7d3de28a5fbf89271d5fc1ea3d8e0 Mon Sep 17 00:00:00 2001 From: Self Not Found Date: Mon, 24 Jul 2023 23:37:33 +0800 Subject: [PATCH 104/299] Fix typos in CHANGELOG.md --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bb0835a11..43b0af889 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] - - Added `hf 15 vie` - view ISO15693 dump files (@iceman1001) + - Added `hf 15 view` - view ISO15693 dump files (@iceman1001) - Fixed `hf iclass config` - now loops correct in keyroll generation (@iceman1001) - Added `hf iclass sam` - skeleton command (@iceman1001) - Changed `lf cotag demo` - a new decoder (@iceman1001) @@ -19,7 +19,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Changed `hf legic sim` - loop and return codes on deviceside updated to DEFINES (@iceman1001) - Changed `hf legic einfo` - now accepts the three different cardsizes as params (@iceman1001) - Fixed `lf cotag reader -1` - now doesn't fail (@iceman1001) - - Added support for LZ4 compressed hadnested tables (@doegox) + - Added support for LZ4 compressed hardnested tables (@doegox) - Changed `emv reader -v` - now tries to print found transactions logs (@iceman1001) - Added ISO4217 currency lookup (@iceman1001) - Fixed bad free in loadfilebinarykey fct. Thanks to @gentilkiwi From 1a788b1c14ec05a1c5f81a79f9b72ce933cedd06 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 17:42:27 +0200 Subject: [PATCH 105/299] make style --- client/src/cmdhf14a.c | 2 +- client/src/cmdhf15.c | 2 +- client/src/cmdhfmfhard.c | 6 +- client/src/comms.c | 8 +- client/src/pm3line_vocabulory.h | 1542 +++++++++++++++---------------- client/src/proxendian.h | 8 +- common/commonutil.c | 24 +- 7 files changed, 796 insertions(+), 796 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index ad0eff3b5..daa9ba8fb 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -624,7 +624,7 @@ static int CmdHF14AReader(const char *Cmd) { PrintAndLogEx(NORMAL, ""); } if ((disconnectAfter == false) && (silent == false)) { - PrintAndLogEx(SUCCESS, "Card is selected. You can now start sending commands"); + PrintAndLogEx(SUCCESS, "Card is selected. You can now start sending commands"); } } plot: diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index 63ed2dd09..792692773 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -2825,7 +2825,7 @@ static int CmdHF15View(const char *Cmd) { CLIParserInit(&ctx, "hf 15 view", "Print a ISO-15693 tag dump file (bin/eml/json)", "hf 15 view -f hf-iclass-AA162D30F8FF12F1-dump.bin\n" - ); + ); void *argtable[] = { arg_param_begin, arg_str1("f", "file", "", "filename of dump (bin/eml/json)"), diff --git a/client/src/cmdhfmfhard.c b/client/src/cmdhfmfhard.c index 3d85a2c60..9b4cf4858 100644 --- a/client/src/cmdhfmfhard.c +++ b/client/src/cmdhfmfhard.c @@ -1564,16 +1564,16 @@ static int acquire_nonces(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_ FILE *fnonces = NULL; // init to ZERO - PacketResponseNG resp = { + PacketResponseNG resp = { .cmd = 0, .length = 0, .magic = 0, .status = 0, - .crc = 0, + .crc = 0, .ng = false, }; resp.oldarg[0] = 0; - resp.oldarg[1] = 0; + resp.oldarg[1] = 0; resp.oldarg[2] = 0; memset(resp.data.asBytes, 0, PM3_CMD_DATA_SIZE); diff --git a/client/src/comms.c b/client/src/comms.c index 7bd553f20..298db88e7 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -751,10 +751,10 @@ bool WaitForResponseTimeoutW(uint32_t cmd, PacketResponseNG *response, size_t ms resp.length = 0, resp.magic = 0, resp.status = 0, - resp.crc = 0, + resp.crc = 0, resp.ng = false, resp.oldarg[0] = 0; - resp.oldarg[1] = 0; + resp.oldarg[1] = 0; resp.oldarg[2] = 0; memset(resp.data.asBytes, 0, PM3_CMD_DATA_SIZE); @@ -832,10 +832,10 @@ bool GetFromDevice(DeviceMemType_t memtype, uint8_t *dest, uint32_t bytes, uint3 resp.length = 0, resp.magic = 0, resp.status = 0, - resp.crc = 0, + resp.crc = 0, resp.ng = false, resp.oldarg[0] = 0; - resp.oldarg[1] = 0; + resp.oldarg[1] = 0; resp.oldarg[2] = 0; memset(resp.data.asBytes, 0, PM3_CMD_DATA_SIZE); diff --git a/client/src/pm3line_vocabulory.h b/client/src/pm3line_vocabulory.h index 2646a0477..864047dba 100644 --- a/client/src/pm3line_vocabulory.h +++ b/client/src/pm3line_vocabulory.h @@ -31,776 +31,776 @@ typedef struct vocabulory_s { } vocabulory_t; const static vocabulory_t vocabulory[] = { - { 1, "help" }, - { 0, "auto" }, - { 1, "clear" }, - { 1, "hints" }, - { 1, "msleep" }, - { 1, "rem" }, - { 1, "quit" }, - { 1, "exit" }, - { 1, "prefs help" }, - { 1, "prefs show" }, - { 1, "prefs get barmode" }, - { 1, "prefs get clientdebug" }, - { 1, "prefs get clientdelay" }, - { 1, "prefs get color" }, - { 1, "prefs get savepaths" }, - { 1, "prefs get emoji" }, - { 1, "prefs get hints" }, - { 1, "prefs get output" }, - { 1, "prefs get plotsliders" }, - { 1, "prefs set help" }, - { 1, "prefs set barmode" }, - { 1, "prefs set clientdebug" }, - { 1, "prefs set clientdelay" }, - { 1, "prefs set color" }, - { 1, "prefs set emoji" }, - { 1, "prefs set hints" }, - { 1, "prefs set savepaths" }, - { 1, "prefs set output" }, - { 1, "prefs set plotsliders" }, - { 1, "analyse help" }, - { 1, "analyse lcr" }, - { 1, "analyse crc" }, - { 1, "analyse chksum" }, - { 1, "analyse dates" }, - { 1, "analyse lfsr" }, - { 1, "analyse a" }, - { 1, "analyse nuid" }, - { 1, "analyse demodbuff" }, - { 1, "analyse freq" }, - { 1, "analyse foo" }, - { 1, "analyse units" }, - { 1, "data help" }, - { 1, "data biphaserawdecode" }, - { 1, "data detectclock" }, - { 1, "data fsktonrz" }, - { 1, "data manrawdecode" }, - { 1, "data modulation" }, - { 1, "data rawdemod" }, - { 1, "data askedgedetect" }, - { 1, "data autocorr" }, - { 1, "data dirthreshold" }, - { 1, "data decimate" }, - { 1, "data envelope" }, - { 1, "data undecimate" }, - { 1, "data hide" }, - { 1, "data hpf" }, - { 1, "data iir" }, - { 1, "data grid" }, - { 1, "data ltrim" }, - { 1, "data mtrim" }, - { 1, "data norm" }, - { 1, "data plot" }, - { 1, "data cthreshold" }, - { 1, "data rtrim" }, - { 1, "data setgraphmarkers" }, - { 1, "data shiftgraphzero" }, - { 1, "data timescale" }, - { 1, "data zerocrossings" }, - { 1, "data convertbitstream" }, - { 1, "data getbitstream" }, - { 1, "data asn1" }, - { 1, "data bin2hex" }, - { 0, "data bitsamples" }, - { 1, "data clear" }, - { 1, "data diff" }, - { 0, "data hexsamples" }, - { 1, "data hex2bin" }, - { 1, "data load" }, - { 1, "data num" }, - { 1, "data print" }, - { 0, "data samples" }, - { 1, "data save" }, - { 1, "data setdebugmode" }, - { 0, "data tune" }, - { 1, "emv help" }, - { 1, "emv list" }, - { 1, "emv test" }, - { 0, "emv challenge" }, - { 0, "emv exec" }, - { 0, "emv genac" }, - { 0, "emv gpo" }, - { 0, "emv intauth" }, - { 0, "emv pse" }, - { 0, "emv reader" }, - { 0, "emv readrec" }, - { 0, "emv roca" }, - { 0, "emv scan" }, - { 0, "emv search" }, - { 0, "emv select" }, - { 1, "hf help" }, - { 1, "hf list" }, - { 0, "hf plot" }, - { 0, "hf tune" }, - { 1, "hf search" }, - { 0, "hf sniff" }, - { 1, "hf 14a help" }, - { 1, "hf 14a list" }, - { 0, "hf 14a antifuzz" }, - { 0, "hf 14a config" }, - { 0, "hf 14a cuids" }, - { 0, "hf 14a info" }, - { 0, "hf 14a sim" }, - { 0, "hf 14a sniff" }, - { 0, "hf 14a raw" }, - { 0, "hf 14a reader" }, - { 0, "hf 14a apdu" }, - { 0, "hf 14a apdufind" }, - { 0, "hf 14a chaining" }, - { 0, "hf 14a ndefformat" }, - { 0, "hf 14a ndefread" }, - { 0, "hf 14a ndefwrite" }, - { 1, "hf 14b help" }, - { 0, "hf 14b apdu" }, - { 0, "hf 14b dump" }, - { 0, "hf 14b info" }, - { 1, "hf 14b list" }, - { 0, "hf 14b ndefread" }, - { 0, "hf 14b raw" }, - { 0, "hf 14b reader" }, - { 0, "hf 14b sim" }, - { 0, "hf 14b sniff" }, - { 0, "hf 14b rdbl" }, - { 0, "hf 14b sriwrite" }, - { 1, "hf 14b view" }, - { 1, "hf 15 help" }, - { 1, "hf 15 list" }, - { 1, "hf 15 demod" }, - { 0, "hf 15 dump" }, - { 0, "hf 15 info" }, - { 0, "hf 15 sniff" }, - { 0, "hf 15 raw" }, - { 0, "hf 15 rdbl" }, - { 0, "hf 15 rdmulti" }, - { 0, "hf 15 reader" }, - { 0, "hf 15 restore" }, - { 0, "hf 15 samples" }, - { 0, "hf 15 eload" }, - { 0, "hf 15 esave" }, - { 0, "hf 15 eview" }, - { 0, "hf 15 sim" }, - { 0, "hf 15 slixwritepwd" }, - { 0, "hf 15 slixeasdisable" }, - { 0, "hf 15 slixeasenable" }, - { 0, "hf 15 slixprivacydisable" }, - { 0, "hf 15 slixprivacyenable" }, - { 0, "hf 15 passprotectafi" }, - { 0, "hf 15 passprotecteas" }, - { 0, "hf 15 wrbl" }, - { 0, "hf 15 findafi" }, - { 0, "hf 15 writeafi" }, - { 0, "hf 15 writedsfid" }, - { 0, "hf 15 csetuid" }, - { 1, "hf cipurse help" }, - { 0, "hf cipurse info" }, - { 0, "hf cipurse select" }, - { 0, "hf cipurse auth" }, - { 0, "hf cipurse read" }, - { 0, "hf cipurse write" }, - { 0, "hf cipurse aread" }, - { 0, "hf cipurse awrite" }, - { 0, "hf cipurse formatall" }, - { 0, "hf cipurse create" }, - { 0, "hf cipurse delete" }, - { 0, "hf cipurse updkey" }, - { 0, "hf cipurse updakey" }, - { 0, "hf cipurse default" }, - { 1, "hf cipurse test" }, - { 1, "hf epa help" }, - { 0, "hf epa cnonces" }, - { 0, "hf epa replay" }, - { 0, "hf epa sim" }, - { 1, "hf emrtd help" }, - { 0, "hf emrtd dump" }, - { 1, "hf emrtd info" }, - { 1, "hf emrtd list" }, - { 1, "hf felica help" }, - { 1, "hf felica list" }, - { 0, "hf felica reader" }, - { 0, "hf felica info" }, - { 0, "hf felica sniff" }, - { 0, "hf felica raw" }, - { 0, "hf felica rdbl" }, - { 0, "hf felica wrbl" }, - { 0, "hf felica rqservice" }, - { 0, "hf felica rqresponse" }, - { 0, "hf felica scsvcode" }, - { 0, "hf felica rqsyscode" }, - { 0, "hf felica auth1" }, - { 0, "hf felica auth2" }, - { 0, "hf felica rqspecver" }, - { 0, "hf felica resetmode" }, - { 0, "hf felica litesim" }, - { 0, "hf felica litedump" }, - { 1, "hf fido help" }, - { 1, "hf fido list" }, - { 0, "hf fido info" }, - { 0, "hf fido reg" }, - { 0, "hf fido auth" }, - { 0, "hf fido make" }, - { 0, "hf fido assert" }, - { 1, "hf fudan help" }, - { 0, "hf fudan reader" }, - { 0, "hf fudan dump" }, - { 0, "hf fudan rdbl" }, - { 1, "hf fudan view" }, - { 0, "hf fudan wrbl" }, - { 1, "hf gallagher help" }, - { 0, "hf gallagher reader" }, - { 0, "hf gallagher clone" }, - { 0, "hf gallagher delete" }, - { 1, "hf gallagher diversifykey" }, - { 1, "hf gallagher decode" }, - { 1, "hf ksx6924 help" }, - { 0, "hf ksx6924 select" }, - { 0, "hf ksx6924 info" }, - { 0, "hf ksx6924 balance" }, - { 0, "hf ksx6924 init" }, - { 0, "hf ksx6924 prec" }, - { 1, "hf jooki help" }, - { 0, "hf jooki clone" }, - { 1, "hf jooki decode" }, - { 1, "hf jooki encode" }, - { 0, "hf jooki sim" }, - { 1, "hf iclass help" }, - { 0, "hf iclass dump" }, - { 1, "hf iclass info" }, - { 1, "hf iclass list" }, - { 0, "hf iclass rdbl" }, - { 0, "hf iclass reader" }, - { 0, "hf iclass restore" }, - { 0, "hf iclass sniff" }, - { 0, "hf iclass wrbl" }, - { 0, "hf iclass chk" }, - { 1, "hf iclass loclass" }, - { 1, "hf iclass lookup" }, - { 0, "hf iclass sim" }, - { 0, "hf iclass eload" }, - { 0, "hf iclass esave" }, - { 0, "hf iclass eview" }, - { 1, "hf iclass configcard" }, - { 1, "hf iclass calcnewkey" }, - { 1, "hf iclass encode" }, - { 1, "hf iclass encrypt" }, - { 1, "hf iclass decrypt" }, - { 1, "hf iclass managekeys" }, - { 1, "hf iclass permutekey" }, - { 1, "hf iclass view" }, - { 0, "hf iclass sam" }, - { 1, "hf legic help" }, - { 0, "hf legic dump" }, - { 0, "hf legic info" }, - { 1, "hf legic list" }, - { 0, "hf legic rdbl" }, - { 0, "hf legic reader" }, - { 0, "hf legic restore" }, - { 0, "hf legic wipe" }, - { 0, "hf legic wrbl" }, - { 0, "hf legic sim" }, - { 0, "hf legic eload" }, - { 0, "hf legic esave" }, - { 0, "hf legic eview" }, - { 0, "hf legic einfo" }, - { 1, "hf legic crc" }, - { 1, "hf legic view" }, - { 1, "hf lto help" }, - { 0, "hf lto dump" }, - { 0, "hf lto info" }, - { 1, "hf lto list" }, - { 0, "hf lto rdbl" }, - { 0, "hf lto reader" }, - { 0, "hf lto restore" }, - { 0, "hf lto wrbl" }, - { 1, "hf mf help" }, - { 1, "hf mf list" }, - { 0, "hf mf darkside" }, - { 0, "hf mf nested" }, - { 1, "hf mf hardnested" }, - { 0, "hf mf staticnested" }, - { 0, "hf mf autopwn" }, - { 0, "hf mf nack" }, - { 0, "hf mf chk" }, - { 0, "hf mf fchk" }, - { 1, "hf mf decrypt" }, - { 0, "hf mf supercard" }, - { 0, "hf mf auth4" }, - { 1, "hf mf acl" }, - { 0, "hf mf dump" }, - { 1, "hf mf mad" }, - { 0, "hf mf personalize" }, - { 0, "hf mf rdbl" }, - { 0, "hf mf rdsc" }, - { 0, "hf mf restore" }, - { 0, "hf mf setmod" }, - { 1, "hf mf value" }, - { 1, "hf mf view" }, - { 0, "hf mf wipe" }, - { 0, "hf mf wrbl" }, - { 0, "hf mf sim" }, - { 0, "hf mf ecfill" }, - { 0, "hf mf eclr" }, - { 0, "hf mf egetblk" }, - { 0, "hf mf egetsc" }, - { 0, "hf mf ekeyprn" }, - { 0, "hf mf eload" }, - { 0, "hf mf esave" }, - { 0, "hf mf esetblk" }, - { 0, "hf mf eview" }, - { 0, "hf mf cgetblk" }, - { 0, "hf mf cgetsc" }, - { 0, "hf mf cload" }, - { 0, "hf mf csave" }, - { 0, "hf mf csetblk" }, - { 0, "hf mf csetuid" }, - { 0, "hf mf cview" }, - { 0, "hf mf cwipe" }, - { 0, "hf mf gen3uid" }, - { 0, "hf mf gen3blk" }, - { 0, "hf mf gen3freeze" }, - { 0, "hf mf ggetblk" }, - { 0, "hf mf gload" }, - { 0, "hf mf gsave" }, - { 0, "hf mf gsetblk" }, - { 0, "hf mf gview" }, - { 0, "hf mf gdmcfg" }, - { 0, "hf mf gdmsetcfg" }, - { 0, "hf mf gdmsetblk" }, - { 0, "hf mf ndefformat" }, - { 0, "hf mf ndefread" }, - { 0, "hf mf ndefwrite" }, - { 1, "hf mfp help" }, - { 1, "hf mfp list" }, - { 0, "hf mfp auth" }, - { 0, "hf mfp chk" }, - { 0, "hf mfp dump" }, - { 0, "hf mfp info" }, - { 0, "hf mfp mad" }, - { 0, "hf mfp rdbl" }, - { 0, "hf mfp rdsc" }, - { 0, "hf mfp wrbl" }, - { 0, "hf mfp commitp" }, - { 0, "hf mfp initp" }, - { 0, "hf mfp wrp" }, - { 0, "hf mfp ndefformat" }, - { 0, "hf mfp ndefread" }, - { 0, "hf mfp ndefwrite" }, - { 1, "hf mfu help" }, - { 1, "hf mfu keygen" }, - { 1, "hf mfu pwdgen" }, - { 0, "hf mfu otptear" }, - { 0, "hf mfu cauth" }, - { 0, "hf mfu dump" }, - { 0, "hf mfu info" }, - { 0, "hf mfu ndefread" }, - { 0, "hf mfu rdbl" }, - { 0, "hf mfu restore" }, - { 1, "hf mfu view" }, - { 0, "hf mfu wrbl" }, - { 0, "hf mfu tamper" }, - { 0, "hf mfu eload" }, - { 0, "hf mfu esave" }, - { 0, "hf mfu eview" }, - { 0, "hf mfu sim" }, - { 0, "hf mfu setpwd" }, - { 0, "hf mfu setuid" }, - { 1, "hf mfdes help" }, - { 0, "hf mfdes info" }, - { 0, "hf mfdes getuid" }, - { 0, "hf mfdes default" }, - { 0, "hf mfdes auth" }, - { 0, "hf mfdes chk" }, - { 0, "hf mfdes detect" }, - { 0, "hf mfdes freemem" }, - { 0, "hf mfdes setconfig" }, - { 0, "hf mfdes formatpicc" }, - { 1, "hf mfdes list" }, - { 0, "hf mfdes mad" }, - { 0, "hf mfdes lsapp" }, - { 0, "hf mfdes getaids" }, - { 0, "hf mfdes getappnames" }, - { 0, "hf mfdes bruteaid" }, - { 0, "hf mfdes createapp" }, - { 0, "hf mfdes deleteapp" }, - { 0, "hf mfdes selectapp" }, - { 0, "hf mfdes changekey" }, - { 0, "hf mfdes chkeysettings" }, - { 0, "hf mfdes getkeysettings" }, - { 0, "hf mfdes getkeyversions" }, - { 0, "hf mfdes getfileids" }, - { 0, "hf mfdes getfileisoids" }, - { 0, "hf mfdes lsfiles" }, - { 0, "hf mfdes dump" }, - { 0, "hf mfdes createfile" }, - { 0, "hf mfdes createvaluefile" }, - { 0, "hf mfdes createrecordfile" }, - { 0, "hf mfdes createmacfile" }, - { 0, "hf mfdes deletefile" }, - { 0, "hf mfdes getfilesettings" }, - { 0, "hf mfdes chfilesettings" }, - { 0, "hf mfdes read" }, - { 0, "hf mfdes write" }, - { 0, "hf mfdes value" }, - { 0, "hf mfdes clearrecfile" }, - { 1, "hf mfdes test" }, - { 1, "hf ntag424 help" }, - { 0, "hf ntag424 info" }, - { 0, "hf ntag424 sdm" }, - { 1, "hf ntag424 view" }, - { 1, "hf seos help" }, - { 0, "hf seos info" }, - { 1, "hf seos list" }, - { 1, "hf st25ta help" }, - { 0, "hf st25ta info" }, - { 1, "hf st25ta list" }, - { 1, "hf st25ta ndefread" }, - { 0, "hf st25ta protect" }, - { 0, "hf st25ta pwd" }, - { 0, "hf st25ta sim" }, - { 1, "hf tesla help" }, - { 0, "hf tesla info" }, - { 1, "hf tesla list" }, - { 1, "hf texkom help" }, - { 0, "hf texkom reader" }, - { 0, "hf texkom sim" }, - { 1, "hf thinfilm help" }, - { 0, "hf thinfilm info" }, - { 1, "hf thinfilm list" }, - { 0, "hf thinfilm sim" }, - { 1, "hf topaz help" }, - { 1, "hf topaz list" }, - { 0, "hf topaz dump" }, - { 0, "hf topaz info" }, - { 0, "hf topaz raw" }, - { 0, "hf topaz rdbl" }, - { 0, "hf topaz reader" }, - { 0, "hf topaz sim" }, - { 0, "hf topaz sniff" }, - { 1, "hf topaz view" }, - { 0, "hf topaz wrbl" }, - { 1, "hf vas help" }, - { 0, "hf vas reader" }, - { 1, "hf vas decrypt" }, - { 1, "hf waveshare help" }, - { 0, "hf waveshare loadbmp" }, - { 1, "hf xerox help" }, - { 0, "hf xerox info" }, - { 0, "hf xerox reader" }, - { 0, "hf xerox dump" }, - { 1, "hw help" }, - { 0, "hw break" }, - { 1, "hw connect" }, - { 0, "hw dbg" }, - { 0, "hw detectreader" }, - { 0, "hw fpgaoff" }, - { 0, "hw lcd" }, - { 0, "hw lcdreset" }, - { 0, "hw ping" }, - { 0, "hw readmem" }, - { 0, "hw reset" }, - { 0, "hw setlfdivisor" }, - { 0, "hw setmux" }, - { 0, "hw standalone" }, - { 0, "hw status" }, - { 0, "hw tearoff" }, - { 0, "hw tia" }, - { 1, "hw timeout" }, - { 0, "hw tune" }, - { 1, "hw version" }, - { 1, "lf help" }, - { 0, "lf config" }, - { 0, "lf cmdread" }, - { 0, "lf read" }, - { 1, "lf search" }, - { 0, "lf sim" }, - { 0, "lf simask" }, - { 0, "lf simfsk" }, - { 0, "lf simpsk" }, - { 0, "lf simbidir" }, - { 0, "lf sniff" }, - { 0, "lf tune" }, - { 1, "lf awid help" }, - { 1, "lf awid demod" }, - { 0, "lf awid reader" }, - { 0, "lf awid clone" }, - { 0, "lf awid sim" }, - { 0, "lf awid brute" }, - { 0, "lf awid watch" }, - { 1, "lf cotag help" }, - { 1, "lf cotag demod" }, - { 0, "lf cotag reader" }, - { 1, "lf destron help" }, - { 1, "lf destron demod" }, - { 0, "lf destron reader" }, - { 0, "lf destron clone" }, - { 0, "lf destron sim" }, - { 1, "lf em help" }, - { 1, "lf em 410x help" }, - { 1, "lf em 410x demod" }, - { 0, "lf em 410x reader" }, - { 0, "lf em 410x sim" }, - { 0, "lf em 410x brute" }, - { 0, "lf em 410x watch" }, - { 0, "lf em 410x spoof" }, - { 0, "lf em 410x clone" }, - { 1, "lf em 4x05 help" }, - { 0, "lf em 4x05 brute" }, - { 0, "lf em 4x05 chk" }, - { 1, "lf em 4x05 demod" }, - { 0, "lf em 4x05 dump" }, - { 0, "lf em 4x05 info" }, - { 0, "lf em 4x05 read" }, - { 1, "lf em 4x05 sniff" }, - { 0, "lf em 4x05 unlock" }, - { 0, "lf em 4x05 wipe" }, - { 0, "lf em 4x05 write" }, - { 1, "lf em 4x50 help" }, - { 0, "lf em 4x50 brute" }, - { 0, "lf em 4x50 chk" }, - { 0, "lf em 4x50 dump" }, - { 0, "lf em 4x50 info" }, - { 0, "lf em 4x50 login" }, - { 0, "lf em 4x50 rdbl" }, - { 0, "lf em 4x50 reader" }, - { 0, "lf em 4x50 restore" }, - { 0, "lf em 4x50 wrbl" }, - { 0, "lf em 4x50 wrpwd" }, - { 0, "lf em 4x50 wipe" }, - { 0, "lf em 4x50 eload" }, - { 0, "lf em 4x50 esave" }, - { 0, "lf em 4x50 eview" }, - { 0, "lf em 4x50 sim" }, - { 1, "lf em 4x70 help" }, - { 0, "lf em 4x70 brute" }, - { 0, "lf em 4x70 info" }, - { 0, "lf em 4x70 write" }, - { 0, "lf em 4x70 unlock" }, - { 0, "lf em 4x70 auth" }, - { 0, "lf em 4x70 writepin" }, - { 0, "lf em 4x70 writekey" }, - { 1, "lf fdxb help" }, - { 1, "lf fdxb demod" }, - { 0, "lf fdxb reader" }, - { 0, "lf fdxb clone" }, - { 0, "lf fdxb sim" }, - { 1, "lf gallagher help" }, - { 1, "lf gallagher demod" }, - { 0, "lf gallagher reader" }, - { 0, "lf gallagher clone" }, - { 0, "lf gallagher sim" }, - { 1, "lf gproxii help" }, - { 1, "lf gproxii demod" }, - { 0, "lf gproxii reader" }, - { 0, "lf gproxii clone" }, - { 0, "lf gproxii sim" }, - { 1, "lf hid help" }, - { 1, "lf hid demod" }, - { 0, "lf hid reader" }, - { 0, "lf hid clone" }, - { 0, "lf hid sim" }, - { 0, "lf hid brute" }, - { 0, "lf hid watch" }, - { 1, "lf hitag help" }, - { 1, "lf hitag list" }, - { 0, "lf hitag info" }, - { 0, "lf hitag dump" }, - { 0, "lf hitag read" }, - { 0, "lf hitag wrbl" }, - { 0, "lf hitag sniff" }, - { 0, "lf hitag cc" }, - { 0, "lf hitag ta" }, - { 0, "lf hitag eload" }, - { 0, "lf hitag sim" }, - { 1, "lf idteck help" }, - { 1, "lf idteck demod" }, - { 0, "lf idteck reader" }, - { 0, "lf idteck clone" }, - { 0, "lf idteck sim" }, - { 1, "lf indala help" }, - { 0, "lf indala brute" }, - { 1, "lf indala demod" }, - { 1, "lf indala altdemod" }, - { 0, "lf indala reader" }, - { 0, "lf indala clone" }, - { 0, "lf indala sim" }, - { 1, "lf io help" }, - { 1, "lf io demod" }, - { 0, "lf io reader" }, - { 0, "lf io clone" }, - { 0, "lf io sim" }, - { 0, "lf io watch" }, - { 1, "lf jablotron help" }, - { 1, "lf jablotron demod" }, - { 0, "lf jablotron reader" }, - { 0, "lf jablotron clone" }, - { 0, "lf jablotron sim" }, - { 1, "lf keri help" }, - { 1, "lf keri demod" }, - { 0, "lf keri reader" }, - { 0, "lf keri clone" }, - { 0, "lf keri sim" }, - { 1, "lf motorola help" }, - { 1, "lf motorola demod" }, - { 0, "lf motorola reader" }, - { 0, "lf motorola clone" }, - { 0, "lf motorola sim" }, - { 1, "lf nedap help" }, - { 1, "lf nedap demod" }, - { 0, "lf nedap reader" }, - { 0, "lf nedap clone" }, - { 0, "lf nedap sim" }, - { 1, "lf nexwatch help" }, - { 1, "lf nexwatch demod" }, - { 0, "lf nexwatch reader" }, - { 0, "lf nexwatch clone" }, - { 0, "lf nexwatch sim" }, - { 1, "lf noralsy help" }, - { 1, "lf noralsy demod" }, - { 0, "lf noralsy reader" }, - { 0, "lf noralsy clone" }, - { 0, "lf noralsy sim" }, - { 1, "lf pac help" }, - { 1, "lf pac demod" }, - { 0, "lf pac reader" }, - { 0, "lf pac clone" }, - { 0, "lf pac sim" }, - { 1, "lf paradox help" }, - { 1, "lf paradox demod" }, - { 0, "lf paradox reader" }, - { 0, "lf paradox clone" }, - { 0, "lf paradox sim" }, - { 1, "lf pcf7931 help" }, - { 0, "lf pcf7931 reader" }, - { 0, "lf pcf7931 write" }, - { 1, "lf pcf7931 config" }, - { 1, "lf presco help" }, - { 1, "lf presco demod" }, - { 0, "lf presco reader" }, - { 0, "lf presco clone" }, - { 0, "lf presco sim" }, - { 1, "lf pyramid help" }, - { 1, "lf pyramid demod" }, - { 0, "lf pyramid reader" }, - { 0, "lf pyramid clone" }, - { 0, "lf pyramid sim" }, - { 1, "lf securakey help" }, - { 1, "lf securakey demod" }, - { 0, "lf securakey reader" }, - { 0, "lf securakey clone" }, - { 0, "lf securakey sim" }, - { 1, "lf ti help" }, - { 1, "lf ti demod" }, - { 0, "lf ti reader" }, - { 0, "lf ti write" }, - { 1, "lf t55xx help" }, - { 0, "lf t55xx clonehelp" }, - { 1, "lf t55xx config" }, - { 0, "lf t55xx dangerraw" }, - { 1, "lf t55xx detect" }, - { 0, "lf t55xx deviceconfig" }, - { 0, "lf t55xx dump" }, - { 1, "lf t55xx info" }, - { 0, "lf t55xx p1detect" }, - { 0, "lf t55xx read" }, - { 0, "lf t55xx resetread" }, - { 0, "lf t55xx restore" }, - { 1, "lf t55xx trace" }, - { 0, "lf t55xx wakeup" }, - { 0, "lf t55xx write" }, - { 0, "lf t55xx bruteforce" }, - { 0, "lf t55xx chk" }, - { 0, "lf t55xx protect" }, - { 0, "lf t55xx recoverpw" }, - { 1, "lf t55xx sniff" }, - { 0, "lf t55xx special" }, - { 0, "lf t55xx wipe" }, - { 1, "lf viking help" }, - { 1, "lf viking demod" }, - { 0, "lf viking reader" }, - { 0, "lf viking clone" }, - { 0, "lf viking sim" }, - { 1, "lf visa2000 help" }, - { 1, "lf visa2000 demod" }, - { 0, "lf visa2000 reader" }, - { 0, "lf visa2000 clone" }, - { 0, "lf visa2000 sim" }, - { 1, "mem help" }, - { 0, "mem baudrate" }, - { 0, "mem dump" }, - { 0, "mem info" }, - { 0, "mem load" }, - { 0, "mem wipe" }, - { 1, "mem spiffs help" }, - { 0, "mem spiffs copy" }, - { 0, "mem spiffs check" }, - { 0, "mem spiffs dump" }, - { 0, "mem spiffs info" }, - { 0, "mem spiffs mount" }, - { 0, "mem spiffs remove" }, - { 0, "mem spiffs rename" }, - { 0, "mem spiffs test" }, - { 0, "mem spiffs tree" }, - { 0, "mem spiffs unmount" }, - { 0, "mem spiffs upload" }, - { 0, "mem spiffs view" }, - { 0, "mem spiffs wipe" }, - { 1, "nfc help" }, - { 1, "nfc decode" }, - { 0, "nfc type1 read" }, - { 1, "nfc type1 help" }, - { 0, "nfc type2 read" }, - { 1, "nfc type2 help" }, - { 0, "nfc type4a format" }, - { 0, "nfc type4a read" }, - { 0, "nfc type4a write" }, - { 0, "nfc type4a st25taread" }, - { 1, "nfc type4a help" }, - { 0, "nfc type4b read" }, - { 1, "nfc type4b help" }, - { 0, "nfc mf cformat" }, - { 0, "nfc mf cread" }, - { 0, "nfc mf cwrite" }, - { 0, "nfc mf pread" }, - { 1, "nfc mf help" }, - { 0, "nfc barcode read" }, - { 0, "nfc barcode sim" }, - { 1, "nfc barcode help" }, - { 1, "piv help" }, - { 0, "piv select" }, - { 0, "piv getdata" }, - { 0, "piv authsign" }, - { 0, "piv scan" }, - { 1, "piv list" }, - { 1, "smart help" }, - { 1, "smart list" }, - { 0, "smart info" }, - { 0, "smart reader" }, - { 0, "smart raw" }, - { 1, "smart upgrade" }, - { 0, "smart setclock" }, - { 0, "smart brute" }, - { 1, "script help" }, - { 1, "script list" }, - { 1, "script run" }, - { 1, "trace help" }, - { 1, "trace extract" }, - { 1, "trace list" }, - { 1, "trace load" }, - { 1, "trace save" }, - { 1, "usart help" }, - { 0, "usart btpin" }, - { 0, "usart btfactory" }, - { 0, "usart tx" }, - { 0, "usart rx" }, - { 0, "usart txrx" }, - { 0, "usart txhex" }, - { 0, "usart rxhex" }, - { 0, "usart config" }, - { 1, "wiegand help" }, - { 1, "wiegand list" }, - { 1, "wiegand encode" }, - { 1, "wiegand decode" }, + { 1, "help" }, + { 0, "auto" }, + { 1, "clear" }, + { 1, "hints" }, + { 1, "msleep" }, + { 1, "rem" }, + { 1, "quit" }, + { 1, "exit" }, + { 1, "prefs help" }, + { 1, "prefs show" }, + { 1, "prefs get barmode" }, + { 1, "prefs get clientdebug" }, + { 1, "prefs get clientdelay" }, + { 1, "prefs get color" }, + { 1, "prefs get savepaths" }, + { 1, "prefs get emoji" }, + { 1, "prefs get hints" }, + { 1, "prefs get output" }, + { 1, "prefs get plotsliders" }, + { 1, "prefs set help" }, + { 1, "prefs set barmode" }, + { 1, "prefs set clientdebug" }, + { 1, "prefs set clientdelay" }, + { 1, "prefs set color" }, + { 1, "prefs set emoji" }, + { 1, "prefs set hints" }, + { 1, "prefs set savepaths" }, + { 1, "prefs set output" }, + { 1, "prefs set plotsliders" }, + { 1, "analyse help" }, + { 1, "analyse lcr" }, + { 1, "analyse crc" }, + { 1, "analyse chksum" }, + { 1, "analyse dates" }, + { 1, "analyse lfsr" }, + { 1, "analyse a" }, + { 1, "analyse nuid" }, + { 1, "analyse demodbuff" }, + { 1, "analyse freq" }, + { 1, "analyse foo" }, + { 1, "analyse units" }, + { 1, "data help" }, + { 1, "data biphaserawdecode" }, + { 1, "data detectclock" }, + { 1, "data fsktonrz" }, + { 1, "data manrawdecode" }, + { 1, "data modulation" }, + { 1, "data rawdemod" }, + { 1, "data askedgedetect" }, + { 1, "data autocorr" }, + { 1, "data dirthreshold" }, + { 1, "data decimate" }, + { 1, "data envelope" }, + { 1, "data undecimate" }, + { 1, "data hide" }, + { 1, "data hpf" }, + { 1, "data iir" }, + { 1, "data grid" }, + { 1, "data ltrim" }, + { 1, "data mtrim" }, + { 1, "data norm" }, + { 1, "data plot" }, + { 1, "data cthreshold" }, + { 1, "data rtrim" }, + { 1, "data setgraphmarkers" }, + { 1, "data shiftgraphzero" }, + { 1, "data timescale" }, + { 1, "data zerocrossings" }, + { 1, "data convertbitstream" }, + { 1, "data getbitstream" }, + { 1, "data asn1" }, + { 1, "data bin2hex" }, + { 0, "data bitsamples" }, + { 1, "data clear" }, + { 1, "data diff" }, + { 0, "data hexsamples" }, + { 1, "data hex2bin" }, + { 1, "data load" }, + { 1, "data num" }, + { 1, "data print" }, + { 0, "data samples" }, + { 1, "data save" }, + { 1, "data setdebugmode" }, + { 0, "data tune" }, + { 1, "emv help" }, + { 1, "emv list" }, + { 1, "emv test" }, + { 0, "emv challenge" }, + { 0, "emv exec" }, + { 0, "emv genac" }, + { 0, "emv gpo" }, + { 0, "emv intauth" }, + { 0, "emv pse" }, + { 0, "emv reader" }, + { 0, "emv readrec" }, + { 0, "emv roca" }, + { 0, "emv scan" }, + { 0, "emv search" }, + { 0, "emv select" }, + { 1, "hf help" }, + { 1, "hf list" }, + { 0, "hf plot" }, + { 0, "hf tune" }, + { 1, "hf search" }, + { 0, "hf sniff" }, + { 1, "hf 14a help" }, + { 1, "hf 14a list" }, + { 0, "hf 14a antifuzz" }, + { 0, "hf 14a config" }, + { 0, "hf 14a cuids" }, + { 0, "hf 14a info" }, + { 0, "hf 14a sim" }, + { 0, "hf 14a sniff" }, + { 0, "hf 14a raw" }, + { 0, "hf 14a reader" }, + { 0, "hf 14a apdu" }, + { 0, "hf 14a apdufind" }, + { 0, "hf 14a chaining" }, + { 0, "hf 14a ndefformat" }, + { 0, "hf 14a ndefread" }, + { 0, "hf 14a ndefwrite" }, + { 1, "hf 14b help" }, + { 0, "hf 14b apdu" }, + { 0, "hf 14b dump" }, + { 0, "hf 14b info" }, + { 1, "hf 14b list" }, + { 0, "hf 14b ndefread" }, + { 0, "hf 14b raw" }, + { 0, "hf 14b reader" }, + { 0, "hf 14b sim" }, + { 0, "hf 14b sniff" }, + { 0, "hf 14b rdbl" }, + { 0, "hf 14b sriwrite" }, + { 1, "hf 14b view" }, + { 1, "hf 15 help" }, + { 1, "hf 15 list" }, + { 1, "hf 15 demod" }, + { 0, "hf 15 dump" }, + { 0, "hf 15 info" }, + { 0, "hf 15 sniff" }, + { 0, "hf 15 raw" }, + { 0, "hf 15 rdbl" }, + { 0, "hf 15 rdmulti" }, + { 0, "hf 15 reader" }, + { 0, "hf 15 restore" }, + { 0, "hf 15 samples" }, + { 0, "hf 15 eload" }, + { 0, "hf 15 esave" }, + { 0, "hf 15 eview" }, + { 0, "hf 15 sim" }, + { 0, "hf 15 slixwritepwd" }, + { 0, "hf 15 slixeasdisable" }, + { 0, "hf 15 slixeasenable" }, + { 0, "hf 15 slixprivacydisable" }, + { 0, "hf 15 slixprivacyenable" }, + { 0, "hf 15 passprotectafi" }, + { 0, "hf 15 passprotecteas" }, + { 0, "hf 15 wrbl" }, + { 0, "hf 15 findafi" }, + { 0, "hf 15 writeafi" }, + { 0, "hf 15 writedsfid" }, + { 0, "hf 15 csetuid" }, + { 1, "hf cipurse help" }, + { 0, "hf cipurse info" }, + { 0, "hf cipurse select" }, + { 0, "hf cipurse auth" }, + { 0, "hf cipurse read" }, + { 0, "hf cipurse write" }, + { 0, "hf cipurse aread" }, + { 0, "hf cipurse awrite" }, + { 0, "hf cipurse formatall" }, + { 0, "hf cipurse create" }, + { 0, "hf cipurse delete" }, + { 0, "hf cipurse updkey" }, + { 0, "hf cipurse updakey" }, + { 0, "hf cipurse default" }, + { 1, "hf cipurse test" }, + { 1, "hf epa help" }, + { 0, "hf epa cnonces" }, + { 0, "hf epa replay" }, + { 0, "hf epa sim" }, + { 1, "hf emrtd help" }, + { 0, "hf emrtd dump" }, + { 1, "hf emrtd info" }, + { 1, "hf emrtd list" }, + { 1, "hf felica help" }, + { 1, "hf felica list" }, + { 0, "hf felica reader" }, + { 0, "hf felica info" }, + { 0, "hf felica sniff" }, + { 0, "hf felica raw" }, + { 0, "hf felica rdbl" }, + { 0, "hf felica wrbl" }, + { 0, "hf felica rqservice" }, + { 0, "hf felica rqresponse" }, + { 0, "hf felica scsvcode" }, + { 0, "hf felica rqsyscode" }, + { 0, "hf felica auth1" }, + { 0, "hf felica auth2" }, + { 0, "hf felica rqspecver" }, + { 0, "hf felica resetmode" }, + { 0, "hf felica litesim" }, + { 0, "hf felica litedump" }, + { 1, "hf fido help" }, + { 1, "hf fido list" }, + { 0, "hf fido info" }, + { 0, "hf fido reg" }, + { 0, "hf fido auth" }, + { 0, "hf fido make" }, + { 0, "hf fido assert" }, + { 1, "hf fudan help" }, + { 0, "hf fudan reader" }, + { 0, "hf fudan dump" }, + { 0, "hf fudan rdbl" }, + { 1, "hf fudan view" }, + { 0, "hf fudan wrbl" }, + { 1, "hf gallagher help" }, + { 0, "hf gallagher reader" }, + { 0, "hf gallagher clone" }, + { 0, "hf gallagher delete" }, + { 1, "hf gallagher diversifykey" }, + { 1, "hf gallagher decode" }, + { 1, "hf ksx6924 help" }, + { 0, "hf ksx6924 select" }, + { 0, "hf ksx6924 info" }, + { 0, "hf ksx6924 balance" }, + { 0, "hf ksx6924 init" }, + { 0, "hf ksx6924 prec" }, + { 1, "hf jooki help" }, + { 0, "hf jooki clone" }, + { 1, "hf jooki decode" }, + { 1, "hf jooki encode" }, + { 0, "hf jooki sim" }, + { 1, "hf iclass help" }, + { 0, "hf iclass dump" }, + { 1, "hf iclass info" }, + { 1, "hf iclass list" }, + { 0, "hf iclass rdbl" }, + { 0, "hf iclass reader" }, + { 0, "hf iclass restore" }, + { 0, "hf iclass sniff" }, + { 0, "hf iclass wrbl" }, + { 0, "hf iclass chk" }, + { 1, "hf iclass loclass" }, + { 1, "hf iclass lookup" }, + { 0, "hf iclass sim" }, + { 0, "hf iclass eload" }, + { 0, "hf iclass esave" }, + { 0, "hf iclass eview" }, + { 1, "hf iclass configcard" }, + { 1, "hf iclass calcnewkey" }, + { 1, "hf iclass encode" }, + { 1, "hf iclass encrypt" }, + { 1, "hf iclass decrypt" }, + { 1, "hf iclass managekeys" }, + { 1, "hf iclass permutekey" }, + { 1, "hf iclass view" }, + { 0, "hf iclass sam" }, + { 1, "hf legic help" }, + { 0, "hf legic dump" }, + { 0, "hf legic info" }, + { 1, "hf legic list" }, + { 0, "hf legic rdbl" }, + { 0, "hf legic reader" }, + { 0, "hf legic restore" }, + { 0, "hf legic wipe" }, + { 0, "hf legic wrbl" }, + { 0, "hf legic sim" }, + { 0, "hf legic eload" }, + { 0, "hf legic esave" }, + { 0, "hf legic eview" }, + { 0, "hf legic einfo" }, + { 1, "hf legic crc" }, + { 1, "hf legic view" }, + { 1, "hf lto help" }, + { 0, "hf lto dump" }, + { 0, "hf lto info" }, + { 1, "hf lto list" }, + { 0, "hf lto rdbl" }, + { 0, "hf lto reader" }, + { 0, "hf lto restore" }, + { 0, "hf lto wrbl" }, + { 1, "hf mf help" }, + { 1, "hf mf list" }, + { 0, "hf mf darkside" }, + { 0, "hf mf nested" }, + { 1, "hf mf hardnested" }, + { 0, "hf mf staticnested" }, + { 0, "hf mf autopwn" }, + { 0, "hf mf nack" }, + { 0, "hf mf chk" }, + { 0, "hf mf fchk" }, + { 1, "hf mf decrypt" }, + { 0, "hf mf supercard" }, + { 0, "hf mf auth4" }, + { 1, "hf mf acl" }, + { 0, "hf mf dump" }, + { 1, "hf mf mad" }, + { 0, "hf mf personalize" }, + { 0, "hf mf rdbl" }, + { 0, "hf mf rdsc" }, + { 0, "hf mf restore" }, + { 0, "hf mf setmod" }, + { 1, "hf mf value" }, + { 1, "hf mf view" }, + { 0, "hf mf wipe" }, + { 0, "hf mf wrbl" }, + { 0, "hf mf sim" }, + { 0, "hf mf ecfill" }, + { 0, "hf mf eclr" }, + { 0, "hf mf egetblk" }, + { 0, "hf mf egetsc" }, + { 0, "hf mf ekeyprn" }, + { 0, "hf mf eload" }, + { 0, "hf mf esave" }, + { 0, "hf mf esetblk" }, + { 0, "hf mf eview" }, + { 0, "hf mf cgetblk" }, + { 0, "hf mf cgetsc" }, + { 0, "hf mf cload" }, + { 0, "hf mf csave" }, + { 0, "hf mf csetblk" }, + { 0, "hf mf csetuid" }, + { 0, "hf mf cview" }, + { 0, "hf mf cwipe" }, + { 0, "hf mf gen3uid" }, + { 0, "hf mf gen3blk" }, + { 0, "hf mf gen3freeze" }, + { 0, "hf mf ggetblk" }, + { 0, "hf mf gload" }, + { 0, "hf mf gsave" }, + { 0, "hf mf gsetblk" }, + { 0, "hf mf gview" }, + { 0, "hf mf gdmcfg" }, + { 0, "hf mf gdmsetcfg" }, + { 0, "hf mf gdmsetblk" }, + { 0, "hf mf ndefformat" }, + { 0, "hf mf ndefread" }, + { 0, "hf mf ndefwrite" }, + { 1, "hf mfp help" }, + { 1, "hf mfp list" }, + { 0, "hf mfp auth" }, + { 0, "hf mfp chk" }, + { 0, "hf mfp dump" }, + { 0, "hf mfp info" }, + { 0, "hf mfp mad" }, + { 0, "hf mfp rdbl" }, + { 0, "hf mfp rdsc" }, + { 0, "hf mfp wrbl" }, + { 0, "hf mfp commitp" }, + { 0, "hf mfp initp" }, + { 0, "hf mfp wrp" }, + { 0, "hf mfp ndefformat" }, + { 0, "hf mfp ndefread" }, + { 0, "hf mfp ndefwrite" }, + { 1, "hf mfu help" }, + { 1, "hf mfu keygen" }, + { 1, "hf mfu pwdgen" }, + { 0, "hf mfu otptear" }, + { 0, "hf mfu cauth" }, + { 0, "hf mfu dump" }, + { 0, "hf mfu info" }, + { 0, "hf mfu ndefread" }, + { 0, "hf mfu rdbl" }, + { 0, "hf mfu restore" }, + { 1, "hf mfu view" }, + { 0, "hf mfu wrbl" }, + { 0, "hf mfu tamper" }, + { 0, "hf mfu eload" }, + { 0, "hf mfu esave" }, + { 0, "hf mfu eview" }, + { 0, "hf mfu sim" }, + { 0, "hf mfu setpwd" }, + { 0, "hf mfu setuid" }, + { 1, "hf mfdes help" }, + { 0, "hf mfdes info" }, + { 0, "hf mfdes getuid" }, + { 0, "hf mfdes default" }, + { 0, "hf mfdes auth" }, + { 0, "hf mfdes chk" }, + { 0, "hf mfdes detect" }, + { 0, "hf mfdes freemem" }, + { 0, "hf mfdes setconfig" }, + { 0, "hf mfdes formatpicc" }, + { 1, "hf mfdes list" }, + { 0, "hf mfdes mad" }, + { 0, "hf mfdes lsapp" }, + { 0, "hf mfdes getaids" }, + { 0, "hf mfdes getappnames" }, + { 0, "hf mfdes bruteaid" }, + { 0, "hf mfdes createapp" }, + { 0, "hf mfdes deleteapp" }, + { 0, "hf mfdes selectapp" }, + { 0, "hf mfdes changekey" }, + { 0, "hf mfdes chkeysettings" }, + { 0, "hf mfdes getkeysettings" }, + { 0, "hf mfdes getkeyversions" }, + { 0, "hf mfdes getfileids" }, + { 0, "hf mfdes getfileisoids" }, + { 0, "hf mfdes lsfiles" }, + { 0, "hf mfdes dump" }, + { 0, "hf mfdes createfile" }, + { 0, "hf mfdes createvaluefile" }, + { 0, "hf mfdes createrecordfile" }, + { 0, "hf mfdes createmacfile" }, + { 0, "hf mfdes deletefile" }, + { 0, "hf mfdes getfilesettings" }, + { 0, "hf mfdes chfilesettings" }, + { 0, "hf mfdes read" }, + { 0, "hf mfdes write" }, + { 0, "hf mfdes value" }, + { 0, "hf mfdes clearrecfile" }, + { 1, "hf mfdes test" }, + { 1, "hf ntag424 help" }, + { 0, "hf ntag424 info" }, + { 0, "hf ntag424 sdm" }, + { 1, "hf ntag424 view" }, + { 1, "hf seos help" }, + { 0, "hf seos info" }, + { 1, "hf seos list" }, + { 1, "hf st25ta help" }, + { 0, "hf st25ta info" }, + { 1, "hf st25ta list" }, + { 1, "hf st25ta ndefread" }, + { 0, "hf st25ta protect" }, + { 0, "hf st25ta pwd" }, + { 0, "hf st25ta sim" }, + { 1, "hf tesla help" }, + { 0, "hf tesla info" }, + { 1, "hf tesla list" }, + { 1, "hf texkom help" }, + { 0, "hf texkom reader" }, + { 0, "hf texkom sim" }, + { 1, "hf thinfilm help" }, + { 0, "hf thinfilm info" }, + { 1, "hf thinfilm list" }, + { 0, "hf thinfilm sim" }, + { 1, "hf topaz help" }, + { 1, "hf topaz list" }, + { 0, "hf topaz dump" }, + { 0, "hf topaz info" }, + { 0, "hf topaz raw" }, + { 0, "hf topaz rdbl" }, + { 0, "hf topaz reader" }, + { 0, "hf topaz sim" }, + { 0, "hf topaz sniff" }, + { 1, "hf topaz view" }, + { 0, "hf topaz wrbl" }, + { 1, "hf vas help" }, + { 0, "hf vas reader" }, + { 1, "hf vas decrypt" }, + { 1, "hf waveshare help" }, + { 0, "hf waveshare loadbmp" }, + { 1, "hf xerox help" }, + { 0, "hf xerox info" }, + { 0, "hf xerox reader" }, + { 0, "hf xerox dump" }, + { 1, "hw help" }, + { 0, "hw break" }, + { 1, "hw connect" }, + { 0, "hw dbg" }, + { 0, "hw detectreader" }, + { 0, "hw fpgaoff" }, + { 0, "hw lcd" }, + { 0, "hw lcdreset" }, + { 0, "hw ping" }, + { 0, "hw readmem" }, + { 0, "hw reset" }, + { 0, "hw setlfdivisor" }, + { 0, "hw setmux" }, + { 0, "hw standalone" }, + { 0, "hw status" }, + { 0, "hw tearoff" }, + { 0, "hw tia" }, + { 1, "hw timeout" }, + { 0, "hw tune" }, + { 1, "hw version" }, + { 1, "lf help" }, + { 0, "lf config" }, + { 0, "lf cmdread" }, + { 0, "lf read" }, + { 1, "lf search" }, + { 0, "lf sim" }, + { 0, "lf simask" }, + { 0, "lf simfsk" }, + { 0, "lf simpsk" }, + { 0, "lf simbidir" }, + { 0, "lf sniff" }, + { 0, "lf tune" }, + { 1, "lf awid help" }, + { 1, "lf awid demod" }, + { 0, "lf awid reader" }, + { 0, "lf awid clone" }, + { 0, "lf awid sim" }, + { 0, "lf awid brute" }, + { 0, "lf awid watch" }, + { 1, "lf cotag help" }, + { 1, "lf cotag demod" }, + { 0, "lf cotag reader" }, + { 1, "lf destron help" }, + { 1, "lf destron demod" }, + { 0, "lf destron reader" }, + { 0, "lf destron clone" }, + { 0, "lf destron sim" }, + { 1, "lf em help" }, + { 1, "lf em 410x help" }, + { 1, "lf em 410x demod" }, + { 0, "lf em 410x reader" }, + { 0, "lf em 410x sim" }, + { 0, "lf em 410x brute" }, + { 0, "lf em 410x watch" }, + { 0, "lf em 410x spoof" }, + { 0, "lf em 410x clone" }, + { 1, "lf em 4x05 help" }, + { 0, "lf em 4x05 brute" }, + { 0, "lf em 4x05 chk" }, + { 1, "lf em 4x05 demod" }, + { 0, "lf em 4x05 dump" }, + { 0, "lf em 4x05 info" }, + { 0, "lf em 4x05 read" }, + { 1, "lf em 4x05 sniff" }, + { 0, "lf em 4x05 unlock" }, + { 0, "lf em 4x05 wipe" }, + { 0, "lf em 4x05 write" }, + { 1, "lf em 4x50 help" }, + { 0, "lf em 4x50 brute" }, + { 0, "lf em 4x50 chk" }, + { 0, "lf em 4x50 dump" }, + { 0, "lf em 4x50 info" }, + { 0, "lf em 4x50 login" }, + { 0, "lf em 4x50 rdbl" }, + { 0, "lf em 4x50 reader" }, + { 0, "lf em 4x50 restore" }, + { 0, "lf em 4x50 wrbl" }, + { 0, "lf em 4x50 wrpwd" }, + { 0, "lf em 4x50 wipe" }, + { 0, "lf em 4x50 eload" }, + { 0, "lf em 4x50 esave" }, + { 0, "lf em 4x50 eview" }, + { 0, "lf em 4x50 sim" }, + { 1, "lf em 4x70 help" }, + { 0, "lf em 4x70 brute" }, + { 0, "lf em 4x70 info" }, + { 0, "lf em 4x70 write" }, + { 0, "lf em 4x70 unlock" }, + { 0, "lf em 4x70 auth" }, + { 0, "lf em 4x70 writepin" }, + { 0, "lf em 4x70 writekey" }, + { 1, "lf fdxb help" }, + { 1, "lf fdxb demod" }, + { 0, "lf fdxb reader" }, + { 0, "lf fdxb clone" }, + { 0, "lf fdxb sim" }, + { 1, "lf gallagher help" }, + { 1, "lf gallagher demod" }, + { 0, "lf gallagher reader" }, + { 0, "lf gallagher clone" }, + { 0, "lf gallagher sim" }, + { 1, "lf gproxii help" }, + { 1, "lf gproxii demod" }, + { 0, "lf gproxii reader" }, + { 0, "lf gproxii clone" }, + { 0, "lf gproxii sim" }, + { 1, "lf hid help" }, + { 1, "lf hid demod" }, + { 0, "lf hid reader" }, + { 0, "lf hid clone" }, + { 0, "lf hid sim" }, + { 0, "lf hid brute" }, + { 0, "lf hid watch" }, + { 1, "lf hitag help" }, + { 1, "lf hitag list" }, + { 0, "lf hitag info" }, + { 0, "lf hitag dump" }, + { 0, "lf hitag read" }, + { 0, "lf hitag wrbl" }, + { 0, "lf hitag sniff" }, + { 0, "lf hitag cc" }, + { 0, "lf hitag ta" }, + { 0, "lf hitag eload" }, + { 0, "lf hitag sim" }, + { 1, "lf idteck help" }, + { 1, "lf idteck demod" }, + { 0, "lf idteck reader" }, + { 0, "lf idteck clone" }, + { 0, "lf idteck sim" }, + { 1, "lf indala help" }, + { 0, "lf indala brute" }, + { 1, "lf indala demod" }, + { 1, "lf indala altdemod" }, + { 0, "lf indala reader" }, + { 0, "lf indala clone" }, + { 0, "lf indala sim" }, + { 1, "lf io help" }, + { 1, "lf io demod" }, + { 0, "lf io reader" }, + { 0, "lf io clone" }, + { 0, "lf io sim" }, + { 0, "lf io watch" }, + { 1, "lf jablotron help" }, + { 1, "lf jablotron demod" }, + { 0, "lf jablotron reader" }, + { 0, "lf jablotron clone" }, + { 0, "lf jablotron sim" }, + { 1, "lf keri help" }, + { 1, "lf keri demod" }, + { 0, "lf keri reader" }, + { 0, "lf keri clone" }, + { 0, "lf keri sim" }, + { 1, "lf motorola help" }, + { 1, "lf motorola demod" }, + { 0, "lf motorola reader" }, + { 0, "lf motorola clone" }, + { 0, "lf motorola sim" }, + { 1, "lf nedap help" }, + { 1, "lf nedap demod" }, + { 0, "lf nedap reader" }, + { 0, "lf nedap clone" }, + { 0, "lf nedap sim" }, + { 1, "lf nexwatch help" }, + { 1, "lf nexwatch demod" }, + { 0, "lf nexwatch reader" }, + { 0, "lf nexwatch clone" }, + { 0, "lf nexwatch sim" }, + { 1, "lf noralsy help" }, + { 1, "lf noralsy demod" }, + { 0, "lf noralsy reader" }, + { 0, "lf noralsy clone" }, + { 0, "lf noralsy sim" }, + { 1, "lf pac help" }, + { 1, "lf pac demod" }, + { 0, "lf pac reader" }, + { 0, "lf pac clone" }, + { 0, "lf pac sim" }, + { 1, "lf paradox help" }, + { 1, "lf paradox demod" }, + { 0, "lf paradox reader" }, + { 0, "lf paradox clone" }, + { 0, "lf paradox sim" }, + { 1, "lf pcf7931 help" }, + { 0, "lf pcf7931 reader" }, + { 0, "lf pcf7931 write" }, + { 1, "lf pcf7931 config" }, + { 1, "lf presco help" }, + { 1, "lf presco demod" }, + { 0, "lf presco reader" }, + { 0, "lf presco clone" }, + { 0, "lf presco sim" }, + { 1, "lf pyramid help" }, + { 1, "lf pyramid demod" }, + { 0, "lf pyramid reader" }, + { 0, "lf pyramid clone" }, + { 0, "lf pyramid sim" }, + { 1, "lf securakey help" }, + { 1, "lf securakey demod" }, + { 0, "lf securakey reader" }, + { 0, "lf securakey clone" }, + { 0, "lf securakey sim" }, + { 1, "lf ti help" }, + { 1, "lf ti demod" }, + { 0, "lf ti reader" }, + { 0, "lf ti write" }, + { 1, "lf t55xx help" }, + { 0, "lf t55xx clonehelp" }, + { 1, "lf t55xx config" }, + { 0, "lf t55xx dangerraw" }, + { 1, "lf t55xx detect" }, + { 0, "lf t55xx deviceconfig" }, + { 0, "lf t55xx dump" }, + { 1, "lf t55xx info" }, + { 0, "lf t55xx p1detect" }, + { 0, "lf t55xx read" }, + { 0, "lf t55xx resetread" }, + { 0, "lf t55xx restore" }, + { 1, "lf t55xx trace" }, + { 0, "lf t55xx wakeup" }, + { 0, "lf t55xx write" }, + { 0, "lf t55xx bruteforce" }, + { 0, "lf t55xx chk" }, + { 0, "lf t55xx protect" }, + { 0, "lf t55xx recoverpw" }, + { 1, "lf t55xx sniff" }, + { 0, "lf t55xx special" }, + { 0, "lf t55xx wipe" }, + { 1, "lf viking help" }, + { 1, "lf viking demod" }, + { 0, "lf viking reader" }, + { 0, "lf viking clone" }, + { 0, "lf viking sim" }, + { 1, "lf visa2000 help" }, + { 1, "lf visa2000 demod" }, + { 0, "lf visa2000 reader" }, + { 0, "lf visa2000 clone" }, + { 0, "lf visa2000 sim" }, + { 1, "mem help" }, + { 0, "mem baudrate" }, + { 0, "mem dump" }, + { 0, "mem info" }, + { 0, "mem load" }, + { 0, "mem wipe" }, + { 1, "mem spiffs help" }, + { 0, "mem spiffs copy" }, + { 0, "mem spiffs check" }, + { 0, "mem spiffs dump" }, + { 0, "mem spiffs info" }, + { 0, "mem spiffs mount" }, + { 0, "mem spiffs remove" }, + { 0, "mem spiffs rename" }, + { 0, "mem spiffs test" }, + { 0, "mem spiffs tree" }, + { 0, "mem spiffs unmount" }, + { 0, "mem spiffs upload" }, + { 0, "mem spiffs view" }, + { 0, "mem spiffs wipe" }, + { 1, "nfc help" }, + { 1, "nfc decode" }, + { 0, "nfc type1 read" }, + { 1, "nfc type1 help" }, + { 0, "nfc type2 read" }, + { 1, "nfc type2 help" }, + { 0, "nfc type4a format" }, + { 0, "nfc type4a read" }, + { 0, "nfc type4a write" }, + { 0, "nfc type4a st25taread" }, + { 1, "nfc type4a help" }, + { 0, "nfc type4b read" }, + { 1, "nfc type4b help" }, + { 0, "nfc mf cformat" }, + { 0, "nfc mf cread" }, + { 0, "nfc mf cwrite" }, + { 0, "nfc mf pread" }, + { 1, "nfc mf help" }, + { 0, "nfc barcode read" }, + { 0, "nfc barcode sim" }, + { 1, "nfc barcode help" }, + { 1, "piv help" }, + { 0, "piv select" }, + { 0, "piv getdata" }, + { 0, "piv authsign" }, + { 0, "piv scan" }, + { 1, "piv list" }, + { 1, "smart help" }, + { 1, "smart list" }, + { 0, "smart info" }, + { 0, "smart reader" }, + { 0, "smart raw" }, + { 1, "smart upgrade" }, + { 0, "smart setclock" }, + { 0, "smart brute" }, + { 1, "script help" }, + { 1, "script list" }, + { 1, "script run" }, + { 1, "trace help" }, + { 1, "trace extract" }, + { 1, "trace list" }, + { 1, "trace load" }, + { 1, "trace save" }, + { 1, "usart help" }, + { 0, "usart btpin" }, + { 0, "usart btfactory" }, + { 0, "usart tx" }, + { 0, "usart rx" }, + { 0, "usart txrx" }, + { 0, "usart txhex" }, + { 0, "usart rxhex" }, + { 0, "usart config" }, + { 1, "wiegand help" }, + { 1, "wiegand list" }, + { 1, "wiegand encode" }, + { 1, "wiegand decode" }, {0, NULL} }; @@ -808,4 +808,4 @@ const static vocabulory_t vocabulory[] = { } #endif -#endif \ No newline at end of file +#endif diff --git a/client/src/proxendian.h b/client/src/proxendian.h index 05b699747..d258d2ce8 100644 --- a/client/src/proxendian.h +++ b/client/src/proxendian.h @@ -54,14 +54,14 @@ static inline uint16_t le16(uint16_t v) { return (uint16_t)( - (v >> 8) | (v << 8) - ); + (v >> 8) | (v << 8) + ); } static inline uint32_t le32(uint32_t v) { return (uint32_t)( - (le16(v) << 16) | (le16(v >> 16)) - ); + (le16(v) << 16) | (le16(v >> 16)) + ); } #endif // HOST_LITTLE_ENDIAN diff --git a/common/commonutil.c b/common/commonutil.c index 6790d835a..2265c240c 100644 --- a/common/commonutil.c +++ b/common/commonutil.c @@ -162,38 +162,38 @@ uint64_t bytes_to_num(uint8_t *src, size_t len) { inline uint16_t MemLeToUint2byte(const uint8_t *data) { return (uint16_t)( - (data[1] << 8) + data[0] - ); + (data[1] << 8) + data[0] + ); } inline uint32_t MemLeToUint3byte(const uint8_t *data) { return (uint32_t)( - (data[2] << 16) + (data[1] << 8) + data[0] - ); + (data[2] << 16) + (data[1] << 8) + data[0] + ); } inline uint32_t MemLeToUint4byte(const uint8_t *data) { return (uint32_t)( - (data[3] << 24) + (data[2] << 16) + (data[1] << 8) + data[0] - ); + (data[3] << 24) + (data[2] << 16) + (data[1] << 8) + data[0] + ); } inline uint16_t MemBeToUint2byte(const uint8_t *data) { return (uint16_t)( - (data[0] << 8) + data[1] - ); + (data[0] << 8) + data[1] + ); } inline uint32_t MemBeToUint3byte(const uint8_t *data) { return (uint32_t)( - (data[0] << 16) + (data[1] << 8) + data[2] - ); + (data[0] << 16) + (data[1] << 8) + data[2] + ); } inline uint32_t MemBeToUint4byte(const uint8_t *data) { return (uint32_t)( - (data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3] - ); + (data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3] + ); } void Uint2byteToMemLe(uint8_t *data, uint16_t value) { From 41ff9191d6e1271c33edd495614c199b1e9d241c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 21:04:21 +0200 Subject: [PATCH 106/299] text --- client/src/cmdhf14b.c | 2 +- client/src/cmdhf15.c | 50 ++++++++++++++++++++++------------------ client/src/cmdhficlass.c | 2 +- client/src/cmdhflegic.c | 2 +- client/src/cmdhfmfp.c | 1 - client/src/cmdhfmfu.c | 1 - client/src/cmdlfem4x05.c | 14 +++++------ client/src/cmdlfem4x70.c | 2 -- client/src/cmdlfhitag.c | 1 - doc/colors_notes.md | 1 - 10 files changed, 37 insertions(+), 39 deletions(-) diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index 29a985b29..e8d48751a 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -861,7 +861,7 @@ static bool HF14B_Std_Info(bool verbose, bool do_aid_search) { switch (status) { case 0: { PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "-------------------- " _CYAN_("Tag information") " --------------------"); + PrintAndLogEx(INFO, "--- " _CYAN_("Tag Information") " ---------------------------"); PrintAndLogEx(SUCCESS, " UID : " _GREEN_("%s"), sprint_hex(card.uid, card.uidlen)); PrintAndLogEx(SUCCESS, " ATQB : %s", sprint_hex(card.atqb, sizeof(card.atqb))); PrintAndLogEx(SUCCESS, " CHIPID : %02X", card.chipid); diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index 792692773..ad63bd3b8 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -671,11 +671,9 @@ static int NxpTestEAS(uint8_t *uid) { SendCommandMIX(CMD_HF_ISO15693_COMMAND, reqlen, fast, reply, req, reqlen); if (WaitForResponseTimeout(CMD_HF_ISO15693_COMMAND, &resp, 2000) == false) { - PrintAndLogEx(WARNING, "iso15693 timeout"); + PrintAndLogEx(DEBUG, "iso15693 timeout"); } else { - PrintAndLogEx(NORMAL, ""); - - + PrintAndLogEx(INFO, ""); if (resp.length < 2) { PrintAndLogEx(INFO, " EAS (Electronic Article Surveillance) is not active"); } else { @@ -687,7 +685,6 @@ static int NxpTestEAS(uint8_t *uid) { } } } - return PM3_SUCCESS; } @@ -712,7 +709,7 @@ static int NxpCheckSig(uint8_t *uid) { SendCommandMIX(CMD_HF_ISO15693_COMMAND, reqlen, fast, reply, req, reqlen); if (WaitForResponseTimeout(CMD_HF_ISO15693_COMMAND, &resp, 2000) == false) { - PrintAndLogEx(WARNING, "iso15693 timeout"); + PrintAndLogEx(DEBUG, "iso15693 timeout"); DropField(); return PM3_ETIMEOUT; } @@ -732,10 +729,9 @@ static int NxpCheckSig(uint8_t *uid) { } uint8_t signature[32] = {0x00}; - memcpy(signature, recv + 1, 32); + memcpy(signature, recv + 1, sizeof(signature)); nxp_15693_print_signature(uid, signature); - return PM3_SUCCESS; } @@ -764,7 +760,7 @@ static int NxpSysInfo(uint8_t *uid) { clearCommandBuffer(); SendCommandMIX(CMD_HF_ISO15693_COMMAND, reqlen, fast, reply, req, reqlen); if (WaitForResponseTimeout(CMD_HF_ISO15693_COMMAND, &resp, 2000) == false) { - PrintAndLogEx(WARNING, "iso15693 timeout"); + PrintAndLogEx(DEBUG, "iso15693 timeout"); DropField(); return PM3_ETIMEOUT; } @@ -790,21 +786,29 @@ static int NxpSysInfo(uint8_t *uid) { bool support_signature = (recv[5] & 0x01); bool support_easmode = (recv[4] & 0x04); - PrintAndLogEx(INFO, "--------- " _CYAN_("NXP Sysinfo") " ---------"); - PrintAndLogEx(INFO, " raw : %s", sprint_hex(recv, 8)); - PrintAndLogEx(INFO, " Password protection configuration:"); - PrintAndLogEx(INFO, " * Page L read%s password protected", ((recv[2] & 0x01) ? "" : " not")); - PrintAndLogEx(INFO, " * Page L write%s password protected", ((recv[2] & 0x02) ? "" : " not")); - PrintAndLogEx(INFO, " * Page H read%s password protected", ((recv[2] & 0x10) ? "" : " not")); - PrintAndLogEx(INFO, " * Page H write%s password protected", ((recv[2] & 0x20) ? "" : " not")); + PrintAndLogEx(INFO, ""); + PrintAndLogEx(INFO, "--- " _CYAN_("NXP Sysinfo")); + PrintAndLogEx(INFO, " raw... %s", sprint_hex(recv, 8)); + PrintAndLogEx(INFO, " " _CYAN_("Password protection configuration:")); + PrintAndLogEx(INFO, " * Page L read%s password protected", ((recv[2] & 0x01) ? "" : _GREEN_(" not"))); + PrintAndLogEx(INFO, " * Page L write%s password protected", ((recv[2] & 0x02) ? "" : _GREEN_(" not"))); + PrintAndLogEx(INFO, " * Page H read%s password protected", ((recv[2] & 0x10) ? "" : _GREEN_(" not"))); + PrintAndLogEx(INFO, " * Page H write%s password protected", ((recv[2] & 0x20) ? "" : _GREEN_(" not"))); - PrintAndLogEx(INFO, " Lock bits:"); - PrintAndLogEx(INFO, " * AFI%s locked", ((recv[3] & 0x01) ? "" : " not")); // AFI lock bit - PrintAndLogEx(INFO, " * EAS%s locked", ((recv[3] & 0x02) ? "" : " not")); // EAS lock bit - PrintAndLogEx(INFO, " * DSFID%s locked", ((recv[3] & 0x03) ? "" : " not")); // DSFID lock bit - PrintAndLogEx(INFO, " * Password protection configuration%s locked", ((recv[3] & 0x04) ? "" : " not")); // Password protection pointer address and access conditions lock bit + PrintAndLogEx(INFO, " " _CYAN_("Lock bits:")); + // AFI lock bit + PrintAndLogEx(INFO, " * AFI%s locked", ((recv[3] & 0x01) ? "" : _GREEN_(" not"))); - PrintAndLogEx(INFO, " Features:"); + // EAS lock bit + PrintAndLogEx(INFO, " * EAS%s locked", ((recv[3] & 0x02) ? "" : _GREEN_(" not"))); + + // DSFID lock bit + PrintAndLogEx(INFO, " * DSFID%s locked", ((recv[3] & 0x03) ? "" : _GREEN_(" not"))); + + // Password protection pointer address and access conditions lock bit + PrintAndLogEx(INFO, " * Password protection configuration%s locked", ((recv[3] & 0x04) ? "" : _GREEN_(" not"))); + + PrintAndLogEx(INFO, " " _CYAN_("Features:")); PrintAndLogEx(INFO, " * User memory password protection%s supported", ((recv[4] & 0x01) ? "" : " not")); PrintAndLogEx(INFO, " * Counter feature%s supported", ((recv[4] & 0x02) ? "" : " not")); PrintAndLogEx(INFO, " * EAS ID%s supported by EAS ALARM command", support_easmode ? "" : " not"); @@ -827,6 +831,7 @@ static int NxpSysInfo(uint8_t *uid) { NxpCheckSig(uid); } + PrintAndLogEx(NORMAL, ""); return PM3_SUCCESS; } @@ -925,7 +930,6 @@ static int CmdHF15Info(const char *Cmd) { memcpy(uid, data + 2, sizeof(uid)); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("Tag Information") " ---------------------------"); - PrintAndLogEx(INFO, "-------------------------------------------------------------"); PrintAndLogEx(SUCCESS, " TYPE: " _YELLOW_("%s"), getTagInfo_15(data + 2)); PrintAndLogEx(SUCCESS, " UID: " _GREEN_("%s"), iso15693_sprintUID(NULL, uid)); PrintAndLogEx(SUCCESS, " SYSINFO: %s", sprint_hex(data, resp.length - 2)); diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 11bec0d16..1a96fbacb 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -4282,7 +4282,7 @@ int info_iclass(bool shallow_mod) { picopass_ns_hdr_t *ns_hdr = &r->header.ns_hdr; PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "--------------------- " _CYAN_("Tag Information") " ----------------------"); + PrintAndLogEx(INFO, "--- " _CYAN_("Tag Information") " ----------------------------------------"); if ((r->status & FLAG_ICLASS_CSN) == FLAG_ICLASS_CSN) { PrintAndLogEx(SUCCESS, " CSN: " _GREEN_("%s") " uid", sprint_hex(hdr->csn, sizeof(hdr->csn))); diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index 160eac05b..2398aa8dc 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -83,7 +83,7 @@ static int decode_and_print_memory(uint16_t card_size, const uint8_t *input_buff int crc = data[4]; uint32_t calc_crc = CRC8Legic(data, 4); - PrintAndLogEx(INFO, "--------------------- " _CYAN_("Tag Information") " ----------------------"); + PrintAndLogEx(INFO, "--- " _CYAN_("Tag Information") " ----------------------------------------"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(SUCCESS, " " _CYAN_("CDF: System Area")); PrintAndLogEx(INFO, "------------------------------------------------------"); diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index e8e2c7226..01f529b99 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -283,7 +283,6 @@ static int CmdHFMFPInfo(const char *Cmd) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("Tag Information") " ---------------------------"); - PrintAndLogEx(INFO, "-------------------------------------------------------------"); // Mifare Plus info SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT, 0, 0, NULL, 0); diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 6762d0b1c..d5fcd3ac0 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -1785,7 +1785,6 @@ static int CmdHF14AMfUInfo(const char *Cmd) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("Tag Information") " --------------------------"); - PrintAndLogEx(INFO, "-------------------------------------------------------------"); ul_print_type(tagtype, 6); // Swap endianness diff --git a/client/src/cmdlfem4x05.c b/client/src/cmdlfem4x05.c index c21540f45..665518a40 100644 --- a/client/src/cmdlfem4x05.c +++ b/client/src/cmdlfem4x05.c @@ -2162,14 +2162,14 @@ static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, {"brute", CmdEM4x05Brute, IfPm3Lf, "Bruteforce password"}, {"chk", CmdEM4x05Chk, IfPm3Lf, "Check passwords from dictionary"}, - {"demod", CmdEM4x05Demod, AlwaysAvailable, "demodulate a EM4x05/EM4x69 tag from the GraphBuffer"}, - {"dump", CmdEM4x05Dump, IfPm3Lf, "dump EM4x05/EM4x69 tag"}, - {"info", CmdEM4x05Info, IfPm3Lf, "tag information EM4x05/EM4x69"}, - {"read", CmdEM4x05Read, IfPm3Lf, "read word data from EM4x05/EM4x69"}, + {"demod", CmdEM4x05Demod, AlwaysAvailable, "Demodulate a EM4x05/EM4x69 tag from the GraphBuffer"}, + {"dump", CmdEM4x05Dump, IfPm3Lf, "Dump EM4x05/EM4x69 tag"}, + {"info", CmdEM4x05Info, IfPm3Lf, "Tag information"}, + {"read", CmdEM4x05Read, IfPm3Lf, "Read word data from EM4x05/EM4x69"}, {"sniff", CmdEM4x05Sniff, AlwaysAvailable, "Attempt to recover em4x05 commands from sample buffer"}, - {"unlock", CmdEM4x05Unlock, IfPm3Lf, "execute tear off against EM4x05/EM4x69"}, - {"wipe", CmdEM4x05Wipe, IfPm3Lf, "wipe EM4x05/EM4x69 tag"}, - {"write", CmdEM4x05Write, IfPm3Lf, "write word data to EM4x05/EM4x69"}, + {"unlock", CmdEM4x05Unlock, IfPm3Lf, "Execute tear off against EM4x05/EM4x69"}, + {"wipe", CmdEM4x05Wipe, IfPm3Lf, "Wipe EM4x05/EM4x69 tag"}, + {"write", CmdEM4x05Write, IfPm3Lf, "Write word data to EM4x05/EM4x69"}, {NULL, NULL, NULL, NULL} }; diff --git a/client/src/cmdlfem4x70.c b/client/src/cmdlfem4x70.c index d7bc3811a..c1e2aff03 100644 --- a/client/src/cmdlfem4x70.c +++ b/client/src/cmdlfem4x70.c @@ -35,8 +35,6 @@ static void print_info_result(const uint8_t *data) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("Tag Information") " ---------------------------"); - PrintAndLogEx(INFO, "-----------------------------------------------"); - PrintAndLogEx(INFO, "Block | data | info"); PrintAndLogEx(INFO, "------+----------+-----------------------------"); diff --git a/client/src/cmdlfhitag.c b/client/src/cmdlfhitag.c index 4df9ca4a7..1cbae7bd3 100644 --- a/client/src/cmdlfhitag.c +++ b/client/src/cmdlfhitag.c @@ -514,7 +514,6 @@ static int CmdLFHitagInfo(const char *Cmd) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("Tag Information") " ---------------------------"); - PrintAndLogEx(INFO, "-------------------------------------------------------------"); PrintAndLogEx(SUCCESS, " UID: " _GREEN_("%08X"), uid); PrintAndLogEx(SUCCESS, " TYPE: " _GREEN_("%s"), getHitagTypeStr(uid)); diff --git a/doc/colors_notes.md b/doc/colors_notes.md index dac993585..b25a7d7c9 100644 --- a/doc/colors_notes.md +++ b/doc/colors_notes.md @@ -43,7 +43,6 @@ The following definition has be crystallized out from these experiments. Its no ``` PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("Tag Information") " ---------------------------"); - PrintAndLogEx(INFO, "-------------------------------------------------------------"); ``` For more examples, see also all **-h** helptext now in the LUA scripts. For the command help texts using _YELLOW_ for the example makes it very easy to see what is the command vs the description. From b446c36da63eeb7c539f534fe4f9aa6592622ed4 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 21:04:32 +0200 Subject: [PATCH 107/299] style --- client/src/proxmark3.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 162bc7776..f6c25a9eb 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -282,19 +282,22 @@ check_script: // read script file if (fgets(script_cmd_buf, sizeof(script_cmd_buf), current_cmdscriptfile()) == NULL) { - if (!pop_cmdscriptfile()) + if (pop_cmdscriptfile() == false) { break; - + } goto check_script; - } else { - prompt_ctx = PROXPROMPT_CTX_SCRIPTFILE; - // remove linebreaks - strcleanrn(script_cmd_buf, sizeof(script_cmd_buf)); - - cmd = str_dup(script_cmd_buf); - if (cmd != NULL) - printprompt = true; } + + prompt_ctx = PROXPROMPT_CTX_SCRIPTFILE; + + // remove linebreaks + strcleanrn(script_cmd_buf, sizeof(script_cmd_buf)); + + cmd = str_dup(script_cmd_buf); + if (cmd != NULL) { + printprompt = true; + } + } else { // If there is a script command if (execCommand) { @@ -429,8 +432,9 @@ check_script: msleep(100); // Make sure command is sent before killing client } - while (current_cmdscriptfile()) + while (current_cmdscriptfile()) { pop_cmdscriptfile(); + } pm3line_flush_history(); From 4179ce1e42fe8b21453a978e1e30385c93007069 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 21:34:01 +0200 Subject: [PATCH 108/299] text --- client/src/cmdhf15.c | 2 +- client/src/cmdhfmf.c | 2 +- client/src/cmdhfmfu.c | 2 +- client/src/nfc/ndef.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index ad63bd3b8..0747cedec 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -335,7 +335,7 @@ static int nxp_15693_print_signature(uint8_t *uid, uint8_t *signature) { return PM3_ESOFT; } - PrintAndLogEx(INFO, " IC signature public key name: %s", nxp_15693_public_keys[i].desc); + PrintAndLogEx(INFO, " IC signature public key name: " _GREEN_("%s"), nxp_15693_public_keys[i].desc); PrintAndLogEx(INFO, "IC signature public key value: %s", nxp_15693_public_keys[i].value); PrintAndLogEx(INFO, " Elliptic curve parameters: NID_secp128r1"); PrintAndLogEx(INFO, " TAG IC Signature: %s", sprint_hex_inrow(signature, 32)); diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index bbeaa5fce..f535696cc 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -89,7 +89,7 @@ int mfc_ev1_print_signature(uint8_t *uid, uint8_t uidlen, uint8_t *signature, in return PM3_ESOFT; } - PrintAndLogEx(INFO, " IC signature public key name: %s", nxp_mfc_public_keys[i].desc); + PrintAndLogEx(INFO, " IC signature public key name: " _GREEN_("%s"), nxp_mfc_public_keys[i].desc); PrintAndLogEx(INFO, "IC signature public key value: %s", nxp_mfc_public_keys[i].value); PrintAndLogEx(INFO, " Elliptic curve parameters: NID_secp128r1"); PrintAndLogEx(INFO, " TAG IC Signature: %s", sprint_hex_inrow(signature, 32)); diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index d5fcd3ac0..2f8b206f2 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -1097,7 +1097,7 @@ static int ulev1_print_signature(TagTypeUL_t tagtype, uint8_t *uid, uint8_t *sig return PM3_ESOFT; } - PrintAndLogEx(INFO, " IC signature public key name: %s", nxp_mfu_public_keys[i].desc); + PrintAndLogEx(INFO, " IC signature public key name: " _GREEN_("%s"), nxp_mfu_public_keys[i].desc); PrintAndLogEx(INFO, "IC signature public key value: %s", nxp_mfu_public_keys[i].value); PrintAndLogEx(INFO, " Elliptic curve parameters: NID_secp128r1"); PrintAndLogEx(INFO, " TAG IC Signature: %s", sprint_hex_inrow(signature, signature_len)); diff --git a/client/src/nfc/ndef.c b/client/src/nfc/ndef.c index fc829e8d7..e0bc83c14 100644 --- a/client/src/nfc/ndef.c +++ b/client/src/nfc/ndef.c @@ -274,7 +274,7 @@ static int ndef_print_signature(uint8_t *data, uint8_t data_len, uint8_t *signat return PM3_ESOFT; } - PrintAndLogEx(INFO, " IC signature public key name: %s", ndef_public_keys[i].desc); + PrintAndLogEx(INFO, " IC signature public key name: " _GREEN_("%s"), ndef_public_keys[i].desc); PrintAndLogEx(INFO, "IC signature public key value: %s", ndef_public_keys[i].value); PrintAndLogEx(INFO, " Elliptic curve parameters: %s", get_curve_name(ndef_public_keys[i].grp_id)); PrintAndLogEx(INFO, " NDEF Signature: %s", sprint_hex_inrow(signature, 32)); From 1a4df13aaec982f66777b06e1231807eaba54979 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 24 Jul 2023 22:18:35 +0200 Subject: [PATCH 109/299] fix coverity cid #416068 --- client/src/cmdhfwaveshare.c | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/cmdhfwaveshare.c b/client/src/cmdhfwaveshare.c index 12e5320e3..8bb9eadc8 100644 --- a/client/src/cmdhfwaveshare.c +++ b/client/src/cmdhfwaveshare.c @@ -1070,6 +1070,7 @@ static int CmdHF14AWSLoadBmp(const char *Cmd) { return PM3_EMALLOC; } if (bytes_read < sizeof(bmp_header_t)) { + free(bmp); return PM3_ESOFT; } From cb9ee94ed6aa63be94a351793ba49ac38244f722 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 25 Jul 2023 12:39:22 +0200 Subject: [PATCH 110/299] lets see if this sorts out the memory crash on pentoo --- client/src/fileutils.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 7ca59ef85..3de51f60f 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -210,18 +210,19 @@ char *newfilenamemcopyEx(const char *preferredName, const char *suffix, savePath pfn += save_path_len + strlen(PATHSEP); } - uint16_t p_namelen = strlen(preferredName); + // remove file extension if exist in name + size_t p_namelen = strlen(preferredName); if (str_endswith(preferredName, suffix)) { p_namelen -= strlen(suffix); } // modify filename - snprintf(pfn, len, "%.*s%s", p_namelen, preferredName, suffix); + snprintf(pfn, len, "%.*s%s", (int)p_namelen, preferredName, suffix); // check complete path/filename if exists int num = 1; while (fileExists(fileName)) { // modify filename - snprintf(pfn, len, "%.*s-%03d%s", p_namelen, preferredName, num, suffix); + snprintf(pfn, len, "%.*s-%03d%s", (int)p_namelen, preferredName, num, suffix); num++; } From 1cb15c84c1b61ee355512a1f7379688e6c7f82ef Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 25 Jul 2023 21:29:31 +0200 Subject: [PATCH 111/299] adapting hf mf cget* commands to longer timeouts. Same with the quick eload used in autopwn among others.\nAlso adapted the return codes, so its more accurate in its reporting back to the client. Also added some more informative messages --- armsrc/iso14443a.c | 9 ++++--- armsrc/mifarecmd.c | 62 ++++++++++++++++++++++++++++++++++----------- armsrc/mifareutil.c | 25 ++++++++++++------ 3 files changed, 70 insertions(+), 26 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 74caf51c1..1966c8c65 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -2365,8 +2365,9 @@ static int GetIso14443aAnswerFromTag(uint8_t *receivedResponse, uint8_t *receive } // timeout already in ms + 100ms guard time - if (GetTickCountDelta(receive_timer) > timeout + 100) + if (GetTickCountDelta(receive_timer) > timeout + 100) { break; + } } return false; } @@ -2401,15 +2402,17 @@ void ReaderTransmit(uint8_t *frame, uint16_t len, uint32_t *timing) { } static uint16_t ReaderReceiveOffset(uint8_t *receivedAnswer, uint16_t offset, uint8_t *par) { - if (!GetIso14443aAnswerFromTag(receivedAnswer, par, offset)) + if (GetIso14443aAnswerFromTag(receivedAnswer, par, offset) == false) { return 0; + } LogTrace(receivedAnswer, Demod.len, Demod.startTime * 16 - DELAY_AIR2ARM_AS_READER, Demod.endTime * 16 - DELAY_AIR2ARM_AS_READER, par, false); return Demod.len; } uint16_t ReaderReceive(uint8_t *receivedAnswer, uint8_t *par) { - if (!GetIso14443aAnswerFromTag(receivedAnswer, par, 0)) + if (GetIso14443aAnswerFromTag(receivedAnswer, par, 0) == false) { return 0; + } LogTrace(receivedAnswer, Demod.len, Demod.startTime * 16 - DELAY_AIR2ARM_AS_READER, Demod.endTime * 16 - DELAY_AIR2ARM_AS_READER, par, false); return Demod.len; } diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index ef6b6022f..ffe3182ba 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -73,9 +73,10 @@ int16_t mifare_cmd_readblocks(uint8_t key_auth_cmd, uint8_t *key, uint8_t read_c struct Crypto1State *pcs = &mpcs; iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); - clear_trace(); set_tracing(true); + + uint32_t timeout = iso14a_get_timeout(); LED_A_ON(); LED_B_OFF(); @@ -95,6 +96,10 @@ int16_t mifare_cmd_readblocks(uint8_t key_auth_cmd, uint8_t *key, uint8_t read_c goto OUT; }; + // frame waiting time (FWT) in 1/fc + uint32_t fwt = 256 * 16 * (1 << 6); + iso14a_set_timeout(fwt / (8 * 16)); + for (uint8_t i = 0; i < count; i++) { if (mifare_classic_readblock_ex(pcs, block_no + i, block_data + (i * 16), read_cmd)) { if (g_dbglevel >= DBG_ERROR) Dbprintf("Read block error"); @@ -112,11 +117,11 @@ int16_t mifare_cmd_readblocks(uint8_t key_auth_cmd, uint8_t *key, uint8_t read_c OUT: crypto1_deinit(pcs); + iso14a_set_timeout(timeout); FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); LEDsoff(); set_tracing(false); BigBuf_free(); - return retval; } @@ -2072,6 +2077,12 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { int retval = PM3_SUCCESS; + // increase time-out. Magic card etc are slow + uint32_t timeout = iso14a_get_timeout(); + // frame waiting time (FWT) in 1/fc + uint32_t fwt = 256 * 16 * (1 << 7); + iso14a_set_timeout(fwt / (8 * 16)); + for (uint8_t s = 0; s < sectorcnt; s++) { uint64_t ui64Key = emlGetKey(s, keytype); @@ -2110,7 +2121,7 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { // Auth if (mifare_classic_auth(pcs, cuid, FirstBlockOfSector(s), keytype, ui64Key, AUTH_FIRST)) { retval = PM3_EPARTIAL; - if (g_dbglevel > DBG_ERROR) { + if (g_dbglevel >= DBG_ERROR) { Dbprintf("Sector %2d - Auth error", s); } continue; @@ -2122,31 +2133,43 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { for (uint8_t b = 0; b < NumBlocksPerSector(s); b++) { memset(data, 0x00, sizeof(data)); + uint8_t tb = FirstBlockOfSector(s) + b; + uint8_t r = 0; + for (; r < MAX_RETRIES; r++) { - for (uint8_t r = 0; r < MAX_RETRIES; r++) { - - if (mifare_classic_readblock(pcs, FirstBlockOfSector(s) + b, data)) { + int res = mifare_classic_readblock(pcs, tb, data); + if (res == 1) { retval |= PM3_EPARTIAL; - if (g_dbglevel > DBG_ERROR) { - Dbprintf("Error reading sector %2d block %2d", s, b); + if (g_dbglevel >= DBG_ERROR) { + Dbprintf("Error No rights reading sector %2d block %2d", s, b); } + break; + } + // retry if wrong len. + if (res != 0) { continue; } // No need to copy empty if (memcmp(data, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 16) == 0) { - continue; + break; } - if (b < NumBlocksPerSector(s) - 1) { - emlSetMem(data, FirstBlockOfSector(s) + b, 1); - } else { + if (IsSectorTrailer(b)) { // sector trailer, keep the keys, set only the AC uint8_t st[16] = {0x00}; - emlGetMem(st, FirstBlockOfSector(s) + b, 1); + emlGetMem(st, tb, 1); memcpy(st + 6, data + 6, 4); - emlSetMem(st, FirstBlockOfSector(s) + b, 1); + emlSetMem(st, tb, 1); + } else { + emlSetMem(data, tb, 1); } + break; + } + + // if we failed all retries, notify client + if (r == MAX_RETRIES) { + retval |= PM3_EPARTIAL; } } } @@ -2154,6 +2177,7 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { int res = mifare_classic_halt(pcs); (void)res; + iso14a_set_timeout(timeout); crypto1_deinit(pcs); FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); LEDsoff(); @@ -2322,6 +2346,12 @@ void MifareCGetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain) { set_tracing(true); } + // increase time-out. Magic card etc are slow + uint32_t timeout = iso14a_get_timeout(); + // frame waiting time (FWT) in 1/fc + uint32_t fwt = 256 * 16 * (1 << 7); + iso14a_set_timeout(fwt / (8 * 16)); + //loop doesn't loop just breaks out if error or done while (true) { if (workFlags & MAGIC_WUPC) { @@ -2343,7 +2373,7 @@ void MifareCGetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain) { } // read block - if ((mifare_sendcmd_short(NULL, CRYPT_NONE, ISO14443A_CMD_READBLOCK, blockNo, receivedAnswer, receivedAnswerPar, NULL) != 18)) { + if ((mifare_sendcmd_short(NULL, CRYPT_NONE, ISO14443A_CMD_READBLOCK, blockNo, receivedAnswer, receivedAnswerPar, NULL) != MAX_MIFARE_FRAME_SIZE)) { if (g_dbglevel >= DBG_ERROR) Dbprintf("read block send command error"); errormsg = 0; break; @@ -2371,6 +2401,8 @@ void MifareCGetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain) { if (workFlags & MAGIC_OFF) OnSuccessMagic(); + + iso14a_set_timeout(timeout); } void MifareCIdent(bool is_mfc) { diff --git a/armsrc/mifareutil.c b/armsrc/mifareutil.c index 5dfbfd26b..25744aa96 100644 --- a/armsrc/mifareutil.c +++ b/armsrc/mifareutil.c @@ -116,7 +116,9 @@ uint16_t mifare_sendcmd_short(struct Crypto1State *pcs, uint8_t crypted, uint8_t uint16_t len = ReaderReceive(answer, par); - if (answer_parity) *answer_parity = par[0]; + if (answer_parity) { + *answer_parity = par[0]; + } if (pcs && (crypted == CRYPT_ALL)) { if (len == 1) { @@ -127,8 +129,9 @@ uint16_t mifare_sendcmd_short(struct Crypto1State *pcs, uint8_t crypted, uint8_t res |= (crypto1_bit(pcs, 0, 0) ^ BIT(answer[0], 3)) << 3; answer[0] = res; } else { - for (pos = 0; pos < len; pos++) + for (pos = 0; pos < len; pos++) { answer[pos] = crypto1_byte(pcs, 0x00, 0) ^ answer[pos]; + } } } return len; @@ -238,11 +241,15 @@ int mifare_classic_readblock_ex(struct Crypto1State *pcs, uint8_t blockNo, uint8 uint16_t len = mifare_sendcmd_short(pcs, 1, iso_byte, blockNo, receivedAnswer, receivedAnswerPar, NULL); if (len == 1) { - if (g_dbglevel >= DBG_ERROR) Dbprintf("Cmd Error %02x", receivedAnswer[0]); + if (g_dbglevel >= DBG_ERROR) { + Dbprintf("Block " _YELLOW_("%3d") " Cmd 0x%02x Cmd Error %02x", blockNo, iso_byte, receivedAnswer[0]); + } return 1; } if (len != 18) { - if (g_dbglevel >= DBG_ERROR) Dbprintf("wrong response len %d (expected 18)", len); + if (g_dbglevel >= DBG_ERROR) { + Dbprintf("Block " _YELLOW_("%3d") " Cmd 0x%02x Wrong response len, expected 18 got " _RED_("%d"), blockNo, iso_byte, len); + } return 2; } @@ -701,13 +708,15 @@ void emlClearMem(void) { uint8_t SectorTrailer(uint8_t blockNo) { if (blockNo <= MIFARE_2K_MAXBLOCK) { - if (g_dbglevel >= DBG_EXTENDED) + if (g_dbglevel >= DBG_EXTENDED) { Dbprintf("Sector Trailer for block %d : %d", blockNo, (blockNo | 0x03)); + } return (blockNo | 0x03); } else { - if (g_dbglevel >= DBG_EXTENDED) - Dbprintf("Sector Trailer for block %d : %d", blockNo, (blockNo | 0x0f)); - return (blockNo | 0x0f); + if (g_dbglevel >= DBG_EXTENDED) { + Dbprintf("Sector Trailer for block %d : %d", blockNo, (blockNo | 0x0F)); + } + return (blockNo | 0x0F); } } From e5b075ed3b1b28958de1312e2a84df01b2120f22 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 25 Jul 2023 22:42:42 +0200 Subject: [PATCH 112/299] hf mf restore got some textual updates in order to be easier to understand if keyB writes fails. We use a default ACL when wiping a card that doesnt allow key B to be used for writing. Restore command tries key B first, so there will be several failed key b attempts normally. --- client/src/cmdhfmf.c | 44 +++++++++++++++++++++--------------------- client/src/fileutils.c | 11 ++++++----- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index f535696cc..18c022e4b 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -1352,7 +1352,7 @@ static int CmdHF14AMfRestore(const char *Cmd) { return PM3_ESOFT; } - PrintAndLogEx(INFO, "Using key file... `" _YELLOW_("%s") "`", keyfilename); + PrintAndLogEx(INFO, "Using key file `" _YELLOW_("%s") "`", keyfilename); // try reading card uid and create filename if (datafnlen == 0) { @@ -1383,10 +1383,9 @@ static int CmdHF14AMfRestore(const char *Cmd) { // default authentication key uint8_t default_key[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; - PrintAndLogEx(INFO, "Restoring " _YELLOW_("%s")" to card", datafilename); - - PrintAndLogEx(INFO, " blk | "); - PrintAndLogEx(INFO, "-----+------------------------------------------------------------"); + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, " blk | data | status"); + PrintAndLogEx(INFO, "-----+-------------------------------------------------+----------------"); // main loop for restoring. // a bit more complicated than needed @@ -1402,6 +1401,8 @@ static int CmdHF14AMfRestore(const char *Cmd) { // if sector trailer if (mfIsSectorTrailerBasedOnBlocks(s, b)) { + + // keep the current keys on the card if (use_keyfile_for_auth == false) { // replace KEY A memcpy(bldata, keyA + (s * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); @@ -1440,10 +1441,13 @@ static int CmdHF14AMfRestore(const char *Cmd) { for (int8_t kt = MF_KEY_B; kt > -1; kt--) { if (use_keyfile_for_auth) { - if (kt == MF_KEY_A) + + if (kt == MF_KEY_A) { memcpy(wdata, keyA + (s * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); - else + } else { memcpy(wdata, keyB + (s * MIFARE_KEY_SIZE), MIFARE_KEY_SIZE); + } + } else { // use default key to authenticate for the write command memcpy(wdata, default_key, MIFARE_KEY_SIZE); @@ -1451,8 +1455,6 @@ static int CmdHF14AMfRestore(const char *Cmd) { uint16_t blockno = (mfFirstBlockOfSector(s) + b); - PrintAndLogEx(INFO, " %3d | %s", blockno, sprint_hex(bldata, sizeof(bldata))); - clearCommandBuffer(); SendCommandMIX(CMD_HF_MIFARE_WRITEBL, blockno, kt, 0, wdata, sizeof(wdata)); PacketResponseNG resp; @@ -1464,22 +1466,20 @@ static int CmdHF14AMfRestore(const char *Cmd) { int isOK = resp.oldarg[0] & 0xff; if (isOK == 1) { // if success, skip to next block + PrintAndLogEx(INFO, " %3d | %s| ( " _GREEN_("ok") " )", blockno, sprint_hex(bldata, sizeof(bldata))); break; - } else if (isOK == PM3_ETEAROFF) { + } + // write somehow failed. Lets determine why. + if (isOK == PM3_ETEAROFF) { PrintAndLogEx(INFO, "Tear off triggerd. Recommendation is not to use tear-off with restore command"); goto out; - } else { - if (b == 0) { - PrintAndLogEx(INFO, "Writing to manufacture block w key " _YELLOW_("%c") " ( " _RED_("fail") " )", - (kt == MF_KEY_A) ? 'A' : 'B' - ); - } else { - PrintAndLogEx(FAILED, "Write to block " _YELLOW_("%u") " w key " _YELLOW_("%c") " ( " _RED_("fail") " ) ", - blockno, - (kt == MF_KEY_A) ? 'A' : 'B' - ); - } } + + PrintAndLogEx(INFO, " %3d | %s| ( " _RED_("fail") " ) key " _YELLOW_("%c"), + blockno, + sprint_hex(bldata, sizeof(bldata)), + (kt == MF_KEY_A) ? 'A' : 'B' + ); } // end loop key types } // end loop B } // end loop S @@ -1488,7 +1488,7 @@ out: free(ref_dump); free(keyA); free(keyB); - PrintAndLogEx(INFO, "-----+------------------------------------------------------------"); + PrintAndLogEx(INFO, "-----+-------------------------------------------------+----------------"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "Done!"); return PM3_SUCCESS; diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 3de51f60f..06bd26b66 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -215,6 +215,7 @@ char *newfilenamemcopyEx(const char *preferredName, const char *suffix, savePath if (str_endswith(preferredName, suffix)) { p_namelen -= strlen(suffix); } + // modify filename snprintf(pfn, len, "%.*s%s", (int)p_namelen, preferredName, suffix); @@ -862,7 +863,7 @@ int loadFile_safeEx(const char *preferredName, const char *suffix, void **pdata, *datalen = bytes_read; if (verbose) { - PrintAndLogEx(SUCCESS, "loaded " _YELLOW_("%zu") " bytes from binary file " _YELLOW_("%s"), bytes_read, preferredName); + PrintAndLogEx(SUCCESS, "loaded " _YELLOW_("%zu") " bytes from binary file `" _YELLOW_("%s") "`", bytes_read, preferredName); } return PM3_SUCCESS; } @@ -936,7 +937,7 @@ int loadFileEML_safe(const char *preferredName, void **pdata, size_t *datalen) { } } fclose(f); - PrintAndLogEx(SUCCESS, "loaded " _YELLOW_("%zu") " bytes from text file " _YELLOW_("%s"), counter, preferredName); + PrintAndLogEx(SUCCESS, "loaded " _YELLOW_("%zu") " bytes from text file `" _YELLOW_("%s") "`", counter, preferredName); uint8_t *newdump = realloc(*pdata, counter); @@ -1023,7 +1024,7 @@ int loadFileMCT_safe(const char *preferredName, void **pdata, size_t *datalen) { } } fclose(f); - PrintAndLogEx(SUCCESS, "loaded " _YELLOW_("%zu") " bytes from MCT file " _YELLOW_("%s"), counter, preferredName); + PrintAndLogEx(SUCCESS, "loaded " _YELLOW_("%zu") " bytes from MCT file `" _YELLOW_("%s") "`", counter, preferredName); uint8_t *newdump = realloc(*pdata, counter); @@ -1059,7 +1060,7 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz json_error_t error; json_t *root = json_load_file(path, 0, &error); if (verbose) - PrintAndLogEx(SUCCESS, "loaded from JSON file " _YELLOW_("%s"), path); + PrintAndLogEx(SUCCESS, "loaded from JSON file `" _YELLOW_("%s") "`", path); free(path); @@ -1467,7 +1468,7 @@ int loadFileDICTIONARYEx(const char *preferredName, void *data, size_t maxdatale } fclose(f); if (verbose) - PrintAndLogEx(SUCCESS, "loaded " _GREEN_("%2d") " keys from dictionary file " _YELLOW_("%s"), vkeycnt, path); + PrintAndLogEx(SUCCESS, "loaded " _GREEN_("%2d") " keys from dictionary file `" _YELLOW_("%s") "`", vkeycnt, path); if (datalen) *datalen = counter; From c85258e042dbbc8c8f3ffa982a7363228d929690 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 25 Jul 2023 23:55:38 +0200 Subject: [PATCH 113/299] zerobased index --- client/src/cmdhfmf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 18c022e4b..3ab13aeb0 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -379,7 +379,8 @@ static int mf_print_keys(uint16_t n, uint8_t *d) { if (mfIsSectorTrailer(i) == false) { continue; } - uint8_t sec = MIN(sectors, mfSectorNum(i)); + // zero based index... + uint8_t sec = MIN(sectors - 1, mfSectorNum(i)); e_sector[sec].foundKey[0] = 1; e_sector[sec].Key[0] = bytes_to_num(d + (i * MFBLOCK_SIZE), MIFARE_KEY_SIZE); e_sector[sec].foundKey[1] = 1; From 30162f3d87fa592e9ec09b14eb2d1b598d15e0f0 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 26 Jul 2023 01:35:27 +0200 Subject: [PATCH 114/299] remove debug statement --- client/src/wiegand_formatutils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/wiegand_formatutils.c b/client/src/wiegand_formatutils.c index e55f999bd..75aa6ae2f 100644 --- a/client/src/wiegand_formatutils.c +++ b/client/src/wiegand_formatutils.c @@ -148,7 +148,7 @@ static uint8_t get_length_from_header(wiegand_message_t *data) { len = 32; } else { - printf("hid preamble detected\n"); + PrintAndLogEx(DEBUG, "hid preamble detected"); len = 32; if ((data->Mid ^ 0x20) == 0) { hfmt = data->Bot; len = 0; } From c3c08e07e4d18d26f474a51ebfcd0adebfe495ec Mon Sep 17 00:00:00 2001 From: nvx Date: Wed, 26 Jul 2023 18:44:26 +1000 Subject: [PATCH 115/299] Fix hf mf gdmsetlbk block data being accidentally prefixed with a 0x00. This fixes a regression caused by edd8e36 (PR #2021). gdm auth has no concept of A or B keys, a partial cleanup in the previous PR removed the key type from the arm code, but the corresponding removal was missed in the client side resulting in mismatched structs for cmd CMD_HF_MIFARE_G4_GDM_WRBL. --- client/src/cmdhfmf.c | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 3ab13aeb0..325e50e7f 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -8160,8 +8160,6 @@ static int CmdHF14AGen4_GDM_SetBlk(const char *Cmd) { void *argtable[] = { arg_param_begin, arg_int1(NULL, "blk", "", "block number"), - arg_lit0("a", NULL, "input key type is key A (def)"), - arg_lit0("b", NULL, "input key type is key B"), arg_str0("d", "data", "", "bytes to write, 16 hex bytes"), arg_str0("k", "key", "", "key, 6 hex bytes"), arg_lit0(NULL, "force", "override warnings"), @@ -8171,24 +8169,15 @@ static int CmdHF14AGen4_GDM_SetBlk(const char *Cmd) { int b = arg_get_int_def(ctx, 1, 1); - uint8_t keytype = MF_KEY_A; - if (arg_get_lit(ctx, 2) && arg_get_lit(ctx, 3)) { - CLIParserFree(ctx); - PrintAndLogEx(WARNING, "Input key type must be A or B"); - return PM3_EINVARG; - } else if (arg_get_lit(ctx, 3)) { - keytype = MF_KEY_B;; - } - uint8_t block[MFBLOCK_SIZE] = {0x00}; int blen = 0; - CLIGetHexWithReturn(ctx, 4, block, &blen); + CLIGetHexWithReturn(ctx, 2, block, &blen); int keylen = 0; uint8_t key[6] = {0}; - CLIGetHexWithReturn(ctx, 5, key, &keylen); + CLIGetHexWithReturn(ctx, 3, key, &keylen); - bool force = arg_get_lit(ctx, 6); + bool force = arg_get_lit(ctx, 4); CLIParserFree(ctx); if (blen != MFBLOCK_SIZE) { @@ -8212,18 +8201,16 @@ static int CmdHF14AGen4_GDM_SetBlk(const char *Cmd) { return PM3_EINVARG; } - PrintAndLogEx(INFO, "Writing block no %d, key %c - %s", blockno, (keytype == MF_KEY_B) ? 'B' : 'A', sprint_hex_inrow(key, sizeof(key))); + PrintAndLogEx(INFO, "Writing block no %d, key %s", blockno, sprint_hex_inrow(key, sizeof(key))); PrintAndLogEx(INFO, "data: %s", sprint_hex(block, sizeof(block))); struct p { uint8_t blockno; - uint8_t keytype; uint8_t key[6]; uint8_t data[MFBLOCK_SIZE]; // data to be written } PACKED payload; payload.blockno = blockno; - payload.keytype = keytype; memcpy(payload.key, key, sizeof(payload.key)); memcpy(payload.data, block, sizeof(payload.data)); @@ -8242,7 +8229,6 @@ static int CmdHF14AGen4_GDM_SetBlk(const char *Cmd) { return resp.status; } else { PrintAndLogEx(FAILED, "Write ( " _RED_("fail") " )"); - PrintAndLogEx(HINT, "Maybe access rights? Try specify keytype `" _YELLOW_("hf mf gdmsetblk -%c ...") "` instead", (keytype == MF_KEY_A) ? 'b' : 'a'); } return PM3_SUCCESS; } From 9dc6ce552c0052e36eceffa88547e3111885fea2 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 26 Jul 2023 11:08:45 +0200 Subject: [PATCH 116/299] I remembered not to add calls to functions inside macro calls... --- client/src/cmdhfmf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 3ab13aeb0..4d1dbbd6c 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -380,7 +380,8 @@ static int mf_print_keys(uint16_t n, uint8_t *d) { continue; } // zero based index... - uint8_t sec = MIN(sectors - 1, mfSectorNum(i)); + uint8_t lookup = mfSectorNum(i); + uint8_t sec = MIN(sectors - 1, lookup); e_sector[sec].foundKey[0] = 1; e_sector[sec].Key[0] = bytes_to_num(d + (i * MFBLOCK_SIZE), MIFARE_KEY_SIZE); e_sector[sec].foundKey[1] = 1; From 00133a04eef14440aadbe7c427bfacd2382b0b5f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 26 Jul 2023 17:41:48 +0200 Subject: [PATCH 117/299] added the hf mfu list --- client/src/cmdhfmfu.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 2f8b206f2..b1e260eee 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -30,9 +30,10 @@ #include "nfc/ndef.h" #include "cliparser.h" #include "cmdmain.h" -#include "amiibo.h" // amiiboo fcts +#include "amiibo.h" // amiiboo fcts #include "base64.h" -#include "fileutils.h" // saveFile +#include "fileutils.h" // saveFile +#include "cmdtrace.h" // trace list #define MAX_UL_BLOCKS 0x0F #define MAX_ULC_BLOCKS 0x2F @@ -4669,6 +4670,10 @@ static int CmdHF14AMfuView(const char *Cmd) { return PM3_SUCCESS; } +static int CmdHF14AMfuList(const char *Cmd) { + return CmdTraceListAlias(Cmd, "hf 14a", "14a"); +} + /* static int CmdHF14AMfUCDecryptAmiibo(const char *Cmd){ @@ -4715,6 +4720,7 @@ static int CmdHF14AMfUCDecryptAmiibo(const char *Cmd){ //------------------------------------ static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, + {"list", CmdHF14AMfuList, AlwaysAvailable, "List MIFARE Ultralight / NTAG history"}, {"-----------", CmdHelp, IfPm3Iso14443a, "----------------------- " _CYAN_("recovery") " -------------------------"}, {"keygen", CmdHF14AMfUGenDiverseKeys, AlwaysAvailable, "Generate 3DES MIFARE diversified keys"}, {"pwdgen", CmdHF14AMfUPwdGen, AlwaysAvailable, "Generate pwd from known algos"}, From fbdf50d7563526954d16423e3a326eebf5075d48 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 26 Jul 2023 17:49:14 +0200 Subject: [PATCH 118/299] minor text stuff --- armsrc/iso14443a.c | 3 ++- client/src/cmdhfmfu.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 1966c8c65..325bebf16 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -1110,7 +1110,7 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r sak = 0x09; break; } - case 7: { // NTAG + case 7: { // NTAG 215 rATQA[0] = 0x44; sak = 0x00; // some first pages of UL/NTAG dump is special data @@ -1274,6 +1274,7 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r AddCrc14A(rPPS, sizeof(rPPS) - 2); + // EV1/NTAG, set PWD w AMIIBO algo if all zero. if (tagType == 7) { uint8_t pwd[4]; uint8_t gen_pwd[4]; diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index b1e260eee..5680c33ce 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -3104,7 +3104,7 @@ static int CmdHF14AMfUSim(const char *Cmd) { void *argtable[] = { arg_param_begin, - arg_int1("t", "type", "<1..10> ", "Simulation type to use"), + arg_int1("t", "type", "<1..12> ", "Simulation type to use"), arg_str0("u", "uid", "", "<4|7|10> hex bytes UID"), arg_int0("n", "num", "", "Exit simulation after blocks. 0 = infinite"), arg_lit0("v", "verbose", "Verbose output"), From 538ac4b1910b6e0364039bedab870deede262187 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 26 Jul 2023 17:51:35 +0200 Subject: [PATCH 119/299] added a bunch of empty dump files and key files in order to easily simulate a empty tag. Just eload it and sim. --- CHANGELOG.md | 1 + traces/mifare/ntag216-empty.bin | Bin 0 -> 980 bytes traces/mifare/ntag216-empty.eml | 245 ++++++++++++++++++++++++++++++ traces/mifare/ntag216-empty.json | 250 +++++++++++++++++++++++++++++++ traces/mifare/s20-empty-key.bin | 2 + traces/mifare/s20-empty.bin | Bin 0 -> 320 bytes traces/mifare/s20-empty.eml | 20 +++ traces/mifare/s20-empty.json | 93 ++++++++++++ traces/mifare/s50-empty-key.bin | 1 + traces/mifare/s50-empty.bin | Bin 0 -> 1024 bytes 10 files changed, 612 insertions(+) create mode 100644 traces/mifare/ntag216-empty.bin create mode 100644 traces/mifare/ntag216-empty.eml create mode 100644 traces/mifare/ntag216-empty.json create mode 100644 traces/mifare/s20-empty-key.bin create mode 100644 traces/mifare/s20-empty.bin create mode 100644 traces/mifare/s20-empty.eml create mode 100644 traces/mifare/s20-empty.json create mode 100644 traces/mifare/s50-empty-key.bin create mode 100644 traces/mifare/s50-empty.bin diff --git a/CHANGELOG.md b/CHANGELOG.md index 43b0af889..a0f37fcab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added empty dump files with keys for easy simulation (@iceman1001) - Added `hf 15 view` - view ISO15693 dump files (@iceman1001) - Fixed `hf iclass config` - now loops correct in keyroll generation (@iceman1001) - Added `hf iclass sam` - skeleton command (@iceman1001) diff --git a/traces/mifare/ntag216-empty.bin b/traces/mifare/ntag216-empty.bin new file mode 100644 index 0000000000000000000000000000000000000000..5c8f6241853d15dd0f0cce2e902284fbf9bcf9ff GIT binary patch literal 980 zcmZQzVPRrq5N2jzV0b3K@}K(@(u;xzgGM0Iy*qrg3#P9LU7U6&FM1*(C8 xy(|%#doRtgZ20cM!0=EYmw}n#A53nP9u0xf5TIWO>}6qK_|L!!B!B>9Edcm|9p3-| literal 0 HcmV?d00001 diff --git a/traces/mifare/ntag216-empty.eml b/traces/mifare/ntag216-empty.eml new file mode 100644 index 000000000..27ff5ed6a --- /dev/null +++ b/traces/mifare/ntag216-empty.eml @@ -0,0 +1,245 @@ +00040402 +01001303 +000000E6 +1FA9FE47 +9435E4B6 +0280F7A2 +B44293DF +9127471B +3251BC89 +42F0941A +D71A1755 +00000000 +00000000 +000000BD +045869BD +D29C3980 +F7480000 +E1106D00 +0300FE00 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +00000000 +000000BD +040000FF +00050000 +FFFFFFFF +00000000 \ No newline at end of file diff --git a/traces/mifare/ntag216-empty.json b/traces/mifare/ntag216-empty.json new file mode 100644 index 000000000..5b113c409 --- /dev/null +++ b/traces/mifare/ntag216-empty.json @@ -0,0 +1,250 @@ +{ + "Created": "proxmark3", + "FileType": "mfu", + "Card": { + "UID": "045869D29C3980", + "Version": "0004040201001303", + "TBO_0": "0000", + "TBO_1": "00", + "Signature": "1FA9FE479435E4B60280F7A2B44293DF9127471B3251BC8942F0941AD71A1755", + "Counter0": "000000", + "Tearing0": "00", + "Counter1": "000000", + "Tearing1": "00", + "Counter2": "000000", + "Tearing2": "BD" + }, + "blocks": { + "0": "045869BD", + "1": "D29C3980", + "2": "F7480000", + "3": "E1106D00", + "4": "0300FE00", + "5": "00000000", + "6": "00000000", + "7": "00000000", + "8": "00000000", + "9": "00000000", + "10": "00000000", + "11": "00000000", + "12": "00000000", + "13": "00000000", + "14": "00000000", + "15": "00000000", + "16": "00000000", + "17": "00000000", + "18": "00000000", + "19": "00000000", + "20": "00000000", + "21": "00000000", + "22": "00000000", + "23": "00000000", + "24": "00000000", + "25": "00000000", + "26": "00000000", + "27": "00000000", + "28": "00000000", + "29": "00000000", + "30": "00000000", + "31": "00000000", + "32": "00000000", + "33": "00000000", + "34": "00000000", + "35": "00000000", + "36": "00000000", + "37": "00000000", + "38": "00000000", + "39": "00000000", + "40": "00000000", + "41": "00000000", + "42": "00000000", + "43": "00000000", + "44": "00000000", + "45": "00000000", + "46": "00000000", + "47": "00000000", + "48": "00000000", + "49": "00000000", + "50": "00000000", + "51": "00000000", + "52": "00000000", + "53": "00000000", + "54": "00000000", + "55": "00000000", + "56": "00000000", + "57": "00000000", + "58": "00000000", + "59": "00000000", + "60": "00000000", + "61": "00000000", + "62": "00000000", + "63": "00000000", + "64": "00000000", + "65": "00000000", + "66": "00000000", + "67": "00000000", + "68": "00000000", + "69": "00000000", + "70": "00000000", + "71": "00000000", + "72": "00000000", + "73": "00000000", + "74": "00000000", + "75": "00000000", + "76": "00000000", + "77": "00000000", + "78": "00000000", + "79": "00000000", + "80": "00000000", + "81": "00000000", + "82": "00000000", + "83": "00000000", + "84": "00000000", + "85": "00000000", + "86": "00000000", + "87": "00000000", + "88": "00000000", + "89": "00000000", + "90": "00000000", + "91": "00000000", + "92": "00000000", + "93": "00000000", + "94": "00000000", + "95": "00000000", + "96": "00000000", + "97": "00000000", + "98": "00000000", + "99": "00000000", + "100": "00000000", + "101": "00000000", + "102": "00000000", + "103": "00000000", + "104": "00000000", + "105": "00000000", + "106": "00000000", + "107": "00000000", + "108": "00000000", + "109": "00000000", + "110": "00000000", + "111": "00000000", + "112": "00000000", + "113": "00000000", + "114": "00000000", + "115": "00000000", + "116": "00000000", + "117": "00000000", + "118": "00000000", + "119": "00000000", + "120": "00000000", + "121": "00000000", + "122": "00000000", + "123": "00000000", + "124": "00000000", + "125": "00000000", + "126": "00000000", + "127": "00000000", + "128": "00000000", + "129": "00000000", + "130": "00000000", + "131": "00000000", + "132": "00000000", + "133": "00000000", + "134": "00000000", + "135": "00000000", + "136": "00000000", + "137": "00000000", + "138": "00000000", + "139": "00000000", + "140": "00000000", + "141": "00000000", + "142": "00000000", + "143": "00000000", + "144": "00000000", + "145": "00000000", + "146": "00000000", + "147": "00000000", + "148": "00000000", + "149": "00000000", + "150": "00000000", + "151": "00000000", + "152": "00000000", + "153": "00000000", + "154": "00000000", + "155": "00000000", + "156": "00000000", + "157": "00000000", + "158": "00000000", + "159": "00000000", + "160": "00000000", + "161": "00000000", + "162": "00000000", + "163": "00000000", + "164": "00000000", + "165": "00000000", + "166": "00000000", + "167": "00000000", + "168": "00000000", + "169": "00000000", + "170": "00000000", + "171": "00000000", + "172": "00000000", + "173": "00000000", + "174": "00000000", + "175": "00000000", + "176": "00000000", + "177": "00000000", + "178": "00000000", + "179": "00000000", + "180": "00000000", + "181": "00000000", + "182": "00000000", + "183": "00000000", + "184": "00000000", + "185": "00000000", + "186": "00000000", + "187": "00000000", + "188": "00000000", + "189": "00000000", + "190": "00000000", + "191": "00000000", + "192": "00000000", + "193": "00000000", + "194": "00000000", + "195": "00000000", + "196": "00000000", + "197": "00000000", + "198": "00000000", + "199": "00000000", + "200": "00000000", + "201": "00000000", + "202": "00000000", + "203": "00000000", + "204": "00000000", + "205": "00000000", + "206": "00000000", + "207": "00000000", + "208": "00000000", + "209": "00000000", + "210": "00000000", + "211": "00000000", + "212": "00000000", + "213": "00000000", + "214": "00000000", + "215": "00000000", + "216": "00000000", + "217": "00000000", + "218": "00000000", + "219": "00000000", + "220": "00000000", + "221": "00000000", + "222": "00000000", + "223": "00000000", + "224": "00000000", + "225": "00000000", + "226": "000000BD", + "227": "040000FF", + "228": "00050000", + "229": "FFFFFFFF", + "230": "00000000" + } +} \ No newline at end of file diff --git a/traces/mifare/s20-empty-key.bin b/traces/mifare/s20-empty-key.bin new file mode 100644 index 000000000..91a45f9b9 --- /dev/null +++ b/traces/mifare/s20-empty-key.bin @@ -0,0 +1,2 @@ +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ\ù™ ¢\ù™ ¢ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÐþë‰ +Ðþë‰ diff --git a/traces/mifare/s20-empty.bin b/traces/mifare/s20-empty.bin new file mode 100644 index 0000000000000000000000000000000000000000..224614f19140985db0f5ae757512fe4028024cec GIT binary patch literal 320 pcmb0&t$Mk;lZD}g8-oG^1A{ma;|2dAfW09T!oaH-i{x Date: Wed, 26 Jul 2023 23:33:05 +0200 Subject: [PATCH 120/299] color --- armsrc/BigBuf.c | 2 +- traces/mifare/ntag216-empty.bin | Bin 980 -> 0 bytes traces/mifare/ntag216-empty.eml | 245 -------------------------------- traces/mifare/s20-empty.bin | Bin 320 -> 0 bytes traces/mifare/s20-empty.eml | 20 --- 5 files changed, 1 insertion(+), 266 deletions(-) delete mode 100644 traces/mifare/ntag216-empty.bin delete mode 100644 traces/mifare/ntag216-empty.eml delete mode 100644 traces/mifare/s20-empty.bin delete mode 100644 traces/mifare/s20-empty.eml diff --git a/armsrc/BigBuf.c b/armsrc/BigBuf.c index d685f0388..6cd3a29f7 100644 --- a/armsrc/BigBuf.c +++ b/armsrc/BigBuf.c @@ -312,7 +312,7 @@ uint8_t emlSet(uint8_t *data, uint32_t offset, uint32_t length) { memcpy(mem + offset, data, length); return 0; } - Dbprintf("Error, trying to set memory outside of bounds! %d > %d", (offset + length), CARD_MEMORY_SIZE); + Dbprintf("Error, trying to set memory outside of bounds! " _RED_("%d") " > %d", (offset + length), CARD_MEMORY_SIZE); return 1; } diff --git a/traces/mifare/ntag216-empty.bin b/traces/mifare/ntag216-empty.bin deleted file mode 100644 index 5c8f6241853d15dd0f0cce2e902284fbf9bcf9ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 980 zcmZQzVPRrq5N2jzV0b3K@}K(@(u;xzgGM0Iy*qrg3#P9LU7U6&FM1*(C8 xy(|%#doRtgZ20cM!0=EYmw}n#A53nP9u0xf5TIWO>}6qK_|L!!B!B>9Edcm|9p3-| diff --git a/traces/mifare/ntag216-empty.eml b/traces/mifare/ntag216-empty.eml deleted file mode 100644 index 27ff5ed6a..000000000 --- a/traces/mifare/ntag216-empty.eml +++ /dev/null @@ -1,245 +0,0 @@ -00040402 -01001303 -000000E6 -1FA9FE47 -9435E4B6 -0280F7A2 -B44293DF -9127471B -3251BC89 -42F0941A -D71A1755 -00000000 -00000000 -000000BD -045869BD -D29C3980 -F7480000 -E1106D00 -0300FE00 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -00000000 -000000BD -040000FF -00050000 -FFFFFFFF -00000000 \ No newline at end of file diff --git a/traces/mifare/s20-empty.bin b/traces/mifare/s20-empty.bin deleted file mode 100644 index 224614f19140985db0f5ae757512fe4028024cec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320 pcmb0&t$Mk;lZD}g8-oG^1A{ma;|2dAfW09T!oaH-i{x Date: Wed, 26 Jul 2023 23:39:27 +0200 Subject: [PATCH 121/299] improved the eload upload times by using large chunks. Quite much faster now.\nAddapted the dots and text for eload / sim across the client --- armsrc/Standalone/hf_legicsim.c | 6 +- armsrc/Standalone/hf_mfcsim.c | 3 +- armsrc/mifareutil.c | 11 ++-- client/src/cmdhf15.c | 4 +- client/src/cmdhficlass.c | 23 +++++-- client/src/cmdhfjooki.c | 23 ++++--- client/src/cmdhflegic.c | 10 ++- client/src/cmdhfmf.c | 107 +++++++++++++++++++------------- client/src/cmdhfmfu.c | 2 + client/src/cmdlfem4x50.c | 11 +++- 10 files changed, 133 insertions(+), 67 deletions(-) diff --git a/armsrc/Standalone/hf_legicsim.c b/armsrc/Standalone/hf_legicsim.c index 7765672b0..849d2be3b 100644 --- a/armsrc/Standalone/hf_legicsim.c +++ b/armsrc/Standalone/hf_legicsim.c @@ -68,8 +68,10 @@ static bool fill_eml_from_file(char *dumpfile) { } //read and load dump file BigBuf_Clear(); - if (g_dbglevel >= DBG_INFO) - Dbprintf(_YELLOW_("Found dump file %s. Uploading to emulator memory..."), dumpfile); + if (g_dbglevel >= DBG_INFO) { + Dbprintf("Found dump file... `" _YELLOW_("%s") "`", dumpfile); + Dbprintf("Uploading to emulator memory..."); + } uint8_t *emCARD = BigBuf_get_EM_addr(); rdv40_spiffs_read_as_filetype(dumpfile, emCARD, size, RDV40_SPIFFS_SAFETY_SAFE); return true; diff --git a/armsrc/Standalone/hf_mfcsim.c b/armsrc/Standalone/hf_mfcsim.c index 86ff62f6c..bba01d472 100644 --- a/armsrc/Standalone/hf_mfcsim.c +++ b/armsrc/Standalone/hf_mfcsim.c @@ -71,7 +71,8 @@ static bool fill_eml_from_file(char *dumpfile) { //read and load dump file if (g_dbglevel >= DBG_INFO) { - Dbprintf(_YELLOW_("Found dump file %s. Uploading to emulator memory..."), dumpfile); + Dbprintf("Found dump file... `" _YELLOW_("%s") "`", dumpfile); + Dbprintf("Uploading to emulator memory..."); } emlClearMem(); diff --git a/armsrc/mifareutil.c b/armsrc/mifareutil.c index 25744aa96..c2d6f8246 100644 --- a/armsrc/mifareutil.c +++ b/armsrc/mifareutil.c @@ -622,12 +622,15 @@ uint8_t FirstBlockOfSector(uint8_t sectorNo) { // work with emulator memory void emlSetMem(uint8_t *data, int blockNum, int blocksCount) { - emlSetMem_xt(data, blockNum, blocksCount, 16); + uint32_t offset = blockNum * 16; + uint32_t len = blocksCount * 16; + emlSet(data, offset, len); } -void emlSetMem_xt(uint8_t *data, int blockNum, int blocksCount, int blockBtWidth) { - uint8_t *emCARD = BigBuf_get_EM_addr(); - memcpy(emCARD + blockNum * blockBtWidth, data, blocksCount * blockBtWidth); +void emlSetMem_xt(uint8_t *data, int blockNum, int blocksCount, int block_width) { + uint32_t offset = blockNum * block_width; + uint32_t len = blocksCount * block_width; + emlSet(data, offset, len); } void emlGetMem(uint8_t *data, int blockNum, int blocksCount) { diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index 0747cedec..a5db7f0e7 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -1133,6 +1133,7 @@ static int CmdHF15ELoad(const char *Cmd) { } free(data); PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(SUCCESS, "uploaded " _YELLOW_("%d") " bytes to emulator memory", offset); PrintAndLogEx(HINT, "You are ready to simulate. See " _YELLOW_("`hf 15 sim -h`")); PrintAndLogEx(INFO, "Done!"); @@ -1288,12 +1289,13 @@ static int CmdHF15Sim(const char *Cmd) { CLIParserFree(ctx); PrintAndLogEx(SUCCESS, "Starting simulating UID " _YELLOW_("%s"), iso15693_sprintUID(NULL, payload.uid)); - PrintAndLogEx(INFO, "press " _YELLOW_("`Pm3 button`") " to cancel"); + PrintAndLogEx(INFO, "Press " _YELLOW_("`pm3-button`") " to abort simulation"); PacketResponseNG resp; clearCommandBuffer(); SendCommandNG(CMD_HF_ISO15693_SIMULATE, (uint8_t *)&payload, sizeof(payload)); WaitForResponse(CMD_HF_ISO15693_SIMULATE, &resp); + PrintAndLogEx(INFO, "Done!"); return PM3_SUCCESS; } diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 1a96fbacb..5254c5e03 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -144,25 +144,32 @@ static void iclass_upload_emul(uint8_t *d, uint16_t n, uint16_t *bytes_sent) { *bytes_sent = 0; uint16_t bytes_remaining = n; + PrintAndLogEx(INFO, "Uploading to emulator memory"); + PrintAndLogEx(INFO, "." NOLF); + while (bytes_remaining > 0) { uint32_t bytes_in_packet = MIN(PM3_CMD_DATA_SIZE - 4, bytes_remaining); if (bytes_in_packet == bytes_remaining) { // Disable fast mode on last packet g_conn.block_after_ACK = false; } - clearCommandBuffer(); struct p *payload = calloc(4 + bytes_in_packet, sizeof(uint8_t)); payload->offset = *bytes_sent; payload->len = bytes_in_packet; memcpy(payload->data, d + *bytes_sent, bytes_in_packet); + clearCommandBuffer(); SendCommandNG(CMD_HF_ICLASS_EML_MEMSET, (uint8_t *)payload, 4 + bytes_in_packet); free(payload); bytes_remaining -= bytes_in_packet; *bytes_sent += bytes_in_packet; + + PrintAndLogEx(NORMAL, "." NOLF); + fflush(stdout); } + PrintAndLogEx(NORMAL, ""); } static const char *card_types[] = { @@ -1011,6 +1018,7 @@ static int CmdHFiClassELoad(const char *Cmd) { arg_param_begin, arg_str1("f", "file", "", "filename of dump (bin/eml/json)"), arg_lit0("m", "mem", "use RDV4 spiffs"), + arg_lit0("v", "verbose", "verbose output"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -1026,6 +1034,7 @@ static int CmdHFiClassELoad(const char *Cmd) { } bool use_spiffs = arg_get_lit(ctx, 2); + bool verbose = arg_get_lit(ctx, 3); CLIParserFree(ctx); // use RDV4 spiffs @@ -1073,15 +1082,21 @@ static int CmdHFiClassELoad(const char *Cmd) { } else { dump = newdump; } + + if (verbose) { + print_picopass_header((picopass_hdr_t *) dump); + print_picopass_info((picopass_hdr_t *) dump); + } - print_picopass_header((picopass_hdr_t *) dump); - print_picopass_info((picopass_hdr_t *) dump); + PrintAndLogEx(NORMAL, ""); //Send to device uint16_t bytes_sent = 0; iclass_upload_emul(dump, bytes_read, &bytes_sent); free(dump); - PrintAndLogEx(SUCCESS, "sent %u bytes of data to device emulator memory", bytes_sent); + PrintAndLogEx(SUCCESS, "uploaded " _YELLOW_("%d") " bytes to emulator memory", bytes_sent); + PrintAndLogEx(HINT, "You are ready to simulate. See " _YELLOW_("`hf iclass sim -h`")); + PrintAndLogEx(INFO, "Done!"); return PM3_SUCCESS; } diff --git a/client/src/cmdhfjooki.c b/client/src/cmdhfjooki.c index 025fdf5c4..daf8530b0 100644 --- a/client/src/cmdhfjooki.c +++ b/client/src/cmdhfjooki.c @@ -525,29 +525,36 @@ static int CmdHF14AJookiSim(const char *Cmd) { // upload to emulator memory PrintAndLogEx(INFO, "Uploading to emulator memory"); - PrintAndLogEx(INFO, "." NOLF); + // fast push mode g_conn.block_after_ACK = true; uint8_t blockwidth = 4, counter = 0, blockno = 0; + + // 12 is the size of the struct the fct mfEmlSetMem_xt uses to transfer to device + uint16_t max_avail_blocks = ((PM3_CMD_DATA_SIZE - 12) / blockwidth) * blockwidth; + while (datalen) { if (datalen == blockwidth) { // Disable fast mode on last packet g_conn.block_after_ACK = false; } + uint16_t chunk_size = MIN(max_avail_blocks, datalen); + uint16_t blocks_to_send = chunk_size / blockwidth; - if (mfEmlSetMem_xt(data + counter, blockno, 1, blockwidth) != PM3_SUCCESS) { + if (mfEmlSetMem_xt(data + counter, blockno, blocks_to_send, blockwidth) != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Cant set emul block: %3d", blockno); free(data); return PM3_ESOFT; } + blockno += blocks_to_send; + counter += chunk_size; + datalen -= chunk_size; PrintAndLogEx(NORMAL, "." NOLF); fflush(stdout); - blockno++; - counter += blockwidth; - datalen -= blockwidth; } - PrintAndLogEx(NORMAL, "\n"); + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(SUCCESS, "uploaded " _YELLOW_("%d") " bytes to emulator memory", counter); struct { uint8_t tagtype; @@ -566,6 +573,8 @@ static int CmdHF14AJookiSim(const char *Cmd) { SendCommandNG(CMD_HF_ISO14443A_SIMULATE, (uint8_t *)&payload, sizeof(payload)); PacketResponseNG resp; + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(SUCCESS, "Starting simulating"); PrintAndLogEx(INFO, "Press " _GREEN_("") " or pm3-button to abort simulation"); for (;;) { if (kbd_enter_pressed()) { @@ -581,8 +590,8 @@ static int CmdHF14AJookiSim(const char *Cmd) { break; } free(data); - PrintAndLogEx(INFO, "Done"); PrintAndLogEx(HINT, "Try `" _YELLOW_("hf 14a list") "` to view trace log"); + PrintAndLogEx(INFO, "Done!"); return PM3_SUCCESS; } diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index 2398aa8dc..7d9cd8e88 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -805,6 +805,9 @@ void legic_chk_iv(uint32_t *iv) { void legic_seteml(uint8_t *src, uint32_t offset, uint32_t numofbytes) { + PrintAndLogEx(INFO, "Uploading to emulator memory"); + PrintAndLogEx(INFO, "." NOLF); + // fast push mode g_conn.block_after_ACK = true; for (size_t i = offset; i < numofbytes; i += LEGIC_PACKET_SIZE) { @@ -823,7 +826,11 @@ void legic_seteml(uint8_t *src, uint32_t offset, uint32_t numofbytes) { clearCommandBuffer(); SendCommandNG(CMD_HF_LEGIC_ESET, (uint8_t *)payload, sizeof(legic_packet_t) + len); free(payload); + PrintAndLogEx(NORMAL, "." NOLF); + fflush(stdout); } + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(SUCCESS, "uploaded " _YELLOW_("%d") " bytes to emulator memory", numofbytes); } static int CmdLegicReader(const char *Cmd) { @@ -1100,10 +1107,11 @@ static int CmdLegicELoad(const char *Cmd) { legic_xor(dump, bytes_read); } - PrintAndLogEx(SUCCESS, "Uploading to emulator memory"); legic_seteml(dump, 0, bytes_read); free(dump); + + PrintAndLogEx(HINT, "You are ready to simulate. See " _YELLOW_("`hf legic sim -h`")); PrintAndLogEx(SUCCESS, "Done!"); return PM3_SUCCESS; } diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 22d7a49fd..a8cc3c3ad 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -4264,6 +4264,7 @@ int CmdHF14AMfELoad(const char *Cmd) { arg_lit0(NULL, "ul", "MIFARE Ultralight family"), arg_lit0("m", "mem", "use RDV4 spiffs"), arg_int0("q", "qty", "", "manually set number of blocks (overrides)"), + arg_lit0("v", "verbose", "verbose output"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -4280,7 +4281,7 @@ int CmdHF14AMfELoad(const char *Cmd) { bool use_spiffs = arg_get_lit(ctx, 7); int numblks = arg_get_int_def(ctx, 8, -1); - + bool verbose = arg_get_lit(ctx, 9); CLIParserFree(ctx); // validations @@ -4372,8 +4373,10 @@ int CmdHF14AMfELoad(const char *Cmd) { return res; } - mfu_dump_t *mfu_dump = (mfu_dump_t *)data; - printMFUdumpEx(mfu_dump, mfu_dump->pages + 1, 0); + if (verbose) { + mfu_dump_t *mfu_dump = (mfu_dump_t *)data; + printMFUdumpEx(mfu_dump, mfu_dump->pages + 1, 0); + } // update expected blocks to match converted data. block_cnt = bytes_read / MFU_BLOCK_SIZE; @@ -4389,23 +4392,28 @@ int CmdHF14AMfELoad(const char *Cmd) { size_t offset = 0; int cnt = 0; + // 12 is the size of the struct the fct mfEmlSetMem_xt uses to transfer to device + uint16_t max_avail_blocks = ((PM3_CMD_DATA_SIZE - 12) / block_width) * block_width; + while (bytes_read && cnt < block_cnt) { if (bytes_read == block_width) { // Disable fast mode on last packet g_conn.block_after_ACK = false; } - if (mfEmlSetMem_xt(data + offset, cnt, 1, block_width) != PM3_SUCCESS) { + uint16_t chunk_size = MIN(max_avail_blocks, bytes_read); + uint16_t blocks_to_send = chunk_size / block_width; + + if (mfEmlSetMem_xt(data + offset, cnt, blocks_to_send, block_width) != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Can't set emulator mem at block: %3d", cnt); free(data); return PM3_ESOFT; } + cnt += blocks_to_send; + offset += chunk_size; + bytes_read -= chunk_size; PrintAndLogEx(NORMAL, "." NOLF); fflush(stdout); - - cnt++; - offset += block_width; - bytes_read -= block_width; } free(data); PrintAndLogEx(NORMAL, ""); @@ -4424,8 +4432,8 @@ int CmdHF14AMfELoad(const char *Cmd) { PrintAndLogEx(WARNING, "Error, file content, Only loaded %d blocks, must be %d blocks into emulator memory", cnt, block_cnt); return PM3_SUCCESS; } + PrintAndLogEx(INFO, "Done!"); } - PrintAndLogEx(INFO, "Done!"); return PM3_SUCCESS; } @@ -5327,6 +5335,10 @@ static int CmdHF14AMfCSave(const char *Cmd) { if (mfEmlSetMem(dump + (i * MFBLOCK_SIZE), i, 5) != PM3_SUCCESS) { PrintAndLogEx(WARNING, "Can't set emul block: " _YELLOW_("%d"), i); } + if (i % 64 == 0) { + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "" NOLF) ; + } PrintAndLogEx(NORMAL, "." NOLF); fflush(stdout); } @@ -7836,14 +7848,6 @@ static int CmdHF14AGen4View(const char *Cmd) { for (uint16_t i = 0; i < block_cnt; i++) { - // 4k READs can be long, so we split status each 64 blocks. - if (i % 64 == 0) { - PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "" NOLF) ; - } - PrintAndLogEx(NORMAL, "." NOLF); - fflush(stdout); - uint8_t flags = 0 ; if (i == 0) flags |= MAGIC_INIT ; if (i + 1 == block_cnt) flags |= MAGIC_OFF ; @@ -7855,6 +7859,14 @@ static int CmdHF14AGen4View(const char *Cmd) { free(dump); return PM3_ESOFT; } + + PrintAndLogEx(NORMAL, "." NOLF); + fflush(stdout); + // 4k READs can be long, so we split status each 64 blocks. + if (i % 64 == 0) { + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "" NOLF) ; + } } PrintAndLogEx(NORMAL, ""); @@ -7939,8 +7951,6 @@ static int CmdHF14AGen4Save(const char *Cmd) { PrintAndLogEx(WARNING, "Please specify a MIFARE Type"); return PM3_EINVARG; } - PrintAndLogEx(SUCCESS, "Dumping magic gen4 GTU MIFARE Classic " _GREEN_("%s") " card memory", s); - PrintAndLogEx(INFO, "." NOLF); // Select card to get UID/UIDLEN information clearCommandBuffer(); @@ -7975,63 +7985,72 @@ static int CmdHF14AGen4Save(const char *Cmd) { return PM3_EMALLOC; } + PrintAndLogEx(SUCCESS, "Dumping magic gen4 GTU MIFARE Classic " _GREEN_("%s") " card memory", s); + PrintAndLogEx(INFO, "." NOLF); + for (uint16_t i = 0; i < block_cnt; i++) { - - // 4k READs can be long, so we split status each 64 blocks. - if (i % 64 == 0) { - PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "" NOLF) ; - } - PrintAndLogEx(NORMAL, "." NOLF); - fflush(stdout); - uint8_t flags = 0 ; - if (i == 0) flags |= MAGIC_INIT ; - if (i + 1 == block_cnt) flags |= MAGIC_OFF ; + if (i == 0) { + flags |= MAGIC_INIT; + } + if (i + 1 == block_cnt) { + flags |= MAGIC_OFF; + } int res = mfG4GetBlock(pwd, i, dump + (i * MFBLOCK_SIZE), flags); if (res != PM3_SUCCESS) { + PrintAndLogEx(NORMAL,""); PrintAndLogEx(WARNING, "Can't get magic card block: %u. error=%d", i, res); PrintAndLogEx(HINT, "Verify your card size, and try again or try another tag position"); free(dump); return PM3_ESOFT; } + + + PrintAndLogEx(NORMAL, "." NOLF); + fflush(stdout); + // 4k READs can be long, so we split status each 64 blocks. + if (i % 64 == 0 && i != 0) { + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "" NOLF) ; + } } PrintAndLogEx(NORMAL, ""); if (fill_emulator) { - PrintAndLogEx(INFO, "uploading to emulator memory" NOLF); + PrintAndLogEx(INFO, "uploading to emulator memory"); + PrintAndLogEx(INFO, "." NOLF); // fast push mode g_conn.block_after_ACK = true; size_t offset = 0; - int cnt = 0; + int cnt = 0; uint16_t bytes_left = bytes ; - while (bytes_left > 0 && cnt < block_cnt) { - // 4k writes can be long, so we split status each 64 blocks. - if (cnt % 64 == 0) { - PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "" NOLF) ; - } - PrintAndLogEx(NORMAL, "." NOLF); - fflush(stdout); + // 12 is the size of the struct the fct mfEmlSetMem_xt uses to transfer to device + uint16_t max_avail_blocks = ((PM3_CMD_DATA_SIZE - 12) / MFBLOCK_SIZE) * MFBLOCK_SIZE; + while (bytes_left > 0 && cnt < block_cnt) { if (bytes_left == MFBLOCK_SIZE) { // Disable fast mode on last packet g_conn.block_after_ACK = false; } - if (mfEmlSetMem_xt(dump + offset, cnt, 1, MFBLOCK_SIZE) != PM3_SUCCESS) { + uint16_t chunk_size = MIN(max_avail_blocks, bytes_left); + uint16_t blocks_to_send = chunk_size / MFBLOCK_SIZE; + + if (mfEmlSetMem_xt(dump + offset, cnt, blocks_to_send, MFBLOCK_SIZE) != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Can't set emulator mem at block: %3d", cnt); free(dump); return PM3_ESOFT; } - cnt++; - offset += MFBLOCK_SIZE; - bytes_left -= MFBLOCK_SIZE; + cnt += blocks_to_send; + offset += chunk_size; + bytes_left -= chunk_size; + PrintAndLogEx(NORMAL, "." NOLF); + fflush(stdout); } PrintAndLogEx(NORMAL, ""); diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 5680c33ce..7f1722cd4 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -3067,6 +3067,7 @@ static int CmdHF14AMfUeLoad(const char *Cmd) { arg_param_begin, arg_str1("f", "file", "", "Filename of dump"), arg_int0("q", "qty", "", "Number of blocks to load from eml file"), + arg_lit0("v", "verbose", "verbose output"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -3083,6 +3084,7 @@ static int CmdHF14AMfUeLoad(const char *Cmd) { free(nc); PrintAndLogEx(HINT, "Try " _YELLOW_("`hf mfu sim -t 7`") " to simulate an Amiibo."); + PrintAndLogEx(INFO, "Done!"); return res; } diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index 07b1f91b0..647b6d082 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -165,6 +165,8 @@ static int em4x50_load_file(const char *filename, uint8_t *data, size_t data_len static void em4x50_seteml(uint8_t *src, uint32_t offset, uint32_t numofbytes) { + PrintAndLogEx(INFO, "uploading to emulator memory"); + PrintAndLogEx(INFO, "." NOLF); // fast push mode g_conn.block_after_ACK = true; for (size_t i = offset; i < numofbytes; i += PM3_CMD_DATA_SIZE) { @@ -176,7 +178,11 @@ static void em4x50_seteml(uint8_t *src, uint32_t offset, uint32_t numofbytes) { } clearCommandBuffer(); SendCommandOLD(CMD_LF_EM4X50_ESET, i, len, 0, src + i, len); + PrintAndLogEx(NORMAL, "." NOLF); + fflush(stdout); } + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(SUCCESS, "uploaded " _YELLOW_("%d") " bytes to emulator memory", numofbytes); } int CmdEM4x50ELoad(const char *Cmd) { @@ -208,9 +214,8 @@ int CmdEM4x50ELoad(const char *Cmd) { } // upload to emulator memory - PrintAndLogEx(INFO, "Uploading to emulator memory contents of " _YELLOW_("%s"), filename); em4x50_seteml(data, 0, DUMP_FILESIZE); - + PrintAndLogEx(HINT, "You are ready to simulate. See " _YELLOW_("`lf em 4x50 sim -h`")); PrintAndLogEx(INFO, "Done!"); return PM3_SUCCESS; } @@ -1221,7 +1226,7 @@ int CmdEM4x50Sim(const char *Cmd) { } int status = PM3_EFAILED; - PrintAndLogEx(INFO, "Simulating data from emulator memory"); + PrintAndLogEx(INFO, "Starting simulating"); clearCommandBuffer(); SendCommandNG(CMD_LF_EM4X50_SIM, (uint8_t *)&password, sizeof(password)); From fc3a518f2839f4e185dd2bdf00f3b2183b0d2b0b Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 26 Jul 2023 23:47:55 +0200 Subject: [PATCH 122/299] There is a race condition when we go from iclass commands to mf command. Especially noticable when eload large files where we used to spam the device with usb packages.\ntry iclass eload, then mf eload, and you see the client hang. With this change we trigger a preload of the fpga image before we start uploading to the device. Current places I could trigger this bug was in eload and gsave. With this patch only the first call takes some time if fpga image must be loaded. The following goes fast.\n\n if you find that the client hangs when going between, this could be the root cause. --- CHANGELOG.md | 3 +++ armsrc/appmain.c | 9 +++++++ client/src/cmdhfmf.c | 9 +++++++ client/src/cmdhw.c | 17 ++++++++++++++ client/src/cmdhw.h | 2 +- client/src/mifare/mifarehost.c | 43 ++++++++++++++++++---------------- include/pm3_cmd.h | 2 ++ 7 files changed, 64 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a0f37fcab..ce56eecda 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,9 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Removed some empty dump files (@iceman1001) + - Added a fct to choose fpga mode (@iceman1001) + - Changed `hf mf eload/gsave` - fast uploading to emulator memory (@iceman1001) - Added empty dump files with keys for easy simulation (@iceman1001) - Added `hf 15 view` - view ISO15693 dump files (@iceman1001) - Fixed `hf iclass config` - now loops correct in keyroll generation (@iceman1001) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 6cdff3eb6..ced039702 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -783,6 +783,15 @@ static void PacketReceived(PacketCommandNG *packet) { g_reply_via_usb = false; break; } + case CMD_SET_FPGAMODE: { + uint8_t mode = packet->data.asBytes[0]; + if (mode >= FPGA_BITSTREAM_LF && mode <= FPGA_BITSTREAM_HF_15) { + FpgaDownloadAndGo(mode); + reply_ng(CMD_SET_FPGAMODE, PM3_SUCCESS, NULL, 0); + } + reply_ng(CMD_SET_FPGAMODE, PM3_EINVARG, NULL, 0); + break; + } // emulator case CMD_SET_DBGMODE: { g_dbglevel = packet->data.asBytes[0]; diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index a8cc3c3ad..b32efa2cb 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -36,6 +36,7 @@ #include "crypto/libpcrypto.h" #include "wiegand_formats.h" #include "wiegand_formatutils.h" +#include "cmdhw.h" // set_fpga_mode static int CmdHelp(const char *Cmd); @@ -4350,6 +4351,10 @@ int CmdHF14AMfELoad(const char *Cmd) { return PM3_SUCCESS; } + // ICEMAN: bug. if device has been using ICLASS commands, + // the device needs to load the HF fpga image. It takes 1.5 second. + set_fpga_mode(2); + uint8_t *data = NULL; size_t bytes_read = 0; int res = pm3_load_dump(filename, (void **)&data, &bytes_read, (block_width * block_cnt + hdr_len)); @@ -7919,6 +7924,10 @@ static int CmdHF14AGen4Save(const char *Cmd) { bool fill_emulator = arg_get_lit(ctx, 7); CLIParserFree(ctx); + // ICEMAN: bug. if device has been using ICLASS commands, + // the device needs to load the HF fpga image. It takes 1.5 second. + set_fpga_mode(2); + // validations if (pwd_len != 4 && pwd_len != 0) { PrintAndLogEx(FAILED, "Must specify 4 bytes, got " _YELLOW_("%u"), pwd_len); diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index 57bba66aa..c268344df 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -1083,6 +1083,23 @@ static int CmdBreak(const char *Cmd) { return PM3_SUCCESS; } +int set_fpga_mode(uint8_t mode) { + if (mode < 1 || mode > 4) { + return PM3_EINVARG; + } + uint8_t d[] = {mode}; + clearCommandBuffer(); + SendCommandNG(CMD_SET_FPGAMODE, d, sizeof(d)); + PacketResponseNG resp; + if (WaitForResponseTimeout(CMD_SET_FPGAMODE, &resp, 1000) == false) { + PrintAndLogEx(WARNING, "command execution timeout"); + return PM3_ETIMEOUT; + } + if (resp.status != PM3_SUCCESS) { + PrintAndLogEx(ERR, "failed to set FPGA mode"); + } + return resp.status; +} static command_t CommandTable[] = { {"-------------", CmdHelp, AlwaysAvailable, "----------------------- " _CYAN_("Hardware") " -----------------------"}, diff --git a/client/src/cmdhw.h b/client/src/cmdhw.h index 4756a7cb0..a2b4f96e1 100644 --- a/client/src/cmdhw.h +++ b/client/src/cmdhw.h @@ -27,5 +27,5 @@ int CmdHW(const char *Cmd); int handle_tearoff(tearoff_params_t *params, bool verbose); void pm3_version(bool verbose, bool oneliner); void pm3_version_short(void); - +int set_fpga_mode(uint8_t mode); #endif diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index bdf4ec7f1..1576b03e5 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -873,13 +873,13 @@ out: int mfReadSector(uint8_t sectorNo, uint8_t keyType, const uint8_t *key, uint8_t *data) { clearCommandBuffer(); - SendCommandMIX(CMD_HF_MIFARE_READSC, sectorNo, keyType, 0, (uint8_t *)key, 6); + SendCommandMIX(CMD_HF_MIFARE_READSC, sectorNo, keyType, 0, (uint8_t *)key, MIFARE_KEY_SIZE); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { - uint8_t isOK = resp.oldarg[0] & 0xff; + uint8_t isOK = resp.oldarg[0] & 0xFF; if (isOK) { - memcpy(data, resp.data.asBytes, mfNumBlocksPerSector(sectorNo) * 16); + memcpy(data, resp.data.asBytes, mfNumBlocksPerSector(sectorNo) * MFBLOCK_SIZE); return PM3_SUCCESS; } else { return PM3_EUNDEF; @@ -902,7 +902,7 @@ int mfReadBlock(uint8_t blockNo, uint8_t keyType, const uint8_t *key, uint8_t *d SendCommandNG(CMD_HF_MIFARE_READBL, (uint8_t *)&payload, sizeof(mf_readblock_t)); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_HF_MIFARE_READBL, &resp, 1500)) { - memcpy(data, resp.data.asBytes, 16); + memcpy(data, resp.data.asBytes, MFBLOCK_SIZE); if (resp.status != PM3_SUCCESS) { PrintAndLogEx(DEBUG, "failed reading block"); @@ -918,7 +918,7 @@ int mfReadBlock(uint8_t blockNo, uint8_t keyType, const uint8_t *key, uint8_t *d // EMULATOR int mfEmlGetMem(uint8_t *data, int blockNum, int blocksCount) { - size_t size = blocksCount * 16; + size_t size = blocksCount * MFBLOCK_SIZE; if (size > PM3_CMD_DATA_SIZE) { return PM3_ESOFT; } @@ -982,7 +982,7 @@ int mfEmlSetMem_xt(uint8_t *data, int blockNum, int blocksCount, int blockBtWidt int mfCSetUID(uint8_t *uid, uint8_t uidlen, const uint8_t *atqa, const uint8_t *sak, uint8_t *old_uid, uint8_t *verifed_uid, uint8_t wipecard) { uint8_t params = MAGIC_SINGLE; - uint8_t block0[16]; + uint8_t block0[MFBLOCK_SIZE]; memset(block0, 0x00, sizeof(block0)); int res = mfCGetBlock(0, block0, params); @@ -1045,11 +1045,11 @@ int mfCSetUID(uint8_t *uid, uint8_t uidlen, const uint8_t *atqa, const uint8_t * } int mfCWipe(uint8_t *uid, const uint8_t *atqa, const uint8_t *sak) { - uint8_t block0[16] = {0x00, 0x56, 0x78, 0xBB, 0x95, 0x08, 0x04, 0x00, 0x02, 0xB2, 0x1E, 0x24, 0x23, 0x27, 0x1E, 0x1D}; - // uint8_t block0[16] = {0x04, 0x03, 0x02, 0x01, 0x04, 0x08, 0x04, 0x00, 0x64, 0xB9, 0x95, 0x11, 0x4D, 0x20, 0x42, 0x09}; - uint8_t blockD[16] = {0x00}; + uint8_t block0[MFBLOCK_SIZE] = {0x00, 0x56, 0x78, 0xBB, 0x95, 0x08, 0x04, 0x00, 0x02, 0xB2, 0x1E, 0x24, 0x23, 0x27, 0x1E, 0x1D}; + // uint8_t block0[MFBLOCK_SIZE] = {0x04, 0x03, 0x02, 0x01, 0x04, 0x08, 0x04, 0x00, 0x64, 0xB9, 0x95, 0x11, 0x4D, 0x20, 0x42, 0x09}; + uint8_t blockD[MFBLOCK_SIZE] = {0x00}; // default transport ACL - uint8_t blockK[16] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x80, 0x69, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; + uint8_t blockK[MFBLOCK_SIZE] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x80, 0x69, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; uint8_t params = MAGIC_SINGLE; if (uid != NULL) { @@ -1095,16 +1095,18 @@ int mfCWipe(uint8_t *uid, const uint8_t *atqa, const uint8_t *sak) { } int mfCSetBlock(uint8_t blockNo, uint8_t *data, uint8_t *uid, uint8_t params) { - clearCommandBuffer(); - SendCommandMIX(CMD_HF_MIFARE_CSETBL, params, blockNo, 0, data, 16); + SendCommandMIX(CMD_HF_MIFARE_CSETBL, params, blockNo, 0, data, MFBLOCK_SIZE); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 3500)) { uint8_t isOK = resp.oldarg[0] & 0xff; - if (uid != NULL) + if (uid != NULL) { memcpy(uid, resp.data.asBytes, 4); - if (!isOK) + } + + if (!isOK) { return PM3_EUNDEF; + } } else { PrintAndLogEx(WARNING, "command execute timeout"); return PM3_ETIMEOUT; @@ -1118,9 +1120,10 @@ int mfCGetBlock(uint8_t blockNo, uint8_t *data, uint8_t params) { PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { uint8_t isOK = resp.oldarg[0] & 0xff; - if (!isOK) + if (!isOK) { return PM3_EUNDEF; - memcpy(data, resp.data.asBytes, 16); + } + memcpy(data, resp.data.asBytes, MFBLOCK_SIZE); } else { PrintAndLogEx(WARNING, "command execute timeout"); return PM3_ETIMEOUT; @@ -1145,11 +1148,11 @@ int mfGen3UID(uint8_t *uid, uint8_t uidlen, uint8_t *oldUid) { int mfGen3Block(uint8_t *block, int blockLen, uint8_t *newBlock) { clearCommandBuffer(); - SendCommandMIX(CMD_HF_MIFARE_GEN3BLK, blockLen, 0, 0, block, 16); + SendCommandMIX(CMD_HF_MIFARE_GEN3BLK, blockLen, 0, 0, block, MFBLOCK_SIZE); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_HF_MIFARE_GEN3BLK, &resp, 3500)) { if (resp.status == PM3_SUCCESS && newBlock) { - memcpy(newBlock, resp.data.asBytes, 16); + memcpy(newBlock, resp.data.asBytes, MFBLOCK_SIZE); } return resp.status; } else { @@ -1187,7 +1190,7 @@ int mfG4GetBlock(uint8_t *pwd, uint8_t blockno, uint8_t *data, uint8_t workFlags if (resp.status != PM3_SUCCESS) { return PM3_EUNDEF; } - memcpy(data, resp.data.asBytes, 16); + memcpy(data, resp.data.asBytes, MFBLOCK_SIZE); } else { PrintAndLogEx(WARNING, "command execute timeout"); return PM3_ETIMEOUT; @@ -1199,7 +1202,7 @@ int mfG4SetBlock(uint8_t *pwd, uint8_t blockno, uint8_t *data, uint8_t workFlags struct p { uint8_t blockno; uint8_t pwd[4]; - uint8_t data[16]; + uint8_t data[MFBLOCK_SIZE]; uint8_t workFlags; } PACKED payload; payload.blockno = blockno; diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index 13dca3b6c..a96a16c05 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -416,6 +416,8 @@ typedef struct { #define CMD_SPIFFS_WIPE 0x013A +#define CMD_SET_FPGAMODE 0x013F + // This take a +0x2000 as they are high level helper and special functions // As the others, they may have safety level argument if it makes sense #define CMD_SPIFFS_PRINT_TREE 0x2130 From 123ef14667a7df31b58fc87af8dee4e0d68f5b9c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 26 Jul 2023 23:50:12 +0200 Subject: [PATCH 123/299] style --- armsrc/mifarecmd.c | 8 +- client/src/cmdhf15.c | 8 +- client/src/cmdhficlass.c | 4 +- client/src/cmdhfmf.c | 14 +- client/src/cmdhw.c | 2 +- client/src/cmdlfem4x50.c | 2 +- client/src/pm3line_vocabulory.h | 1543 ++++++++++++++++--------------- doc/commands.json | 21 +- doc/commands.md | 23 +- 9 files changed, 819 insertions(+), 806 deletions(-) diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index ffe3182ba..196adeaed 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -75,7 +75,7 @@ int16_t mifare_cmd_readblocks(uint8_t key_auth_cmd, uint8_t *key, uint8_t read_c iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); clear_trace(); set_tracing(true); - + uint32_t timeout = iso14a_get_timeout(); LED_A_ON(); @@ -97,7 +97,7 @@ int16_t mifare_cmd_readblocks(uint8_t key_auth_cmd, uint8_t *key, uint8_t read_c }; // frame waiting time (FWT) in 1/fc - uint32_t fwt = 256 * 16 * (1 << 6); + uint32_t fwt = 256 * 16 * (1 << 6); iso14a_set_timeout(fwt / (8 * 16)); for (uint8_t i = 0; i < count; i++) { @@ -2080,7 +2080,7 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { // increase time-out. Magic card etc are slow uint32_t timeout = iso14a_get_timeout(); // frame waiting time (FWT) in 1/fc - uint32_t fwt = 256 * 16 * (1 << 7); + uint32_t fwt = 256 * 16 * (1 << 7); iso14a_set_timeout(fwt / (8 * 16)); for (uint8_t s = 0; s < sectorcnt; s++) { @@ -2349,7 +2349,7 @@ void MifareCGetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain) { // increase time-out. Magic card etc are slow uint32_t timeout = iso14a_get_timeout(); // frame waiting time (FWT) in 1/fc - uint32_t fwt = 256 * 16 * (1 << 7); + uint32_t fwt = 256 * 16 * (1 << 7); iso14a_set_timeout(fwt / (8 * 16)); //loop doesn't loop just breaks out if error or done diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index a5db7f0e7..fa25e001c 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -790,17 +790,17 @@ static int NxpSysInfo(uint8_t *uid) { PrintAndLogEx(INFO, "--- " _CYAN_("NXP Sysinfo")); PrintAndLogEx(INFO, " raw... %s", sprint_hex(recv, 8)); PrintAndLogEx(INFO, " " _CYAN_("Password protection configuration:")); - PrintAndLogEx(INFO, " * Page L read%s password protected", ((recv[2] & 0x01) ? "" : _GREEN_(" not"))); + PrintAndLogEx(INFO, " * Page L read%s password protected", ((recv[2] & 0x01) ? "" : _GREEN_(" not"))); PrintAndLogEx(INFO, " * Page L write%s password protected", ((recv[2] & 0x02) ? "" : _GREEN_(" not"))); - PrintAndLogEx(INFO, " * Page H read%s password protected", ((recv[2] & 0x10) ? "" : _GREEN_(" not"))); + PrintAndLogEx(INFO, " * Page H read%s password protected", ((recv[2] & 0x10) ? "" : _GREEN_(" not"))); PrintAndLogEx(INFO, " * Page H write%s password protected", ((recv[2] & 0x20) ? "" : _GREEN_(" not"))); PrintAndLogEx(INFO, " " _CYAN_("Lock bits:")); // AFI lock bit - PrintAndLogEx(INFO, " * AFI%s locked", ((recv[3] & 0x01) ? "" : _GREEN_(" not"))); + PrintAndLogEx(INFO, " * AFI%s locked", ((recv[3] & 0x01) ? "" : _GREEN_(" not"))); // EAS lock bit - PrintAndLogEx(INFO, " * EAS%s locked", ((recv[3] & 0x02) ? "" : _GREEN_(" not"))); + PrintAndLogEx(INFO, " * EAS%s locked", ((recv[3] & 0x02) ? "" : _GREEN_(" not"))); // DSFID lock bit PrintAndLogEx(INFO, " * DSFID%s locked", ((recv[3] & 0x03) ? "" : _GREEN_(" not"))); diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 5254c5e03..4c4f3215d 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -1082,7 +1082,7 @@ static int CmdHFiClassELoad(const char *Cmd) { } else { dump = newdump; } - + if (verbose) { print_picopass_header((picopass_hdr_t *) dump); print_picopass_info((picopass_hdr_t *) dump); @@ -1094,7 +1094,7 @@ static int CmdHFiClassELoad(const char *Cmd) { uint16_t bytes_sent = 0; iclass_upload_emul(dump, bytes_read, &bytes_sent); free(dump); - PrintAndLogEx(SUCCESS, "uploaded " _YELLOW_("%d") " bytes to emulator memory", bytes_sent); + PrintAndLogEx(SUCCESS, "uploaded " _YELLOW_("%d") " bytes to emulator memory", bytes_sent); PrintAndLogEx(HINT, "You are ready to simulate. See " _YELLOW_("`hf iclass sim -h`")); PrintAndLogEx(INFO, "Done!"); return PM3_SUCCESS; diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index b32efa2cb..11bcdd41f 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -1479,10 +1479,10 @@ static int CmdHF14AMfRestore(const char *Cmd) { } PrintAndLogEx(INFO, " %3d | %s| ( " _RED_("fail") " ) key " _YELLOW_("%c"), - blockno, - sprint_hex(bldata, sizeof(bldata)), - (kt == MF_KEY_A) ? 'A' : 'B' - ); + blockno, + sprint_hex(bldata, sizeof(bldata)), + (kt == MF_KEY_A) ? 'A' : 'B' + ); } // end loop key types } // end loop B } // end loop S @@ -4352,7 +4352,7 @@ int CmdHF14AMfELoad(const char *Cmd) { } // ICEMAN: bug. if device has been using ICLASS commands, - // the device needs to load the HF fpga image. It takes 1.5 second. + // the device needs to load the HF fpga image. It takes 1.5 second. set_fpga_mode(2); uint8_t *data = NULL; @@ -7925,7 +7925,7 @@ static int CmdHF14AGen4Save(const char *Cmd) { CLIParserFree(ctx); // ICEMAN: bug. if device has been using ICLASS commands, - // the device needs to load the HF fpga image. It takes 1.5 second. + // the device needs to load the HF fpga image. It takes 1.5 second. set_fpga_mode(2); // validations @@ -8008,7 +8008,7 @@ static int CmdHF14AGen4Save(const char *Cmd) { int res = mfG4GetBlock(pwd, i, dump + (i * MFBLOCK_SIZE), flags); if (res != PM3_SUCCESS) { - PrintAndLogEx(NORMAL,""); + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(WARNING, "Can't get magic card block: %u. error=%d", i, res); PrintAndLogEx(HINT, "Verify your card size, and try again or try another tag position"); free(dump); diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index c268344df..aae539c34 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -1096,7 +1096,7 @@ int set_fpga_mode(uint8_t mode) { return PM3_ETIMEOUT; } if (resp.status != PM3_SUCCESS) { - PrintAndLogEx(ERR, "failed to set FPGA mode"); + PrintAndLogEx(ERR, "failed to set FPGA mode"); } return resp.status; } diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index 647b6d082..09aeb8e84 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -215,7 +215,7 @@ int CmdEM4x50ELoad(const char *Cmd) { // upload to emulator memory em4x50_seteml(data, 0, DUMP_FILESIZE); - PrintAndLogEx(HINT, "You are ready to simulate. See " _YELLOW_("`lf em 4x50 sim -h`")); + PrintAndLogEx(HINT, "You are ready to simulate. See " _YELLOW_("`lf em 4x50 sim -h`")); PrintAndLogEx(INFO, "Done!"); return PM3_SUCCESS; } diff --git a/client/src/pm3line_vocabulory.h b/client/src/pm3line_vocabulory.h index 864047dba..509cf5387 100644 --- a/client/src/pm3line_vocabulory.h +++ b/client/src/pm3line_vocabulory.h @@ -31,776 +31,777 @@ typedef struct vocabulory_s { } vocabulory_t; const static vocabulory_t vocabulory[] = { - { 1, "help" }, - { 0, "auto" }, - { 1, "clear" }, - { 1, "hints" }, - { 1, "msleep" }, - { 1, "rem" }, - { 1, "quit" }, - { 1, "exit" }, - { 1, "prefs help" }, - { 1, "prefs show" }, - { 1, "prefs get barmode" }, - { 1, "prefs get clientdebug" }, - { 1, "prefs get clientdelay" }, - { 1, "prefs get color" }, - { 1, "prefs get savepaths" }, - { 1, "prefs get emoji" }, - { 1, "prefs get hints" }, - { 1, "prefs get output" }, - { 1, "prefs get plotsliders" }, - { 1, "prefs set help" }, - { 1, "prefs set barmode" }, - { 1, "prefs set clientdebug" }, - { 1, "prefs set clientdelay" }, - { 1, "prefs set color" }, - { 1, "prefs set emoji" }, - { 1, "prefs set hints" }, - { 1, "prefs set savepaths" }, - { 1, "prefs set output" }, - { 1, "prefs set plotsliders" }, - { 1, "analyse help" }, - { 1, "analyse lcr" }, - { 1, "analyse crc" }, - { 1, "analyse chksum" }, - { 1, "analyse dates" }, - { 1, "analyse lfsr" }, - { 1, "analyse a" }, - { 1, "analyse nuid" }, - { 1, "analyse demodbuff" }, - { 1, "analyse freq" }, - { 1, "analyse foo" }, - { 1, "analyse units" }, - { 1, "data help" }, - { 1, "data biphaserawdecode" }, - { 1, "data detectclock" }, - { 1, "data fsktonrz" }, - { 1, "data manrawdecode" }, - { 1, "data modulation" }, - { 1, "data rawdemod" }, - { 1, "data askedgedetect" }, - { 1, "data autocorr" }, - { 1, "data dirthreshold" }, - { 1, "data decimate" }, - { 1, "data envelope" }, - { 1, "data undecimate" }, - { 1, "data hide" }, - { 1, "data hpf" }, - { 1, "data iir" }, - { 1, "data grid" }, - { 1, "data ltrim" }, - { 1, "data mtrim" }, - { 1, "data norm" }, - { 1, "data plot" }, - { 1, "data cthreshold" }, - { 1, "data rtrim" }, - { 1, "data setgraphmarkers" }, - { 1, "data shiftgraphzero" }, - { 1, "data timescale" }, - { 1, "data zerocrossings" }, - { 1, "data convertbitstream" }, - { 1, "data getbitstream" }, - { 1, "data asn1" }, - { 1, "data bin2hex" }, - { 0, "data bitsamples" }, - { 1, "data clear" }, - { 1, "data diff" }, - { 0, "data hexsamples" }, - { 1, "data hex2bin" }, - { 1, "data load" }, - { 1, "data num" }, - { 1, "data print" }, - { 0, "data samples" }, - { 1, "data save" }, - { 1, "data setdebugmode" }, - { 0, "data tune" }, - { 1, "emv help" }, - { 1, "emv list" }, - { 1, "emv test" }, - { 0, "emv challenge" }, - { 0, "emv exec" }, - { 0, "emv genac" }, - { 0, "emv gpo" }, - { 0, "emv intauth" }, - { 0, "emv pse" }, - { 0, "emv reader" }, - { 0, "emv readrec" }, - { 0, "emv roca" }, - { 0, "emv scan" }, - { 0, "emv search" }, - { 0, "emv select" }, - { 1, "hf help" }, - { 1, "hf list" }, - { 0, "hf plot" }, - { 0, "hf tune" }, - { 1, "hf search" }, - { 0, "hf sniff" }, - { 1, "hf 14a help" }, - { 1, "hf 14a list" }, - { 0, "hf 14a antifuzz" }, - { 0, "hf 14a config" }, - { 0, "hf 14a cuids" }, - { 0, "hf 14a info" }, - { 0, "hf 14a sim" }, - { 0, "hf 14a sniff" }, - { 0, "hf 14a raw" }, - { 0, "hf 14a reader" }, - { 0, "hf 14a apdu" }, - { 0, "hf 14a apdufind" }, - { 0, "hf 14a chaining" }, - { 0, "hf 14a ndefformat" }, - { 0, "hf 14a ndefread" }, - { 0, "hf 14a ndefwrite" }, - { 1, "hf 14b help" }, - { 0, "hf 14b apdu" }, - { 0, "hf 14b dump" }, - { 0, "hf 14b info" }, - { 1, "hf 14b list" }, - { 0, "hf 14b ndefread" }, - { 0, "hf 14b raw" }, - { 0, "hf 14b reader" }, - { 0, "hf 14b sim" }, - { 0, "hf 14b sniff" }, - { 0, "hf 14b rdbl" }, - { 0, "hf 14b sriwrite" }, - { 1, "hf 14b view" }, - { 1, "hf 15 help" }, - { 1, "hf 15 list" }, - { 1, "hf 15 demod" }, - { 0, "hf 15 dump" }, - { 0, "hf 15 info" }, - { 0, "hf 15 sniff" }, - { 0, "hf 15 raw" }, - { 0, "hf 15 rdbl" }, - { 0, "hf 15 rdmulti" }, - { 0, "hf 15 reader" }, - { 0, "hf 15 restore" }, - { 0, "hf 15 samples" }, - { 0, "hf 15 eload" }, - { 0, "hf 15 esave" }, - { 0, "hf 15 eview" }, - { 0, "hf 15 sim" }, - { 0, "hf 15 slixwritepwd" }, - { 0, "hf 15 slixeasdisable" }, - { 0, "hf 15 slixeasenable" }, - { 0, "hf 15 slixprivacydisable" }, - { 0, "hf 15 slixprivacyenable" }, - { 0, "hf 15 passprotectafi" }, - { 0, "hf 15 passprotecteas" }, - { 0, "hf 15 wrbl" }, - { 0, "hf 15 findafi" }, - { 0, "hf 15 writeafi" }, - { 0, "hf 15 writedsfid" }, - { 0, "hf 15 csetuid" }, - { 1, "hf cipurse help" }, - { 0, "hf cipurse info" }, - { 0, "hf cipurse select" }, - { 0, "hf cipurse auth" }, - { 0, "hf cipurse read" }, - { 0, "hf cipurse write" }, - { 0, "hf cipurse aread" }, - { 0, "hf cipurse awrite" }, - { 0, "hf cipurse formatall" }, - { 0, "hf cipurse create" }, - { 0, "hf cipurse delete" }, - { 0, "hf cipurse updkey" }, - { 0, "hf cipurse updakey" }, - { 0, "hf cipurse default" }, - { 1, "hf cipurse test" }, - { 1, "hf epa help" }, - { 0, "hf epa cnonces" }, - { 0, "hf epa replay" }, - { 0, "hf epa sim" }, - { 1, "hf emrtd help" }, - { 0, "hf emrtd dump" }, - { 1, "hf emrtd info" }, - { 1, "hf emrtd list" }, - { 1, "hf felica help" }, - { 1, "hf felica list" }, - { 0, "hf felica reader" }, - { 0, "hf felica info" }, - { 0, "hf felica sniff" }, - { 0, "hf felica raw" }, - { 0, "hf felica rdbl" }, - { 0, "hf felica wrbl" }, - { 0, "hf felica rqservice" }, - { 0, "hf felica rqresponse" }, - { 0, "hf felica scsvcode" }, - { 0, "hf felica rqsyscode" }, - { 0, "hf felica auth1" }, - { 0, "hf felica auth2" }, - { 0, "hf felica rqspecver" }, - { 0, "hf felica resetmode" }, - { 0, "hf felica litesim" }, - { 0, "hf felica litedump" }, - { 1, "hf fido help" }, - { 1, "hf fido list" }, - { 0, "hf fido info" }, - { 0, "hf fido reg" }, - { 0, "hf fido auth" }, - { 0, "hf fido make" }, - { 0, "hf fido assert" }, - { 1, "hf fudan help" }, - { 0, "hf fudan reader" }, - { 0, "hf fudan dump" }, - { 0, "hf fudan rdbl" }, - { 1, "hf fudan view" }, - { 0, "hf fudan wrbl" }, - { 1, "hf gallagher help" }, - { 0, "hf gallagher reader" }, - { 0, "hf gallagher clone" }, - { 0, "hf gallagher delete" }, - { 1, "hf gallagher diversifykey" }, - { 1, "hf gallagher decode" }, - { 1, "hf ksx6924 help" }, - { 0, "hf ksx6924 select" }, - { 0, "hf ksx6924 info" }, - { 0, "hf ksx6924 balance" }, - { 0, "hf ksx6924 init" }, - { 0, "hf ksx6924 prec" }, - { 1, "hf jooki help" }, - { 0, "hf jooki clone" }, - { 1, "hf jooki decode" }, - { 1, "hf jooki encode" }, - { 0, "hf jooki sim" }, - { 1, "hf iclass help" }, - { 0, "hf iclass dump" }, - { 1, "hf iclass info" }, - { 1, "hf iclass list" }, - { 0, "hf iclass rdbl" }, - { 0, "hf iclass reader" }, - { 0, "hf iclass restore" }, - { 0, "hf iclass sniff" }, - { 0, "hf iclass wrbl" }, - { 0, "hf iclass chk" }, - { 1, "hf iclass loclass" }, - { 1, "hf iclass lookup" }, - { 0, "hf iclass sim" }, - { 0, "hf iclass eload" }, - { 0, "hf iclass esave" }, - { 0, "hf iclass eview" }, - { 1, "hf iclass configcard" }, - { 1, "hf iclass calcnewkey" }, - { 1, "hf iclass encode" }, - { 1, "hf iclass encrypt" }, - { 1, "hf iclass decrypt" }, - { 1, "hf iclass managekeys" }, - { 1, "hf iclass permutekey" }, - { 1, "hf iclass view" }, - { 0, "hf iclass sam" }, - { 1, "hf legic help" }, - { 0, "hf legic dump" }, - { 0, "hf legic info" }, - { 1, "hf legic list" }, - { 0, "hf legic rdbl" }, - { 0, "hf legic reader" }, - { 0, "hf legic restore" }, - { 0, "hf legic wipe" }, - { 0, "hf legic wrbl" }, - { 0, "hf legic sim" }, - { 0, "hf legic eload" }, - { 0, "hf legic esave" }, - { 0, "hf legic eview" }, - { 0, "hf legic einfo" }, - { 1, "hf legic crc" }, - { 1, "hf legic view" }, - { 1, "hf lto help" }, - { 0, "hf lto dump" }, - { 0, "hf lto info" }, - { 1, "hf lto list" }, - { 0, "hf lto rdbl" }, - { 0, "hf lto reader" }, - { 0, "hf lto restore" }, - { 0, "hf lto wrbl" }, - { 1, "hf mf help" }, - { 1, "hf mf list" }, - { 0, "hf mf darkside" }, - { 0, "hf mf nested" }, - { 1, "hf mf hardnested" }, - { 0, "hf mf staticnested" }, - { 0, "hf mf autopwn" }, - { 0, "hf mf nack" }, - { 0, "hf mf chk" }, - { 0, "hf mf fchk" }, - { 1, "hf mf decrypt" }, - { 0, "hf mf supercard" }, - { 0, "hf mf auth4" }, - { 1, "hf mf acl" }, - { 0, "hf mf dump" }, - { 1, "hf mf mad" }, - { 0, "hf mf personalize" }, - { 0, "hf mf rdbl" }, - { 0, "hf mf rdsc" }, - { 0, "hf mf restore" }, - { 0, "hf mf setmod" }, - { 1, "hf mf value" }, - { 1, "hf mf view" }, - { 0, "hf mf wipe" }, - { 0, "hf mf wrbl" }, - { 0, "hf mf sim" }, - { 0, "hf mf ecfill" }, - { 0, "hf mf eclr" }, - { 0, "hf mf egetblk" }, - { 0, "hf mf egetsc" }, - { 0, "hf mf ekeyprn" }, - { 0, "hf mf eload" }, - { 0, "hf mf esave" }, - { 0, "hf mf esetblk" }, - { 0, "hf mf eview" }, - { 0, "hf mf cgetblk" }, - { 0, "hf mf cgetsc" }, - { 0, "hf mf cload" }, - { 0, "hf mf csave" }, - { 0, "hf mf csetblk" }, - { 0, "hf mf csetuid" }, - { 0, "hf mf cview" }, - { 0, "hf mf cwipe" }, - { 0, "hf mf gen3uid" }, - { 0, "hf mf gen3blk" }, - { 0, "hf mf gen3freeze" }, - { 0, "hf mf ggetblk" }, - { 0, "hf mf gload" }, - { 0, "hf mf gsave" }, - { 0, "hf mf gsetblk" }, - { 0, "hf mf gview" }, - { 0, "hf mf gdmcfg" }, - { 0, "hf mf gdmsetcfg" }, - { 0, "hf mf gdmsetblk" }, - { 0, "hf mf ndefformat" }, - { 0, "hf mf ndefread" }, - { 0, "hf mf ndefwrite" }, - { 1, "hf mfp help" }, - { 1, "hf mfp list" }, - { 0, "hf mfp auth" }, - { 0, "hf mfp chk" }, - { 0, "hf mfp dump" }, - { 0, "hf mfp info" }, - { 0, "hf mfp mad" }, - { 0, "hf mfp rdbl" }, - { 0, "hf mfp rdsc" }, - { 0, "hf mfp wrbl" }, - { 0, "hf mfp commitp" }, - { 0, "hf mfp initp" }, - { 0, "hf mfp wrp" }, - { 0, "hf mfp ndefformat" }, - { 0, "hf mfp ndefread" }, - { 0, "hf mfp ndefwrite" }, - { 1, "hf mfu help" }, - { 1, "hf mfu keygen" }, - { 1, "hf mfu pwdgen" }, - { 0, "hf mfu otptear" }, - { 0, "hf mfu cauth" }, - { 0, "hf mfu dump" }, - { 0, "hf mfu info" }, - { 0, "hf mfu ndefread" }, - { 0, "hf mfu rdbl" }, - { 0, "hf mfu restore" }, - { 1, "hf mfu view" }, - { 0, "hf mfu wrbl" }, - { 0, "hf mfu tamper" }, - { 0, "hf mfu eload" }, - { 0, "hf mfu esave" }, - { 0, "hf mfu eview" }, - { 0, "hf mfu sim" }, - { 0, "hf mfu setpwd" }, - { 0, "hf mfu setuid" }, - { 1, "hf mfdes help" }, - { 0, "hf mfdes info" }, - { 0, "hf mfdes getuid" }, - { 0, "hf mfdes default" }, - { 0, "hf mfdes auth" }, - { 0, "hf mfdes chk" }, - { 0, "hf mfdes detect" }, - { 0, "hf mfdes freemem" }, - { 0, "hf mfdes setconfig" }, - { 0, "hf mfdes formatpicc" }, - { 1, "hf mfdes list" }, - { 0, "hf mfdes mad" }, - { 0, "hf mfdes lsapp" }, - { 0, "hf mfdes getaids" }, - { 0, "hf mfdes getappnames" }, - { 0, "hf mfdes bruteaid" }, - { 0, "hf mfdes createapp" }, - { 0, "hf mfdes deleteapp" }, - { 0, "hf mfdes selectapp" }, - { 0, "hf mfdes changekey" }, - { 0, "hf mfdes chkeysettings" }, - { 0, "hf mfdes getkeysettings" }, - { 0, "hf mfdes getkeyversions" }, - { 0, "hf mfdes getfileids" }, - { 0, "hf mfdes getfileisoids" }, - { 0, "hf mfdes lsfiles" }, - { 0, "hf mfdes dump" }, - { 0, "hf mfdes createfile" }, - { 0, "hf mfdes createvaluefile" }, - { 0, "hf mfdes createrecordfile" }, - { 0, "hf mfdes createmacfile" }, - { 0, "hf mfdes deletefile" }, - { 0, "hf mfdes getfilesettings" }, - { 0, "hf mfdes chfilesettings" }, - { 0, "hf mfdes read" }, - { 0, "hf mfdes write" }, - { 0, "hf mfdes value" }, - { 0, "hf mfdes clearrecfile" }, - { 1, "hf mfdes test" }, - { 1, "hf ntag424 help" }, - { 0, "hf ntag424 info" }, - { 0, "hf ntag424 sdm" }, - { 1, "hf ntag424 view" }, - { 1, "hf seos help" }, - { 0, "hf seos info" }, - { 1, "hf seos list" }, - { 1, "hf st25ta help" }, - { 0, "hf st25ta info" }, - { 1, "hf st25ta list" }, - { 1, "hf st25ta ndefread" }, - { 0, "hf st25ta protect" }, - { 0, "hf st25ta pwd" }, - { 0, "hf st25ta sim" }, - { 1, "hf tesla help" }, - { 0, "hf tesla info" }, - { 1, "hf tesla list" }, - { 1, "hf texkom help" }, - { 0, "hf texkom reader" }, - { 0, "hf texkom sim" }, - { 1, "hf thinfilm help" }, - { 0, "hf thinfilm info" }, - { 1, "hf thinfilm list" }, - { 0, "hf thinfilm sim" }, - { 1, "hf topaz help" }, - { 1, "hf topaz list" }, - { 0, "hf topaz dump" }, - { 0, "hf topaz info" }, - { 0, "hf topaz raw" }, - { 0, "hf topaz rdbl" }, - { 0, "hf topaz reader" }, - { 0, "hf topaz sim" }, - { 0, "hf topaz sniff" }, - { 1, "hf topaz view" }, - { 0, "hf topaz wrbl" }, - { 1, "hf vas help" }, - { 0, "hf vas reader" }, - { 1, "hf vas decrypt" }, - { 1, "hf waveshare help" }, - { 0, "hf waveshare loadbmp" }, - { 1, "hf xerox help" }, - { 0, "hf xerox info" }, - { 0, "hf xerox reader" }, - { 0, "hf xerox dump" }, - { 1, "hw help" }, - { 0, "hw break" }, - { 1, "hw connect" }, - { 0, "hw dbg" }, - { 0, "hw detectreader" }, - { 0, "hw fpgaoff" }, - { 0, "hw lcd" }, - { 0, "hw lcdreset" }, - { 0, "hw ping" }, - { 0, "hw readmem" }, - { 0, "hw reset" }, - { 0, "hw setlfdivisor" }, - { 0, "hw setmux" }, - { 0, "hw standalone" }, - { 0, "hw status" }, - { 0, "hw tearoff" }, - { 0, "hw tia" }, - { 1, "hw timeout" }, - { 0, "hw tune" }, - { 1, "hw version" }, - { 1, "lf help" }, - { 0, "lf config" }, - { 0, "lf cmdread" }, - { 0, "lf read" }, - { 1, "lf search" }, - { 0, "lf sim" }, - { 0, "lf simask" }, - { 0, "lf simfsk" }, - { 0, "lf simpsk" }, - { 0, "lf simbidir" }, - { 0, "lf sniff" }, - { 0, "lf tune" }, - { 1, "lf awid help" }, - { 1, "lf awid demod" }, - { 0, "lf awid reader" }, - { 0, "lf awid clone" }, - { 0, "lf awid sim" }, - { 0, "lf awid brute" }, - { 0, "lf awid watch" }, - { 1, "lf cotag help" }, - { 1, "lf cotag demod" }, - { 0, "lf cotag reader" }, - { 1, "lf destron help" }, - { 1, "lf destron demod" }, - { 0, "lf destron reader" }, - { 0, "lf destron clone" }, - { 0, "lf destron sim" }, - { 1, "lf em help" }, - { 1, "lf em 410x help" }, - { 1, "lf em 410x demod" }, - { 0, "lf em 410x reader" }, - { 0, "lf em 410x sim" }, - { 0, "lf em 410x brute" }, - { 0, "lf em 410x watch" }, - { 0, "lf em 410x spoof" }, - { 0, "lf em 410x clone" }, - { 1, "lf em 4x05 help" }, - { 0, "lf em 4x05 brute" }, - { 0, "lf em 4x05 chk" }, - { 1, "lf em 4x05 demod" }, - { 0, "lf em 4x05 dump" }, - { 0, "lf em 4x05 info" }, - { 0, "lf em 4x05 read" }, - { 1, "lf em 4x05 sniff" }, - { 0, "lf em 4x05 unlock" }, - { 0, "lf em 4x05 wipe" }, - { 0, "lf em 4x05 write" }, - { 1, "lf em 4x50 help" }, - { 0, "lf em 4x50 brute" }, - { 0, "lf em 4x50 chk" }, - { 0, "lf em 4x50 dump" }, - { 0, "lf em 4x50 info" }, - { 0, "lf em 4x50 login" }, - { 0, "lf em 4x50 rdbl" }, - { 0, "lf em 4x50 reader" }, - { 0, "lf em 4x50 restore" }, - { 0, "lf em 4x50 wrbl" }, - { 0, "lf em 4x50 wrpwd" }, - { 0, "lf em 4x50 wipe" }, - { 0, "lf em 4x50 eload" }, - { 0, "lf em 4x50 esave" }, - { 0, "lf em 4x50 eview" }, - { 0, "lf em 4x50 sim" }, - { 1, "lf em 4x70 help" }, - { 0, "lf em 4x70 brute" }, - { 0, "lf em 4x70 info" }, - { 0, "lf em 4x70 write" }, - { 0, "lf em 4x70 unlock" }, - { 0, "lf em 4x70 auth" }, - { 0, "lf em 4x70 writepin" }, - { 0, "lf em 4x70 writekey" }, - { 1, "lf fdxb help" }, - { 1, "lf fdxb demod" }, - { 0, "lf fdxb reader" }, - { 0, "lf fdxb clone" }, - { 0, "lf fdxb sim" }, - { 1, "lf gallagher help" }, - { 1, "lf gallagher demod" }, - { 0, "lf gallagher reader" }, - { 0, "lf gallagher clone" }, - { 0, "lf gallagher sim" }, - { 1, "lf gproxii help" }, - { 1, "lf gproxii demod" }, - { 0, "lf gproxii reader" }, - { 0, "lf gproxii clone" }, - { 0, "lf gproxii sim" }, - { 1, "lf hid help" }, - { 1, "lf hid demod" }, - { 0, "lf hid reader" }, - { 0, "lf hid clone" }, - { 0, "lf hid sim" }, - { 0, "lf hid brute" }, - { 0, "lf hid watch" }, - { 1, "lf hitag help" }, - { 1, "lf hitag list" }, - { 0, "lf hitag info" }, - { 0, "lf hitag dump" }, - { 0, "lf hitag read" }, - { 0, "lf hitag wrbl" }, - { 0, "lf hitag sniff" }, - { 0, "lf hitag cc" }, - { 0, "lf hitag ta" }, - { 0, "lf hitag eload" }, - { 0, "lf hitag sim" }, - { 1, "lf idteck help" }, - { 1, "lf idteck demod" }, - { 0, "lf idteck reader" }, - { 0, "lf idteck clone" }, - { 0, "lf idteck sim" }, - { 1, "lf indala help" }, - { 0, "lf indala brute" }, - { 1, "lf indala demod" }, - { 1, "lf indala altdemod" }, - { 0, "lf indala reader" }, - { 0, "lf indala clone" }, - { 0, "lf indala sim" }, - { 1, "lf io help" }, - { 1, "lf io demod" }, - { 0, "lf io reader" }, - { 0, "lf io clone" }, - { 0, "lf io sim" }, - { 0, "lf io watch" }, - { 1, "lf jablotron help" }, - { 1, "lf jablotron demod" }, - { 0, "lf jablotron reader" }, - { 0, "lf jablotron clone" }, - { 0, "lf jablotron sim" }, - { 1, "lf keri help" }, - { 1, "lf keri demod" }, - { 0, "lf keri reader" }, - { 0, "lf keri clone" }, - { 0, "lf keri sim" }, - { 1, "lf motorola help" }, - { 1, "lf motorola demod" }, - { 0, "lf motorola reader" }, - { 0, "lf motorola clone" }, - { 0, "lf motorola sim" }, - { 1, "lf nedap help" }, - { 1, "lf nedap demod" }, - { 0, "lf nedap reader" }, - { 0, "lf nedap clone" }, - { 0, "lf nedap sim" }, - { 1, "lf nexwatch help" }, - { 1, "lf nexwatch demod" }, - { 0, "lf nexwatch reader" }, - { 0, "lf nexwatch clone" }, - { 0, "lf nexwatch sim" }, - { 1, "lf noralsy help" }, - { 1, "lf noralsy demod" }, - { 0, "lf noralsy reader" }, - { 0, "lf noralsy clone" }, - { 0, "lf noralsy sim" }, - { 1, "lf pac help" }, - { 1, "lf pac demod" }, - { 0, "lf pac reader" }, - { 0, "lf pac clone" }, - { 0, "lf pac sim" }, - { 1, "lf paradox help" }, - { 1, "lf paradox demod" }, - { 0, "lf paradox reader" }, - { 0, "lf paradox clone" }, - { 0, "lf paradox sim" }, - { 1, "lf pcf7931 help" }, - { 0, "lf pcf7931 reader" }, - { 0, "lf pcf7931 write" }, - { 1, "lf pcf7931 config" }, - { 1, "lf presco help" }, - { 1, "lf presco demod" }, - { 0, "lf presco reader" }, - { 0, "lf presco clone" }, - { 0, "lf presco sim" }, - { 1, "lf pyramid help" }, - { 1, "lf pyramid demod" }, - { 0, "lf pyramid reader" }, - { 0, "lf pyramid clone" }, - { 0, "lf pyramid sim" }, - { 1, "lf securakey help" }, - { 1, "lf securakey demod" }, - { 0, "lf securakey reader" }, - { 0, "lf securakey clone" }, - { 0, "lf securakey sim" }, - { 1, "lf ti help" }, - { 1, "lf ti demod" }, - { 0, "lf ti reader" }, - { 0, "lf ti write" }, - { 1, "lf t55xx help" }, - { 0, "lf t55xx clonehelp" }, - { 1, "lf t55xx config" }, - { 0, "lf t55xx dangerraw" }, - { 1, "lf t55xx detect" }, - { 0, "lf t55xx deviceconfig" }, - { 0, "lf t55xx dump" }, - { 1, "lf t55xx info" }, - { 0, "lf t55xx p1detect" }, - { 0, "lf t55xx read" }, - { 0, "lf t55xx resetread" }, - { 0, "lf t55xx restore" }, - { 1, "lf t55xx trace" }, - { 0, "lf t55xx wakeup" }, - { 0, "lf t55xx write" }, - { 0, "lf t55xx bruteforce" }, - { 0, "lf t55xx chk" }, - { 0, "lf t55xx protect" }, - { 0, "lf t55xx recoverpw" }, - { 1, "lf t55xx sniff" }, - { 0, "lf t55xx special" }, - { 0, "lf t55xx wipe" }, - { 1, "lf viking help" }, - { 1, "lf viking demod" }, - { 0, "lf viking reader" }, - { 0, "lf viking clone" }, - { 0, "lf viking sim" }, - { 1, "lf visa2000 help" }, - { 1, "lf visa2000 demod" }, - { 0, "lf visa2000 reader" }, - { 0, "lf visa2000 clone" }, - { 0, "lf visa2000 sim" }, - { 1, "mem help" }, - { 0, "mem baudrate" }, - { 0, "mem dump" }, - { 0, "mem info" }, - { 0, "mem load" }, - { 0, "mem wipe" }, - { 1, "mem spiffs help" }, - { 0, "mem spiffs copy" }, - { 0, "mem spiffs check" }, - { 0, "mem spiffs dump" }, - { 0, "mem spiffs info" }, - { 0, "mem spiffs mount" }, - { 0, "mem spiffs remove" }, - { 0, "mem spiffs rename" }, - { 0, "mem spiffs test" }, - { 0, "mem spiffs tree" }, - { 0, "mem spiffs unmount" }, - { 0, "mem spiffs upload" }, - { 0, "mem spiffs view" }, - { 0, "mem spiffs wipe" }, - { 1, "nfc help" }, - { 1, "nfc decode" }, - { 0, "nfc type1 read" }, - { 1, "nfc type1 help" }, - { 0, "nfc type2 read" }, - { 1, "nfc type2 help" }, - { 0, "nfc type4a format" }, - { 0, "nfc type4a read" }, - { 0, "nfc type4a write" }, - { 0, "nfc type4a st25taread" }, - { 1, "nfc type4a help" }, - { 0, "nfc type4b read" }, - { 1, "nfc type4b help" }, - { 0, "nfc mf cformat" }, - { 0, "nfc mf cread" }, - { 0, "nfc mf cwrite" }, - { 0, "nfc mf pread" }, - { 1, "nfc mf help" }, - { 0, "nfc barcode read" }, - { 0, "nfc barcode sim" }, - { 1, "nfc barcode help" }, - { 1, "piv help" }, - { 0, "piv select" }, - { 0, "piv getdata" }, - { 0, "piv authsign" }, - { 0, "piv scan" }, - { 1, "piv list" }, - { 1, "smart help" }, - { 1, "smart list" }, - { 0, "smart info" }, - { 0, "smart reader" }, - { 0, "smart raw" }, - { 1, "smart upgrade" }, - { 0, "smart setclock" }, - { 0, "smart brute" }, - { 1, "script help" }, - { 1, "script list" }, - { 1, "script run" }, - { 1, "trace help" }, - { 1, "trace extract" }, - { 1, "trace list" }, - { 1, "trace load" }, - { 1, "trace save" }, - { 1, "usart help" }, - { 0, "usart btpin" }, - { 0, "usart btfactory" }, - { 0, "usart tx" }, - { 0, "usart rx" }, - { 0, "usart txrx" }, - { 0, "usart txhex" }, - { 0, "usart rxhex" }, - { 0, "usart config" }, - { 1, "wiegand help" }, - { 1, "wiegand list" }, - { 1, "wiegand encode" }, - { 1, "wiegand decode" }, + { 1, "help" }, + { 0, "auto" }, + { 1, "clear" }, + { 1, "hints" }, + { 1, "msleep" }, + { 1, "rem" }, + { 1, "quit" }, + { 1, "exit" }, + { 1, "prefs help" }, + { 1, "prefs show" }, + { 1, "prefs get barmode" }, + { 1, "prefs get clientdebug" }, + { 1, "prefs get clientdelay" }, + { 1, "prefs get color" }, + { 1, "prefs get savepaths" }, + { 1, "prefs get emoji" }, + { 1, "prefs get hints" }, + { 1, "prefs get output" }, + { 1, "prefs get plotsliders" }, + { 1, "prefs set help" }, + { 1, "prefs set barmode" }, + { 1, "prefs set clientdebug" }, + { 1, "prefs set clientdelay" }, + { 1, "prefs set color" }, + { 1, "prefs set emoji" }, + { 1, "prefs set hints" }, + { 1, "prefs set savepaths" }, + { 1, "prefs set output" }, + { 1, "prefs set plotsliders" }, + { 1, "analyse help" }, + { 1, "analyse lcr" }, + { 1, "analyse crc" }, + { 1, "analyse chksum" }, + { 1, "analyse dates" }, + { 1, "analyse lfsr" }, + { 1, "analyse a" }, + { 1, "analyse nuid" }, + { 1, "analyse demodbuff" }, + { 1, "analyse freq" }, + { 1, "analyse foo" }, + { 1, "analyse units" }, + { 1, "data help" }, + { 1, "data biphaserawdecode" }, + { 1, "data detectclock" }, + { 1, "data fsktonrz" }, + { 1, "data manrawdecode" }, + { 1, "data modulation" }, + { 1, "data rawdemod" }, + { 1, "data askedgedetect" }, + { 1, "data autocorr" }, + { 1, "data dirthreshold" }, + { 1, "data decimate" }, + { 1, "data envelope" }, + { 1, "data undecimate" }, + { 1, "data hide" }, + { 1, "data hpf" }, + { 1, "data iir" }, + { 1, "data grid" }, + { 1, "data ltrim" }, + { 1, "data mtrim" }, + { 1, "data norm" }, + { 1, "data plot" }, + { 1, "data cthreshold" }, + { 1, "data rtrim" }, + { 1, "data setgraphmarkers" }, + { 1, "data shiftgraphzero" }, + { 1, "data timescale" }, + { 1, "data zerocrossings" }, + { 1, "data convertbitstream" }, + { 1, "data getbitstream" }, + { 1, "data asn1" }, + { 1, "data bin2hex" }, + { 0, "data bitsamples" }, + { 1, "data clear" }, + { 1, "data diff" }, + { 0, "data hexsamples" }, + { 1, "data hex2bin" }, + { 1, "data load" }, + { 1, "data num" }, + { 1, "data print" }, + { 0, "data samples" }, + { 1, "data save" }, + { 1, "data setdebugmode" }, + { 0, "data tune" }, + { 1, "emv help" }, + { 1, "emv list" }, + { 1, "emv test" }, + { 0, "emv challenge" }, + { 0, "emv exec" }, + { 0, "emv genac" }, + { 0, "emv gpo" }, + { 0, "emv intauth" }, + { 0, "emv pse" }, + { 0, "emv reader" }, + { 0, "emv readrec" }, + { 0, "emv roca" }, + { 0, "emv scan" }, + { 0, "emv search" }, + { 0, "emv select" }, + { 1, "hf help" }, + { 1, "hf list" }, + { 0, "hf plot" }, + { 0, "hf tune" }, + { 1, "hf search" }, + { 0, "hf sniff" }, + { 1, "hf 14a help" }, + { 1, "hf 14a list" }, + { 0, "hf 14a antifuzz" }, + { 0, "hf 14a config" }, + { 0, "hf 14a cuids" }, + { 0, "hf 14a info" }, + { 0, "hf 14a sim" }, + { 0, "hf 14a sniff" }, + { 0, "hf 14a raw" }, + { 0, "hf 14a reader" }, + { 0, "hf 14a apdu" }, + { 0, "hf 14a apdufind" }, + { 0, "hf 14a chaining" }, + { 0, "hf 14a ndefformat" }, + { 0, "hf 14a ndefread" }, + { 0, "hf 14a ndefwrite" }, + { 1, "hf 14b help" }, + { 0, "hf 14b apdu" }, + { 0, "hf 14b dump" }, + { 0, "hf 14b info" }, + { 1, "hf 14b list" }, + { 0, "hf 14b ndefread" }, + { 0, "hf 14b raw" }, + { 0, "hf 14b reader" }, + { 0, "hf 14b sim" }, + { 0, "hf 14b sniff" }, + { 0, "hf 14b rdbl" }, + { 0, "hf 14b sriwrite" }, + { 1, "hf 14b view" }, + { 1, "hf 15 help" }, + { 1, "hf 15 list" }, + { 1, "hf 15 demod" }, + { 0, "hf 15 dump" }, + { 0, "hf 15 info" }, + { 0, "hf 15 sniff" }, + { 0, "hf 15 raw" }, + { 0, "hf 15 rdbl" }, + { 0, "hf 15 rdmulti" }, + { 0, "hf 15 reader" }, + { 0, "hf 15 restore" }, + { 0, "hf 15 samples" }, + { 1, "hf 15 view" }, + { 0, "hf 15 wrbl" }, + { 0, "hf 15 sim" }, + { 0, "hf 15 eload" }, + { 0, "hf 15 esave" }, + { 0, "hf 15 eview" }, + { 0, "hf 15 slixwritepwd" }, + { 0, "hf 15 slixeasdisable" }, + { 0, "hf 15 slixeasenable" }, + { 0, "hf 15 slixprivacydisable" }, + { 0, "hf 15 slixprivacyenable" }, + { 0, "hf 15 passprotectafi" }, + { 0, "hf 15 passprotecteas" }, + { 0, "hf 15 findafi" }, + { 0, "hf 15 writeafi" }, + { 0, "hf 15 writedsfid" }, + { 0, "hf 15 csetuid" }, + { 1, "hf cipurse help" }, + { 0, "hf cipurse info" }, + { 0, "hf cipurse select" }, + { 0, "hf cipurse auth" }, + { 0, "hf cipurse read" }, + { 0, "hf cipurse write" }, + { 0, "hf cipurse aread" }, + { 0, "hf cipurse awrite" }, + { 0, "hf cipurse formatall" }, + { 0, "hf cipurse create" }, + { 0, "hf cipurse delete" }, + { 0, "hf cipurse updkey" }, + { 0, "hf cipurse updakey" }, + { 0, "hf cipurse default" }, + { 1, "hf cipurse test" }, + { 1, "hf epa help" }, + { 0, "hf epa cnonces" }, + { 0, "hf epa replay" }, + { 0, "hf epa sim" }, + { 1, "hf emrtd help" }, + { 0, "hf emrtd dump" }, + { 1, "hf emrtd info" }, + { 1, "hf emrtd list" }, + { 1, "hf felica help" }, + { 1, "hf felica list" }, + { 0, "hf felica reader" }, + { 0, "hf felica info" }, + { 0, "hf felica sniff" }, + { 0, "hf felica raw" }, + { 0, "hf felica rdbl" }, + { 0, "hf felica wrbl" }, + { 0, "hf felica rqservice" }, + { 0, "hf felica rqresponse" }, + { 0, "hf felica scsvcode" }, + { 0, "hf felica rqsyscode" }, + { 0, "hf felica auth1" }, + { 0, "hf felica auth2" }, + { 0, "hf felica rqspecver" }, + { 0, "hf felica resetmode" }, + { 0, "hf felica litesim" }, + { 0, "hf felica litedump" }, + { 1, "hf fido help" }, + { 1, "hf fido list" }, + { 0, "hf fido info" }, + { 0, "hf fido reg" }, + { 0, "hf fido auth" }, + { 0, "hf fido make" }, + { 0, "hf fido assert" }, + { 1, "hf fudan help" }, + { 0, "hf fudan reader" }, + { 0, "hf fudan dump" }, + { 0, "hf fudan rdbl" }, + { 1, "hf fudan view" }, + { 0, "hf fudan wrbl" }, + { 1, "hf gallagher help" }, + { 0, "hf gallagher reader" }, + { 0, "hf gallagher clone" }, + { 0, "hf gallagher delete" }, + { 1, "hf gallagher diversifykey" }, + { 1, "hf gallagher decode" }, + { 1, "hf ksx6924 help" }, + { 0, "hf ksx6924 select" }, + { 0, "hf ksx6924 info" }, + { 0, "hf ksx6924 balance" }, + { 0, "hf ksx6924 init" }, + { 0, "hf ksx6924 prec" }, + { 1, "hf jooki help" }, + { 0, "hf jooki clone" }, + { 1, "hf jooki decode" }, + { 1, "hf jooki encode" }, + { 0, "hf jooki sim" }, + { 1, "hf iclass help" }, + { 1, "hf iclass list" }, + { 0, "hf iclass dump" }, + { 1, "hf iclass info" }, + { 0, "hf iclass rdbl" }, + { 0, "hf iclass reader" }, + { 0, "hf iclass restore" }, + { 0, "hf iclass sniff" }, + { 1, "hf iclass view" }, + { 0, "hf iclass wrbl" }, + { 0, "hf iclass chk" }, + { 1, "hf iclass loclass" }, + { 1, "hf iclass lookup" }, + { 0, "hf iclass sim" }, + { 0, "hf iclass eload" }, + { 0, "hf iclass esave" }, + { 0, "hf iclass eview" }, + { 1, "hf iclass configcard" }, + { 1, "hf iclass calcnewkey" }, + { 1, "hf iclass encode" }, + { 1, "hf iclass encrypt" }, + { 1, "hf iclass decrypt" }, + { 1, "hf iclass managekeys" }, + { 1, "hf iclass permutekey" }, + { 0, "hf iclass sam" }, + { 1, "hf legic help" }, + { 0, "hf legic dump" }, + { 0, "hf legic info" }, + { 1, "hf legic list" }, + { 0, "hf legic rdbl" }, + { 0, "hf legic reader" }, + { 0, "hf legic restore" }, + { 0, "hf legic wipe" }, + { 0, "hf legic wrbl" }, + { 0, "hf legic sim" }, + { 0, "hf legic eload" }, + { 0, "hf legic esave" }, + { 0, "hf legic eview" }, + { 0, "hf legic einfo" }, + { 1, "hf legic crc" }, + { 1, "hf legic view" }, + { 1, "hf lto help" }, + { 0, "hf lto dump" }, + { 0, "hf lto info" }, + { 1, "hf lto list" }, + { 0, "hf lto rdbl" }, + { 0, "hf lto reader" }, + { 0, "hf lto restore" }, + { 0, "hf lto wrbl" }, + { 1, "hf mf help" }, + { 1, "hf mf list" }, + { 0, "hf mf darkside" }, + { 0, "hf mf nested" }, + { 1, "hf mf hardnested" }, + { 0, "hf mf staticnested" }, + { 0, "hf mf autopwn" }, + { 0, "hf mf nack" }, + { 0, "hf mf chk" }, + { 0, "hf mf fchk" }, + { 1, "hf mf decrypt" }, + { 0, "hf mf supercard" }, + { 0, "hf mf auth4" }, + { 1, "hf mf acl" }, + { 0, "hf mf dump" }, + { 1, "hf mf mad" }, + { 0, "hf mf personalize" }, + { 0, "hf mf rdbl" }, + { 0, "hf mf rdsc" }, + { 0, "hf mf restore" }, + { 0, "hf mf setmod" }, + { 1, "hf mf value" }, + { 1, "hf mf view" }, + { 0, "hf mf wipe" }, + { 0, "hf mf wrbl" }, + { 0, "hf mf sim" }, + { 0, "hf mf ecfill" }, + { 0, "hf mf eclr" }, + { 0, "hf mf egetblk" }, + { 0, "hf mf egetsc" }, + { 0, "hf mf ekeyprn" }, + { 0, "hf mf eload" }, + { 0, "hf mf esave" }, + { 0, "hf mf esetblk" }, + { 0, "hf mf eview" }, + { 0, "hf mf cgetblk" }, + { 0, "hf mf cgetsc" }, + { 0, "hf mf cload" }, + { 0, "hf mf csave" }, + { 0, "hf mf csetblk" }, + { 0, "hf mf csetuid" }, + { 0, "hf mf cview" }, + { 0, "hf mf cwipe" }, + { 0, "hf mf gen3uid" }, + { 0, "hf mf gen3blk" }, + { 0, "hf mf gen3freeze" }, + { 0, "hf mf ggetblk" }, + { 0, "hf mf gload" }, + { 0, "hf mf gsave" }, + { 0, "hf mf gsetblk" }, + { 0, "hf mf gview" }, + { 0, "hf mf gdmcfg" }, + { 0, "hf mf gdmsetcfg" }, + { 0, "hf mf gdmsetblk" }, + { 0, "hf mf ndefformat" }, + { 0, "hf mf ndefread" }, + { 0, "hf mf ndefwrite" }, + { 1, "hf mfp help" }, + { 1, "hf mfp list" }, + { 0, "hf mfp auth" }, + { 0, "hf mfp chk" }, + { 0, "hf mfp dump" }, + { 0, "hf mfp info" }, + { 0, "hf mfp mad" }, + { 0, "hf mfp rdbl" }, + { 0, "hf mfp rdsc" }, + { 0, "hf mfp wrbl" }, + { 0, "hf mfp commitp" }, + { 0, "hf mfp initp" }, + { 0, "hf mfp wrp" }, + { 0, "hf mfp ndefformat" }, + { 0, "hf mfp ndefread" }, + { 0, "hf mfp ndefwrite" }, + { 1, "hf mfu help" }, + { 1, "hf mfu keygen" }, + { 1, "hf mfu pwdgen" }, + { 0, "hf mfu otptear" }, + { 0, "hf mfu cauth" }, + { 0, "hf mfu dump" }, + { 0, "hf mfu info" }, + { 0, "hf mfu ndefread" }, + { 0, "hf mfu rdbl" }, + { 0, "hf mfu restore" }, + { 1, "hf mfu view" }, + { 0, "hf mfu wrbl" }, + { 0, "hf mfu tamper" }, + { 0, "hf mfu eload" }, + { 0, "hf mfu esave" }, + { 0, "hf mfu eview" }, + { 0, "hf mfu sim" }, + { 0, "hf mfu setpwd" }, + { 0, "hf mfu setuid" }, + { 1, "hf mfdes help" }, + { 0, "hf mfdes info" }, + { 0, "hf mfdes getuid" }, + { 0, "hf mfdes default" }, + { 0, "hf mfdes auth" }, + { 0, "hf mfdes chk" }, + { 0, "hf mfdes detect" }, + { 0, "hf mfdes freemem" }, + { 0, "hf mfdes setconfig" }, + { 0, "hf mfdes formatpicc" }, + { 1, "hf mfdes list" }, + { 0, "hf mfdes mad" }, + { 0, "hf mfdes lsapp" }, + { 0, "hf mfdes getaids" }, + { 0, "hf mfdes getappnames" }, + { 0, "hf mfdes bruteaid" }, + { 0, "hf mfdes createapp" }, + { 0, "hf mfdes deleteapp" }, + { 0, "hf mfdes selectapp" }, + { 0, "hf mfdes changekey" }, + { 0, "hf mfdes chkeysettings" }, + { 0, "hf mfdes getkeysettings" }, + { 0, "hf mfdes getkeyversions" }, + { 0, "hf mfdes getfileids" }, + { 0, "hf mfdes getfileisoids" }, + { 0, "hf mfdes lsfiles" }, + { 0, "hf mfdes dump" }, + { 0, "hf mfdes createfile" }, + { 0, "hf mfdes createvaluefile" }, + { 0, "hf mfdes createrecordfile" }, + { 0, "hf mfdes createmacfile" }, + { 0, "hf mfdes deletefile" }, + { 0, "hf mfdes getfilesettings" }, + { 0, "hf mfdes chfilesettings" }, + { 0, "hf mfdes read" }, + { 0, "hf mfdes write" }, + { 0, "hf mfdes value" }, + { 0, "hf mfdes clearrecfile" }, + { 1, "hf mfdes test" }, + { 1, "hf ntag424 help" }, + { 0, "hf ntag424 info" }, + { 0, "hf ntag424 sdm" }, + { 1, "hf ntag424 view" }, + { 1, "hf seos help" }, + { 0, "hf seos info" }, + { 1, "hf seos list" }, + { 1, "hf st25ta help" }, + { 0, "hf st25ta info" }, + { 1, "hf st25ta list" }, + { 1, "hf st25ta ndefread" }, + { 0, "hf st25ta protect" }, + { 0, "hf st25ta pwd" }, + { 0, "hf st25ta sim" }, + { 1, "hf tesla help" }, + { 0, "hf tesla info" }, + { 1, "hf tesla list" }, + { 1, "hf texkom help" }, + { 0, "hf texkom reader" }, + { 0, "hf texkom sim" }, + { 1, "hf thinfilm help" }, + { 0, "hf thinfilm info" }, + { 1, "hf thinfilm list" }, + { 0, "hf thinfilm sim" }, + { 1, "hf topaz help" }, + { 1, "hf topaz list" }, + { 0, "hf topaz dump" }, + { 0, "hf topaz info" }, + { 0, "hf topaz raw" }, + { 0, "hf topaz rdbl" }, + { 0, "hf topaz reader" }, + { 0, "hf topaz sim" }, + { 0, "hf topaz sniff" }, + { 1, "hf topaz view" }, + { 0, "hf topaz wrbl" }, + { 1, "hf vas help" }, + { 0, "hf vas reader" }, + { 1, "hf vas decrypt" }, + { 1, "hf waveshare help" }, + { 0, "hf waveshare loadbmp" }, + { 1, "hf xerox help" }, + { 0, "hf xerox info" }, + { 0, "hf xerox reader" }, + { 0, "hf xerox dump" }, + { 1, "hw help" }, + { 0, "hw break" }, + { 1, "hw connect" }, + { 0, "hw dbg" }, + { 0, "hw detectreader" }, + { 0, "hw fpgaoff" }, + { 0, "hw lcd" }, + { 0, "hw lcdreset" }, + { 0, "hw ping" }, + { 0, "hw readmem" }, + { 0, "hw reset" }, + { 0, "hw setlfdivisor" }, + { 0, "hw setmux" }, + { 0, "hw standalone" }, + { 0, "hw status" }, + { 0, "hw tearoff" }, + { 0, "hw tia" }, + { 1, "hw timeout" }, + { 0, "hw tune" }, + { 1, "hw version" }, + { 1, "lf help" }, + { 0, "lf config" }, + { 0, "lf cmdread" }, + { 0, "lf read" }, + { 1, "lf search" }, + { 0, "lf sim" }, + { 0, "lf simask" }, + { 0, "lf simfsk" }, + { 0, "lf simpsk" }, + { 0, "lf simbidir" }, + { 0, "lf sniff" }, + { 0, "lf tune" }, + { 1, "lf awid help" }, + { 1, "lf awid demod" }, + { 0, "lf awid reader" }, + { 0, "lf awid clone" }, + { 0, "lf awid sim" }, + { 0, "lf awid brute" }, + { 0, "lf awid watch" }, + { 1, "lf cotag help" }, + { 1, "lf cotag demod" }, + { 0, "lf cotag reader" }, + { 1, "lf destron help" }, + { 1, "lf destron demod" }, + { 0, "lf destron reader" }, + { 0, "lf destron clone" }, + { 0, "lf destron sim" }, + { 1, "lf em help" }, + { 1, "lf em 410x help" }, + { 1, "lf em 410x demod" }, + { 0, "lf em 410x reader" }, + { 0, "lf em 410x sim" }, + { 0, "lf em 410x brute" }, + { 0, "lf em 410x watch" }, + { 0, "lf em 410x spoof" }, + { 0, "lf em 410x clone" }, + { 1, "lf em 4x05 help" }, + { 0, "lf em 4x05 brute" }, + { 0, "lf em 4x05 chk" }, + { 1, "lf em 4x05 demod" }, + { 0, "lf em 4x05 dump" }, + { 0, "lf em 4x05 info" }, + { 0, "lf em 4x05 read" }, + { 1, "lf em 4x05 sniff" }, + { 0, "lf em 4x05 unlock" }, + { 0, "lf em 4x05 wipe" }, + { 0, "lf em 4x05 write" }, + { 1, "lf em 4x50 help" }, + { 0, "lf em 4x50 brute" }, + { 0, "lf em 4x50 chk" }, + { 0, "lf em 4x50 dump" }, + { 0, "lf em 4x50 info" }, + { 0, "lf em 4x50 login" }, + { 0, "lf em 4x50 rdbl" }, + { 0, "lf em 4x50 reader" }, + { 0, "lf em 4x50 restore" }, + { 0, "lf em 4x50 wrbl" }, + { 0, "lf em 4x50 wrpwd" }, + { 0, "lf em 4x50 wipe" }, + { 0, "lf em 4x50 eload" }, + { 0, "lf em 4x50 esave" }, + { 0, "lf em 4x50 eview" }, + { 0, "lf em 4x50 sim" }, + { 1, "lf em 4x70 help" }, + { 0, "lf em 4x70 brute" }, + { 0, "lf em 4x70 info" }, + { 0, "lf em 4x70 write" }, + { 0, "lf em 4x70 unlock" }, + { 0, "lf em 4x70 auth" }, + { 0, "lf em 4x70 writepin" }, + { 0, "lf em 4x70 writekey" }, + { 1, "lf fdxb help" }, + { 1, "lf fdxb demod" }, + { 0, "lf fdxb reader" }, + { 0, "lf fdxb clone" }, + { 0, "lf fdxb sim" }, + { 1, "lf gallagher help" }, + { 1, "lf gallagher demod" }, + { 0, "lf gallagher reader" }, + { 0, "lf gallagher clone" }, + { 0, "lf gallagher sim" }, + { 1, "lf gproxii help" }, + { 1, "lf gproxii demod" }, + { 0, "lf gproxii reader" }, + { 0, "lf gproxii clone" }, + { 0, "lf gproxii sim" }, + { 1, "lf hid help" }, + { 1, "lf hid demod" }, + { 0, "lf hid reader" }, + { 0, "lf hid clone" }, + { 0, "lf hid sim" }, + { 0, "lf hid brute" }, + { 0, "lf hid watch" }, + { 1, "lf hitag help" }, + { 1, "lf hitag list" }, + { 0, "lf hitag info" }, + { 0, "lf hitag dump" }, + { 0, "lf hitag read" }, + { 0, "lf hitag wrbl" }, + { 0, "lf hitag sniff" }, + { 0, "lf hitag cc" }, + { 0, "lf hitag ta" }, + { 0, "lf hitag eload" }, + { 0, "lf hitag sim" }, + { 1, "lf idteck help" }, + { 1, "lf idteck demod" }, + { 0, "lf idteck reader" }, + { 0, "lf idteck clone" }, + { 0, "lf idteck sim" }, + { 1, "lf indala help" }, + { 0, "lf indala brute" }, + { 1, "lf indala demod" }, + { 1, "lf indala altdemod" }, + { 0, "lf indala reader" }, + { 0, "lf indala clone" }, + { 0, "lf indala sim" }, + { 1, "lf io help" }, + { 1, "lf io demod" }, + { 0, "lf io reader" }, + { 0, "lf io clone" }, + { 0, "lf io sim" }, + { 0, "lf io watch" }, + { 1, "lf jablotron help" }, + { 1, "lf jablotron demod" }, + { 0, "lf jablotron reader" }, + { 0, "lf jablotron clone" }, + { 0, "lf jablotron sim" }, + { 1, "lf keri help" }, + { 1, "lf keri demod" }, + { 0, "lf keri reader" }, + { 0, "lf keri clone" }, + { 0, "lf keri sim" }, + { 1, "lf motorola help" }, + { 1, "lf motorola demod" }, + { 0, "lf motorola reader" }, + { 0, "lf motorola clone" }, + { 0, "lf motorola sim" }, + { 1, "lf nedap help" }, + { 1, "lf nedap demod" }, + { 0, "lf nedap reader" }, + { 0, "lf nedap clone" }, + { 0, "lf nedap sim" }, + { 1, "lf nexwatch help" }, + { 1, "lf nexwatch demod" }, + { 0, "lf nexwatch reader" }, + { 0, "lf nexwatch clone" }, + { 0, "lf nexwatch sim" }, + { 1, "lf noralsy help" }, + { 1, "lf noralsy demod" }, + { 0, "lf noralsy reader" }, + { 0, "lf noralsy clone" }, + { 0, "lf noralsy sim" }, + { 1, "lf pac help" }, + { 1, "lf pac demod" }, + { 0, "lf pac reader" }, + { 0, "lf pac clone" }, + { 0, "lf pac sim" }, + { 1, "lf paradox help" }, + { 1, "lf paradox demod" }, + { 0, "lf paradox reader" }, + { 0, "lf paradox clone" }, + { 0, "lf paradox sim" }, + { 1, "lf pcf7931 help" }, + { 0, "lf pcf7931 reader" }, + { 0, "lf pcf7931 write" }, + { 1, "lf pcf7931 config" }, + { 1, "lf presco help" }, + { 1, "lf presco demod" }, + { 0, "lf presco reader" }, + { 0, "lf presco clone" }, + { 0, "lf presco sim" }, + { 1, "lf pyramid help" }, + { 1, "lf pyramid demod" }, + { 0, "lf pyramid reader" }, + { 0, "lf pyramid clone" }, + { 0, "lf pyramid sim" }, + { 1, "lf securakey help" }, + { 1, "lf securakey demod" }, + { 0, "lf securakey reader" }, + { 0, "lf securakey clone" }, + { 0, "lf securakey sim" }, + { 1, "lf ti help" }, + { 1, "lf ti demod" }, + { 0, "lf ti reader" }, + { 0, "lf ti write" }, + { 1, "lf t55xx help" }, + { 0, "lf t55xx clonehelp" }, + { 1, "lf t55xx config" }, + { 0, "lf t55xx dangerraw" }, + { 1, "lf t55xx detect" }, + { 0, "lf t55xx deviceconfig" }, + { 0, "lf t55xx dump" }, + { 1, "lf t55xx info" }, + { 0, "lf t55xx p1detect" }, + { 0, "lf t55xx read" }, + { 0, "lf t55xx resetread" }, + { 0, "lf t55xx restore" }, + { 1, "lf t55xx trace" }, + { 0, "lf t55xx wakeup" }, + { 0, "lf t55xx write" }, + { 0, "lf t55xx bruteforce" }, + { 0, "lf t55xx chk" }, + { 0, "lf t55xx protect" }, + { 0, "lf t55xx recoverpw" }, + { 1, "lf t55xx sniff" }, + { 0, "lf t55xx special" }, + { 0, "lf t55xx wipe" }, + { 1, "lf viking help" }, + { 1, "lf viking demod" }, + { 0, "lf viking reader" }, + { 0, "lf viking clone" }, + { 0, "lf viking sim" }, + { 1, "lf visa2000 help" }, + { 1, "lf visa2000 demod" }, + { 0, "lf visa2000 reader" }, + { 0, "lf visa2000 clone" }, + { 0, "lf visa2000 sim" }, + { 1, "mem help" }, + { 0, "mem baudrate" }, + { 0, "mem dump" }, + { 0, "mem info" }, + { 0, "mem load" }, + { 0, "mem wipe" }, + { 1, "mem spiffs help" }, + { 0, "mem spiffs copy" }, + { 0, "mem spiffs check" }, + { 0, "mem spiffs dump" }, + { 0, "mem spiffs info" }, + { 0, "mem spiffs mount" }, + { 0, "mem spiffs remove" }, + { 0, "mem spiffs rename" }, + { 0, "mem spiffs test" }, + { 0, "mem spiffs tree" }, + { 0, "mem spiffs unmount" }, + { 0, "mem spiffs upload" }, + { 0, "mem spiffs view" }, + { 0, "mem spiffs wipe" }, + { 1, "nfc help" }, + { 1, "nfc decode" }, + { 0, "nfc type1 read" }, + { 1, "nfc type1 help" }, + { 0, "nfc type2 read" }, + { 1, "nfc type2 help" }, + { 0, "nfc type4a format" }, + { 0, "nfc type4a read" }, + { 0, "nfc type4a write" }, + { 0, "nfc type4a st25taread" }, + { 1, "nfc type4a help" }, + { 0, "nfc type4b read" }, + { 1, "nfc type4b help" }, + { 0, "nfc mf cformat" }, + { 0, "nfc mf cread" }, + { 0, "nfc mf cwrite" }, + { 0, "nfc mf pread" }, + { 1, "nfc mf help" }, + { 0, "nfc barcode read" }, + { 0, "nfc barcode sim" }, + { 1, "nfc barcode help" }, + { 1, "piv help" }, + { 0, "piv select" }, + { 0, "piv getdata" }, + { 0, "piv authsign" }, + { 0, "piv scan" }, + { 1, "piv list" }, + { 1, "smart help" }, + { 1, "smart list" }, + { 0, "smart info" }, + { 0, "smart reader" }, + { 0, "smart raw" }, + { 1, "smart upgrade" }, + { 0, "smart setclock" }, + { 0, "smart brute" }, + { 1, "script help" }, + { 1, "script list" }, + { 1, "script run" }, + { 1, "trace help" }, + { 1, "trace extract" }, + { 1, "trace list" }, + { 1, "trace load" }, + { 1, "trace save" }, + { 1, "usart help" }, + { 0, "usart btpin" }, + { 0, "usart btfactory" }, + { 0, "usart tx" }, + { 0, "usart rx" }, + { 0, "usart txrx" }, + { 0, "usart txhex" }, + { 0, "usart rxhex" }, + { 0, "usart config" }, + { 1, "wiegand help" }, + { 1, "wiegand list" }, + { 1, "wiegand encode" }, + { 1, "wiegand decode" }, {0, NULL} }; @@ -808,4 +809,4 @@ const static vocabulory_t vocabulory[] = { } #endif -#endif +#endif \ No newline at end of file diff --git a/doc/commands.json b/doc/commands.json index 4506b7450..d0fe5ad8b 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -1895,6 +1895,19 @@ ], "usage": "hf 15 sniff [-h]" }, + "hf 15 view": { + "command": "hf 15 view", + "description": "Print a ISO-15693 tag dump file (bin/eml/json)", + "notes": [ + "hf 15 view -f hf-iclass-AA162D30F8FF12F1-dump.bin" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-f, --file filename of dump (bin/eml/json)" + ], + "usage": "hf 15 view [-h] -f " + }, "hf 15 wrbl": { "command": "hf 15 wrbl", "description": "Write block on ISO-15693 tag", @@ -4375,13 +4388,11 @@ "options": [ "-h, --help This help", "--blk block number", - "-a input key type is key A (def)", - "-b input key type is key B", "-d, --data bytes to write, 16 hex bytes", "-k, --key key, 6 hex bytes", "--force override warnings" ], - "usage": "hf mf gdmsetblk [-hab] --blk [-d ] [-k ] [--force]" + "usage": "hf mf gdmsetblk [-h] --blk [-d ] [-k ] [--force]" }, "hf mf gdmsetcfg": { "command": "hf mf gdmsetcfg", @@ -11768,8 +11779,8 @@ } }, "metadata": { - "commands_extracted": 682, + "commands_extracted": 683, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-07-23T09:59:37" + "extracted_on": "2023-07-26T21:49:57" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index 99ddf0efb..a26d55d8e 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -236,10 +236,12 @@ Check column "offline" for their availability. |`hf 15 reader `|N |`Act like an ISO-15693 reader` |`hf 15 restore `|N |`Restore from file to all memory pages of an ISO-15693 tag` |`hf 15 samples `|N |`Acquire samples as reader (enables carrier, sends inquiry)` +|`hf 15 view `|Y |`Display content from tag dump file` +|`hf 15 wrbl `|N |`Write a block` +|`hf 15 sim `|N |`Fake an ISO-15693 tag` |`hf 15 eload `|N |`Load image file into emulator to be used by 'sim' command` |`hf 15 esave `|N |`Save emulator memory into image file` |`hf 15 eview `|N |`View emulator memory` -|`hf 15 sim `|N |`Fake an ISO-15693 tag` |`hf 15 slixwritepwd `|N |`Writes a password on a SLIX ISO-15693 tag` |`hf 15 slixeasdisable `|N |`Disable EAS mode on SLIX ISO-15693 tag` |`hf 15 slixeasenable `|N |`Enable EAS mode on SLIX ISO-15693 tag` @@ -247,7 +249,6 @@ Check column "offline" for their availability. |`hf 15 slixprivacyenable`|N |`Enable privacy mode on SLIX ISO-15693 tag` |`hf 15 passprotectafi `|N |`Password protect AFI - Cannot be undone` |`hf 15 passprotecteas `|N |`Password protect EAS - Cannot be undone` -|`hf 15 wrbl `|N |`Write a block` |`hf 15 findafi `|N |`Brute force AFI of an ISO-15693 tag` |`hf 15 writeafi `|N |`Writes the AFI on an ISO-15693 tag` |`hf 15 writedsfid `|N |`Writes the DSFID on an ISO-15693 tag` @@ -404,13 +405,14 @@ Check column "offline" for their availability. |command |offline |description |------- |------- |----------- |`hf iclass help `|Y |`This help` +|`hf iclass list `|Y |`List iclass history` |`hf iclass dump `|N |`Dump Picopass / iCLASS tag to file` |`hf iclass info `|Y |`Tag information` -|`hf iclass list `|Y |`List iclass history` |`hf iclass rdbl `|N |`Read Picopass / iCLASS block` |`hf iclass reader `|N |`Act like a Picopass / iCLASS reader` |`hf iclass restore `|N |`Restore a dump file onto a Picopass / iCLASS tag` |`hf iclass sniff `|N |`Eavesdrop Picopass / iCLASS communication` +|`hf iclass view `|Y |`Display content from tag dump file` |`hf iclass wrbl `|N |`Write Picopass / iCLASS block` |`hf iclass chk `|N |`Check keys` |`hf iclass loclass `|Y |`Use loclass to perform bruteforce reader attack` @@ -426,7 +428,6 @@ Check column "offline" for their availability. |`hf iclass decrypt `|Y |`Decrypt given block data or tag dump file` |`hf iclass managekeys `|Y |`Manage keys to use with iclass commands` |`hf iclass permutekey `|Y |`Permute function from 'heart of darkness' paper` -|`hf iclass view `|Y |`Display content from tag dump file` |`hf iclass sam `|N |`SAM tests` @@ -878,14 +879,14 @@ Check column "offline" for their availability. |`lf em 4x05 help `|Y |`This help` |`lf em 4x05 brute `|N |`Bruteforce password` |`lf em 4x05 chk `|N |`Check passwords from dictionary` -|`lf em 4x05 demod `|Y |`demodulate a EM4x05/EM4x69 tag from the GraphBuffer` -|`lf em 4x05 dump `|N |`dump EM4x05/EM4x69 tag` -|`lf em 4x05 info `|N |`tag information EM4x05/EM4x69` -|`lf em 4x05 read `|N |`read word data from EM4x05/EM4x69` +|`lf em 4x05 demod `|Y |`Demodulate a EM4x05/EM4x69 tag from the GraphBuffer` +|`lf em 4x05 dump `|N |`Dump EM4x05/EM4x69 tag` +|`lf em 4x05 info `|N |`Tag information` +|`lf em 4x05 read `|N |`Read word data from EM4x05/EM4x69` |`lf em 4x05 sniff `|Y |`Attempt to recover em4x05 commands from sample buffer` -|`lf em 4x05 unlock `|N |`execute tear off against EM4x05/EM4x69` -|`lf em 4x05 wipe `|N |`wipe EM4x05/EM4x69 tag` -|`lf em 4x05 write `|N |`write word data to EM4x05/EM4x69` +|`lf em 4x05 unlock `|N |`Execute tear off against EM4x05/EM4x69` +|`lf em 4x05 wipe `|N |`Wipe EM4x05/EM4x69 tag` +|`lf em 4x05 write `|N |`Write word data to EM4x05/EM4x69` ### lf em 4x50 From e1e41335644bd71d8fc6f0e97e24eeae7ebfc8b9 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 01:11:47 +0200 Subject: [PATCH 124/299] coverity string formatter --- client/src/cmdhf15.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index fa25e001c..75b972871 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -1133,7 +1133,7 @@ static int CmdHF15ELoad(const char *Cmd) { } free(data); PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(SUCCESS, "uploaded " _YELLOW_("%d") " bytes to emulator memory", offset); + PrintAndLogEx(SUCCESS, "uploaded " _YELLOW_("%zu") " bytes to emulator memory", offset); PrintAndLogEx(HINT, "You are ready to simulate. See " _YELLOW_("`hf 15 sim -h`")); PrintAndLogEx(INFO, "Done!"); From a57cfdde70236b60ff67d153935f0e3ca96ba53e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 01:12:08 +0200 Subject: [PATCH 125/299] size? --- client/src/fileutils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 06bd26b66..8391ebaf7 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -204,7 +204,7 @@ char *newfilenamemcopyEx(const char *preferredName, const char *suffix, savePath char *pfn = fileName; // user preference save paths - int save_path_len = path_size(e_save_path); + size_t save_path_len = path_size(e_save_path); if (save_path_len) { snprintf(pfn, len, "%s%s", g_session.defaultPaths[e_save_path], PATHSEP); pfn += save_path_len + strlen(PATHSEP); From 7f5590d9420b1067b31735a3a8c3e71f82016613 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 01:15:31 +0200 Subject: [PATCH 126/299] checks --- client/src/fileutils.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 8391ebaf7..9ac75890f 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -205,8 +205,8 @@ char *newfilenamemcopyEx(const char *preferredName, const char *suffix, savePath // user preference save paths size_t save_path_len = path_size(e_save_path); - if (save_path_len) { - snprintf(pfn, len, "%s%s", g_session.defaultPaths[e_save_path], PATHSEP); + if (save_path_len < FILE_PATH_SIZE ) { + snprintf(pfn, len, "%.*s%s", (int)save_path_len, g_session.defaultPaths[e_save_path], PATHSEP); pfn += save_path_len + strlen(PATHSEP); } From 96944aec698debaea708e103be0acf85cbafc8a5 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 12:37:42 +0200 Subject: [PATCH 127/299] reinstate less checks of data_available --- armsrc/legicrfsim.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/armsrc/legicrfsim.c b/armsrc/legicrfsim.c index f1bc40968..bfa01c301 100644 --- a/armsrc/legicrfsim.c +++ b/armsrc/legicrfsim.c @@ -476,14 +476,20 @@ void LegicRfSimulate(uint8_t tagtype, bool send_reply) { Dbprintf("Legic Prime, simulating uid... " _YELLOW_("%02X%02X%02X%02X"), legic_mem[0], legic_mem[1], legic_mem[2], legic_mem[3]); + uint16_t counter = 0; while (BUTTON_PRESS() == false) { WDT_HIT(); - if (data_available()) { - res = PM3_EOPABORTED; - goto OUT; + if (counter >= 1000) { + if (data_available()) { + res = PM3_EOPABORTED; + goto OUT; + } + counter = 0; } + counter++; + // wait for carrier, restart after timeout if (wait_for(RWD_PULSE, GetCountSspClk() + TAG_BIT_PERIOD) == false) { continue; From dc199b62caa4c3db446e610d21b433b6d68de328 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 12:38:40 +0200 Subject: [PATCH 128/299] text --- client/src/cmdhflegic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index 7d9cd8e88..488f8dcb2 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -888,7 +888,7 @@ static int CmdLegicDump(const char *Cmd) { uint16_t dumplen = card.cardsize; legic_print_type(dumplen, 0); - PrintAndLogEx(SUCCESS, "Reading tag memory %d b...", dumplen); + PrintAndLogEx(SUCCESS, "Reading tag memory." NOLF); legic_packet_t *payload = calloc(1, sizeof(legic_packet_t)); payload->offset = 0; From 42700d3c51cab0ddff8972b13d90f0fa22fc5b71 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 12:40:04 +0200 Subject: [PATCH 129/299] skip sector 16 at all since it seems to always be locked down even if the keys authenticate. MFC Ev1 related and less errrors in autopwn when running against a MFC Ev1 in the dumping phase --- armsrc/mifarecmd.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 196adeaed..162b8e902 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -2084,13 +2084,20 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { iso14a_set_timeout(fwt / (8 * 16)); for (uint8_t s = 0; s < sectorcnt; s++) { - uint64_t ui64Key = emlGetKey(s, keytype); - // MFC 1K EV1 sector 16,17 don't use key A. - if ((sectorcnt == 18) && (keytype == 0) && s > 15) { - continue; + if (sectorcnt == 18) { + // MFC 1K EV1, skip sector 16 since its lockdown + if (s == 16) { + continue; + } + // MFC 1K EV1 sector 17 don't use key A. + if (keytype == 0) { + continue; + } } + uint64_t ui64Key = emlGetKey(s, keytype); + // use fast select if (have_uid == false) { // need a full select cycle to get the uid first iso14a_card_select_t card_info; From 795745ea32461db6defa6f49eb6bf1af76125f75 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 14:20:37 +0200 Subject: [PATCH 130/299] text --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 11bcdd41f..45f33d665 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -2552,7 +2552,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { if (has_staticnonce == NONCE_NORMAL) { prng_type = detect_classic_prng(); if (prng_type < 0) { - PrintAndLogEx(FAILED, "\nNo tag detected or other tag communication error (%u)", prng_type); + PrintAndLogEx(FAILED, "\nNo tag detected or other tag communication error (%i)", prng_type); free(e_sector); free(fptr); return PM3_ESOFT; From 7440e617e0c6e8c92dc264a3fb5977c9aba389ac Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 16:26:36 +0200 Subject: [PATCH 131/299] add stupid extra checks to see why this code overflows on pentoo... --- client/src/fileutils.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 9ac75890f..a1633844b 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -175,7 +175,7 @@ static char *filenamemcopy(const char *preferredName, const char *suffix) { } static size_t path_size(savePaths_t a) { - if (a == spItemCount) { + if (a >= spItemCount) { return 0; } return strlen(g_session.defaultPaths[a]); @@ -205,9 +205,10 @@ char *newfilenamemcopyEx(const char *preferredName, const char *suffix, savePath // user preference save paths size_t save_path_len = path_size(e_save_path); - if (save_path_len < FILE_PATH_SIZE ) { - snprintf(pfn, len, "%.*s%s", (int)save_path_len, g_session.defaultPaths[e_save_path], PATHSEP); - pfn += save_path_len + strlen(PATHSEP); + if (save_path_len && save_path_len < (FILE_PATH_SIZE - strlen(PATHSEP))) { + snprintf(pfn, len, "%s%s", g_session.defaultPaths[e_save_path], PATHSEP); + pfn += save_path_len; + pfn += strlen(PATHSEP); } // remove file extension if exist in name From d9f2d5287e2929734cfa53a1a19a2bd7022c0708 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 16:46:52 +0200 Subject: [PATCH 132/299] maybe the return codes are wrong in legic sim now --- armsrc/legicrfsim.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/armsrc/legicrfsim.c b/armsrc/legicrfsim.c index bfa01c301..ac207ebaf 100644 --- a/armsrc/legicrfsim.c +++ b/armsrc/legicrfsim.c @@ -91,7 +91,7 @@ static bool wait_for(bool value, const uint32_t timeout) { // - A bit length >80.2us is a 1 // - A bit length <80.2us is a 0 // - A bit length >148.6us is a code violation -static int8_t rx_bit(void) { +static int32_t rx_bit(void) { // backup ts for threshold calculation uint32_t bit_start = last_frame_end; @@ -246,7 +246,7 @@ static int32_t rx_frame(uint8_t *len) { for (*len = 0; true; ++(*len)) { // receive next bit LED_B_ON(); - int8_t bit = rx_bit(); + int32_t bit = rx_bit(); LED_B_OFF(); // check for code violation and to short / long frame From 5faf625032352439652566bfb22660a9e7919070 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 18:02:53 +0200 Subject: [PATCH 133/299] adapt name to match code style --- armsrc/iso14443a.c | 12 +++++++----- armsrc/iso14443a.h | 2 +- client/src/cmdhf14a.c | 32 ++++++++++++++++---------------- client/src/cmdhf14a.h | 4 ++-- client/src/cmdhfvas.c | 6 +++--- include/mifare.h | 6 +++--- 6 files changed, 32 insertions(+), 30 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 325bebf16..cb5f89118 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -144,7 +144,7 @@ static hf14a_config hf14aconfig = { 0, 0, 0, 0, 0 } ; // Polling frames and configurations -static iso14a_polling_parameters WUPA_POLLING_PARAMETERS = { +static iso14a_polling_parameters_t WUPA_POLLING_PARAMETERS = { .frames = { {{ 0x52 }, 1, 7, 0} }, .frame_count = 1, .extra_timeout = 0, @@ -2523,7 +2523,7 @@ static void iso14a_set_ATS_times(const uint8_t *ats) { } -static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters *polling_parameters) { +static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters_t *polling_parameters) { #define WUPA_RETRY_TIMEOUT 10 uint32_t save_iso14a_timeout = iso14a_get_timeout(); @@ -2537,7 +2537,7 @@ static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters * uint8_t current_frame = 0; do { - iso14a_polling_frame *frame_parameters = &polling_parameters->frames[current_frame]; + iso14a_polling_frame_t *frame_parameters = &polling_parameters->frames[current_frame]; if (frame_parameters->last_byte_bits == 8) { ReaderTransmit(frame_parameters->frame, frame_parameters->frame_length, NULL); @@ -2579,7 +2579,9 @@ int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32 // if anticollision is false, then the UID must be provided in uid_ptr[] // and num_cascades must be set (1: 4 Byte UID, 2: 7 Byte UID, 3: 10 Byte UID) // requests ATS unless no_rats is true -int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats, iso14a_polling_parameters *polling_parameters) { +int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, + bool anticollision, uint8_t num_cascades, bool no_rats, + iso14a_polling_parameters_t *polling_parameters) { uint8_t resp[MAX_FRAME_SIZE] = {0}; // theoretically. A usual RATS will be much smaller uint8_t resp_par[MAX_PARITY_SIZE] = {0}; @@ -3033,7 +3035,7 @@ void ReaderIso14443a(PacketCommandNG *c) { arg0 = iso14443a_select_cardEx( NULL, card, NULL, true, 0, (param & ISO14A_NO_RATS), - (param & ISO14A_USE_CUSTOM_POLLING) ? (iso14a_polling_parameters *)cmd : &WUPA_POLLING_PARAMETERS + (param & ISO14A_USE_CUSTOM_POLLING) ? (iso14a_polling_parameters_t *)cmd : &WUPA_POLLING_PARAMETERS ); // TODO: Improve by adding a cmd parser pointer and moving it by struct length to allow combining data with polling params FpgaDisableTracing(); diff --git a/armsrc/iso14443a.h b/armsrc/iso14443a.h index 817ee7df4..a6f68067b 100644 --- a/armsrc/iso14443a.h +++ b/armsrc/iso14443a.h @@ -151,7 +151,7 @@ uint16_t ReaderReceive(uint8_t *receivedAnswer, uint8_t *par); void iso14443a_setup(uint8_t fpga_minor_mode); int iso14_apdu(uint8_t *cmd, uint16_t cmd_len, bool send_chaining, void *data, uint8_t *res); int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats); -int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats, iso14a_polling_parameters *polling_parameters); +int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, bool anticollision, uint8_t num_cascades, bool no_rats, iso14a_polling_parameters_t *polling_parameters); int iso14443a_fast_select_card(uint8_t *uid_ptr, uint8_t num_cascades); void iso14a_set_trigger(bool enable); diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index daa9ba8fb..85f7c9588 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -55,27 +55,27 @@ static int CmdHelp(const char *Cmd); static int waitCmd(bool i_select, uint32_t timeout, bool verbose); -static const iso14a_polling_frame WUPA_FRAME = { +static const iso14a_polling_frame_t WUPA_FRAME = { { 0x52 }, 1, 7, 0, }; -static const iso14a_polling_frame MAGWUPA1_FRAME = { +static const iso14a_polling_frame_t MAGWUPA1_FRAME = { { 0x7A }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA2_FRAME = { +static const iso14a_polling_frame_t MAGWUPA2_FRAME = { { 0x7B }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA3_FRAME = { +static const iso14a_polling_frame_t MAGWUPA3_FRAME = { { 0x7C }, 1, 7, 0 }; -static const iso14a_polling_frame MAGWUPA4_FRAME = { +static const iso14a_polling_frame_t MAGWUPA4_FRAME = { { 0x7D }, 1, 7, 0 }; -static const iso14a_polling_frame ECP_FRAME = { +static const iso14a_polling_frame_t ECP_FRAME = { .frame = { 0x6a, 0x02, 0xC8, 0x01, 0x00, 0x03, 0x00, 0x02, 0x79, 0x00, 0x00, 0x00, 0x00, 0xC2, 0xD8}, .frame_length = 15, .last_byte_bits = 8, @@ -462,25 +462,25 @@ int Hf14443_4aGetCardData(iso14a_card_select_t *card) { return 0; } -iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe) { +iso14a_polling_parameters_t iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe) { // Extra 100ms give enough time for Apple (ECP) devices to proccess field info and make a decision if (use_ecp && use_magsafe) { - iso14a_polling_parameters full_polling_parameters = { + iso14a_polling_parameters_t full_polling_parameters = { .frames = { WUPA_FRAME, ECP_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, .frame_count = 6, .extra_timeout = 100 }; return full_polling_parameters; } else if (use_ecp) { - iso14a_polling_parameters ecp_polling_parameters = { + iso14a_polling_parameters_t ecp_polling_parameters = { .frames = { WUPA_FRAME, ECP_FRAME }, .frame_count = 2, .extra_timeout = 100 }; return ecp_polling_parameters; } else if (use_magsafe) { - iso14a_polling_parameters magsafe_polling_parameters = { + iso14a_polling_parameters_t magsafe_polling_parameters = { .frames = { WUPA_FRAME, MAGWUPA1_FRAME, MAGWUPA2_FRAME, MAGWUPA3_FRAME, MAGWUPA4_FRAME }, .frame_count = 5, .extra_timeout = 0 @@ -488,7 +488,7 @@ iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_m return magsafe_polling_parameters; } - iso14a_polling_parameters wupa_polling_parameters = { + iso14a_polling_parameters_t wupa_polling_parameters = { .frames = { WUPA_FRAME }, .frame_count = 1, .extra_timeout = 0, @@ -539,8 +539,8 @@ static int CmdHF14AReader(const char *Cmd) { bool use_ecp = arg_get_lit(ctx, 5); bool use_magsafe = arg_get_lit(ctx, 6); - iso14a_polling_parameters *polling_parameters = NULL; - iso14a_polling_parameters parameters = iso14a_get_polling_parameters(use_ecp, use_magsafe); + iso14a_polling_parameters_t *polling_parameters = NULL; + iso14a_polling_parameters_t parameters = iso14a_get_polling_parameters(use_ecp, use_magsafe); if (use_ecp || use_magsafe) { cm |= ISO14A_USE_CUSTOM_POLLING; polling_parameters = ¶meters; @@ -562,7 +562,7 @@ static int CmdHF14AReader(const char *Cmd) { clearCommandBuffer(); if (cm & ISO14A_USE_CUSTOM_POLLING) { - SendCommandMIX(CMD_HF_ISO14443A_READER, cm, 0, 0, (uint8_t *)polling_parameters, sizeof(iso14a_polling_parameters)); + SendCommandMIX(CMD_HF_ISO14443A_READER, cm, 0, 0, (uint8_t *)polling_parameters, sizeof(iso14a_polling_parameters_t)); } else { SendCommandMIX(CMD_HF_ISO14443A_READER, cm, 0, 0, NULL, 0); } @@ -967,7 +967,7 @@ int ExchangeRAW14a(uint8_t *datain, int datainlen, bool activateField, bool leav return 0; } -int SelectCard14443A_4_WithParameters(bool disconnect, bool verbose, iso14a_card_select_t *card, iso14a_polling_parameters *polling_parameters) { +int SelectCard14443A_4_WithParameters(bool disconnect, bool verbose, iso14a_card_select_t *card, iso14a_polling_parameters_t *polling_parameters) { // global vars should be prefixed with g_ gs_frame_len = 0; gs_frames_num = 0; @@ -981,7 +981,7 @@ int SelectCard14443A_4_WithParameters(bool disconnect, bool verbose, iso14a_card // Anticollision + SELECT card PacketResponseNG resp; if (polling_parameters != NULL) { - SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_NO_DISCONNECT | ISO14A_USE_CUSTOM_POLLING, 0, 0, (uint8_t *)polling_parameters, sizeof(iso14a_polling_parameters)); + SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_NO_DISCONNECT | ISO14A_USE_CUSTOM_POLLING, 0, 0, (uint8_t *)polling_parameters, sizeof(iso14a_polling_parameters_t)); } else { SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_CONNECT | ISO14A_NO_DISCONNECT, 0, 0, NULL, 0); } diff --git a/client/src/cmdhf14a.h b/client/src/cmdhf14a.h index 8d0c1d8bc..d7304501f 100644 --- a/client/src/cmdhf14a.h +++ b/client/src/cmdhf14a.h @@ -52,9 +52,9 @@ int Hf14443_4aGetCardData(iso14a_card_select_t *card); int ExchangeAPDU14a(uint8_t *datain, int datainlen, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen); int ExchangeRAW14a(uint8_t *datain, int datainlen, bool activateField, bool leaveSignalON, uint8_t *dataout, int maxdataoutlen, int *dataoutlen, bool silentMode); -iso14a_polling_parameters iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe); +iso14a_polling_parameters_t iso14a_get_polling_parameters(bool use_ecp, bool use_magsafe); int SelectCard14443A_4(bool disconnect, bool verbose, iso14a_card_select_t *card); -int SelectCard14443A_4_WithParameters(bool disconnect, bool verbose, iso14a_card_select_t *card, iso14a_polling_parameters *polling_parameters); +int SelectCard14443A_4_WithParameters(bool disconnect, bool verbose, iso14a_card_select_t *card, iso14a_polling_parameters_t *polling_parameters); bool Get_apdu_in_framing(void); void Set_apdu_in_framing(bool v); diff --git a/client/src/cmdhfvas.c b/client/src/cmdhfvas.c index ac0365cdf..9d04b7477 100644 --- a/client/src/cmdhfvas.c +++ b/client/src/cmdhfvas.c @@ -41,14 +41,14 @@ #include "mbedtls/ecc_point_compression.h" #include "mbedtls/gcm.h" -static const iso14a_polling_frame WUPA_FRAME = { +static const iso14a_polling_frame_t WUPA_FRAME = { .frame = { 0x52 }, .frame_length = 1, .last_byte_bits = 7, .extra_delay = 0, }; -static const iso14a_polling_frame ECP_VAS_ONLY_FRAME = { +static const iso14a_polling_frame_t ECP_VAS_ONLY_FRAME = { .frame = {0x6a, 0x01, 0x00, 0x00, 0x02, 0xe4, 0xd2}, .frame_length = 7, .last_byte_bits = 8, @@ -349,7 +349,7 @@ static int DecryptVASCryptogram(uint8_t *pidHash, uint8_t *cryptogram, size_t cr static int VASReader(uint8_t *pidHash, const char *url, size_t urlLen, uint8_t *cryptogram, size_t *cryptogramLen, bool verbose) { clearCommandBuffer(); - iso14a_polling_parameters polling_parameters = { + iso14a_polling_parameters_t polling_parameters = { .frames = { WUPA_FRAME, ECP_VAS_ONLY_FRAME }, .frame_count = 2, .extra_timeout = 250 diff --git a/include/mifare.h b/include/mifare.h index 863734cb5..b59b29c8d 100644 --- a/include/mifare.h +++ b/include/mifare.h @@ -86,15 +86,15 @@ typedef struct { uint8_t frame_length; uint8_t last_byte_bits; uint16_t extra_delay; -} iso14a_polling_frame; +} PACKED iso14a_polling_frame_t; // Defines polling sequence configuration // 6 would be enough for 4 magsafe, 1 wupa, 1 ecp, typedef struct { - iso14a_polling_frame frames[6]; + iso14a_polling_frame_t frames[6]; uint8_t frame_count; uint16_t extra_timeout; -} iso14a_polling_parameters; +} PACKED iso14a_polling_parameters_t; typedef struct { uint8_t *response; From 3b91c1a47f3088c335b01d455122fb82f8219072 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 18:50:19 +0200 Subject: [PATCH 134/299] text --- client/src/cmdhfmf.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 45f33d665..10e305912 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -3113,8 +3113,9 @@ all_found: clearCommandBuffer(); SendCommandNG(CMD_HF_MIFARE_EML_MEMCLR, NULL, 0); - PrintAndLogEx(SUCCESS, "transferring keys to simulator memory (Cmd Error: 04 can occur)"); + PrintAndLogEx(INFO, "transferring keys to simulator memory" NOLF); + bool transfer_status = true; for (current_sector_i = 0; current_sector_i < sector_cnt; current_sector_i++) { mfEmlGetMem(block, current_sector_i, 1); if (e_sector[current_sector_i].foundKey[0]) @@ -3122,8 +3123,11 @@ all_found: if (e_sector[current_sector_i].foundKey[1]) num_to_bytes(e_sector[current_sector_i].Key[1], 6, block + 10); - mfEmlSetMem(block, mfFirstBlockOfSector(current_sector_i) + mfNumBlocksPerSector(current_sector_i) - 1, 1); + transfer_status |= mfEmlSetMem(block, mfFirstBlockOfSector(current_sector_i) + mfNumBlocksPerSector(current_sector_i) - 1, 1); } + PrintAndLogEx(NORMAL, "( %s )", (transfer_status) ? _GREEN_("ok") : _RED_("fail")); + + PrintAndLogEx(INFO, "dumping card content to emulator memory (Cmd Error: 04 can occur)"); // use ecfill trick FastDumpWithEcFill(sector_cnt); @@ -3137,8 +3141,8 @@ all_found: return PM3_EMALLOC; } - PrintAndLogEx(INFO, "downloading the card content from emulator memory"); - if (!GetFromDevice(BIG_BUF_EML, dump, bytes, 0, NULL, 0, NULL, 2500, false)) { + PrintAndLogEx(INFO, "downloading card content from emulator memory"); + if (GetFromDevice(BIG_BUF_EML, dump, bytes, 0, NULL, 0, NULL, 2500, false) == false) { PrintAndLogEx(ERR, "Fail, transfer from device time-out"); free(e_sector); free(dump); From 40533497d3c225f2b54df5a7890d397feca034ee Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 18:50:41 +0200 Subject: [PATCH 135/299] text --- client/src/fileutils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index a1633844b..9a56b4eba 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -808,7 +808,7 @@ int createMfcKeyDump(const char *preferredName, uint8_t sectorsCnt, sector_t *e_ fflush(f); fclose(f); PrintAndLogEx(SUCCESS, "Found keys have been dumped to " _YELLOW_("%s"), fileName); - PrintAndLogEx(INFO, "FYI! --> " _YELLOW_("0xFFFFFFFFFFFF") " <-- has been inserted for unknown keys where " _YELLOW_("res") " is " _RED_("0")); + PrintAndLogEx(INFO, "--[ " _YELLOW_("FFFFFFFFFFFF") " ]-- has been inserted for unknown keys where " _YELLOW_("res") " is " _RED_("0")); free(fileName); return PM3_SUCCESS; } From 6ba002725f90e5e6a3dadadf07175e018932682f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 18:55:41 +0200 Subject: [PATCH 136/299] rmeoved some fct devices side regarding eml get/ set --- armsrc/BigBuf.c | 13 +++++++--- armsrc/BigBuf.h | 1 + armsrc/Standalone/hf_colin.c | 8 +++--- armsrc/Standalone/hf_mattyrun.c | 6 ++--- armsrc/iso15693.c | 20 +++++---------- armsrc/iso15693.h | 2 -- armsrc/mifarecmd.c | 13 ++-------- armsrc/mifarecmd.h | 1 - armsrc/mifaresim.c | 2 +- armsrc/mifareutil.c | 43 ++++++++++++++------------------- 10 files changed, 45 insertions(+), 64 deletions(-) diff --git a/armsrc/BigBuf.c b/armsrc/BigBuf.c index 6cd3a29f7..29f270b80 100644 --- a/armsrc/BigBuf.c +++ b/armsrc/BigBuf.c @@ -308,15 +308,22 @@ bool RAMFUNC LogTraceBits(const uint8_t *btBytes, uint16_t bitLen, uint32_t time // Emulator memory uint8_t emlSet(uint8_t *data, uint32_t offset, uint32_t length) { uint8_t *mem = BigBuf_get_EM_addr(); - if (offset + length < CARD_MEMORY_SIZE) { + if (offset + length <= CARD_MEMORY_SIZE) { memcpy(mem + offset, data, length); return 0; } Dbprintf("Error, trying to set memory outside of bounds! " _RED_("%d") " > %d", (offset + length), CARD_MEMORY_SIZE); return 1; } - - +uint8_t emlGet(uint8_t *out, uint32_t offset, uint32_t length) { + uint8_t *mem = BigBuf_get_EM_addr(); + if (offset + length <= CARD_MEMORY_SIZE) { + memcpy(out, mem + offset, length); + return 0; + } + Dbprintf("Error, trying to read memory outside of bounds! " _RED_("%d") " > %d", (offset + length), CARD_MEMORY_SIZE); + return 1; +} // get the address of the ToSend buffer. Allocate part of Bigbuf for it, if not yet done tosend_t *get_tosend(void) { diff --git a/armsrc/BigBuf.h b/armsrc/BigBuf.h index b1003a4c1..81c2fbdfc 100644 --- a/armsrc/BigBuf.h +++ b/armsrc/BigBuf.h @@ -56,6 +56,7 @@ bool RAMFUNC LogTraceBits(const uint8_t *btBytes, uint16_t bitLen, uint32_t time bool LogTrace_ISO15693(const uint8_t *bytes, uint16_t len, uint32_t ts_start, uint32_t ts_end, uint8_t *parity, bool reader2tag); uint8_t emlSet(uint8_t *data, uint32_t offset, uint32_t length); +uint8_t emlGet(uint8_t *out, uint32_t offset, uint32_t length); typedef struct { int max; diff --git a/armsrc/Standalone/hf_colin.c b/armsrc/Standalone/hf_colin.c index 91fa971eb..044d3aba3 100644 --- a/armsrc/Standalone/hf_colin.c +++ b/armsrc/Standalone/hf_colin.c @@ -293,7 +293,7 @@ static void ReadLastTagFromFlash(void) { rdv40_spiffs_read_as_filetype((char *)HFCOLIN_LASTTAG_SYMLINK, (uint8_t *)mem, len, RDV40_SPIFFS_SAFETY_SAFE); // copy 64blocks (16bytes) starting w block0, to emulator mem. - emlSetMem(mem, 0, 64); + emlSetMem_xt(mem, 0, 64, 16); DbprintfEx(FLAG_NEWLINE, "[OK] Last tag recovered from FLASHMEM set to emulator"); cjSetCursLeft(); @@ -650,7 +650,7 @@ failtag: for (uint8_t t = 0; t < 2; t++) { memcpy(mblock + t * 10, foundKey[t][sectorNo], 6); } - emlSetMem(mblock, FirstBlockOfSector(sectorNo) + NumBlocksPerSector(sectorNo) - 1, 1); + emlSetMem_xt(mblock, FirstBlockOfSector(sectorNo) + NumBlocksPerSector(sectorNo) - 1, 1, 16); } cjSetCursLeft(); @@ -827,12 +827,12 @@ int e_MifareECardLoad(uint32_t numofsectors, uint8_t keytype) { }; if (isOK) { if (blockNo < NumBlocksPerSector(s) - 1) { - emlSetMem(dataoutbuf, FirstBlockOfSector(s) + blockNo, 1); + emlSetMem_xt(dataoutbuf, FirstBlockOfSector(s) + blockNo, 1, 16); } else { // sector trailer, keep the keys, set only the AC emlGetMem(dataoutbuf2, FirstBlockOfSector(s) + blockNo, 1); memcpy(&dataoutbuf2[6], &dataoutbuf[6], 4); - emlSetMem(dataoutbuf2, FirstBlockOfSector(s) + blockNo, 1); + emlSetMem_xt(dataoutbuf2, FirstBlockOfSector(s) + blockNo, 1, 16); } } } diff --git a/armsrc/Standalone/hf_mattyrun.c b/armsrc/Standalone/hf_mattyrun.c index 9b41f18c4..ed6f93a3b 100644 --- a/armsrc/Standalone/hf_mattyrun.c +++ b/armsrc/Standalone/hf_mattyrun.c @@ -273,12 +273,12 @@ static int saMifareECardLoad(uint32_t numofsectors, uint8_t keytype) { }; if (blockNo < NumBlocksPerSector(s) - 1) { - emlSetMem(dataoutbuf, FirstBlockOfSector(s) + blockNo, 1); + emlSetMem_xt(dataoutbuf, FirstBlockOfSector(s) + blockNo, 1, 16); } else { // sector trailer, keep the keys, set only the AC emlGetMem(dataoutbuf2, FirstBlockOfSector(s) + blockNo, 1); memcpy(&dataoutbuf2[6], &dataoutbuf[6], 4); - emlSetMem(dataoutbuf2, FirstBlockOfSector(s) + blockNo, 1); + emlSetMem_xt(dataoutbuf2, FirstBlockOfSector(s) + blockNo, 1, 16); } } } @@ -505,7 +505,7 @@ void RunMod(void) { memcpy(mblock + t * 10, foundKey[t][sectorNo], 6); } } - emlSetMem(mblock, FirstBlockOfSector(sectorNo) + NumBlocksPerSector(sectorNo) - 1, 1); + emlSetMem_xt(mblock, FirstBlockOfSector(sectorNo) + NumBlocksPerSector(sectorNo) - 1, 1, 16); } } diff --git a/armsrc/iso15693.c b/armsrc/iso15693.c index a52b953ff..e0c3e4436 100644 --- a/armsrc/iso15693.c +++ b/armsrc/iso15693.c @@ -2119,7 +2119,6 @@ void Iso15693InitTag(void) { StartCountSspClk(); } - void EmlClearIso15693(void) { // Resetting the bitstream also frees the BigBuf memory, so we do this here to prevent // an inconvenient reset in the future by Iso15693InitTag @@ -2128,16 +2127,6 @@ void EmlClearIso15693(void) { reply_ng(CMD_HF_ISO15693_EML_CLEAR, PM3_SUCCESS, NULL, 0); } -void EmlSetMemIso15693(uint8_t count, uint8_t *data, uint32_t offset) { - uint8_t *emCARD = BigBuf_get_EM_addr(); - memcpy(emCARD + offset, data, count); -} - -void EmlGetMemIso15693(uint8_t count, uint8_t *output, uint32_t offset) { - uint8_t *emCARD = BigBuf_get_EM_addr(); - memcpy(output, emCARD + offset, count); -} - // Simulate an ISO15693 TAG, perform anti-collision and then print any reader commands // all demodulation performed in arm rather than host. - greg void SimTagIso15693(uint8_t *uid, uint8_t block_size) { @@ -2296,8 +2285,11 @@ void SimTagIso15693(uint8_t *uid, uint8_t block_size) { } // Block data if (block_size * (block_idx + j + 1) <= CARD_MEMORY_SIZE) { - EmlGetMemIso15693(block_size, resp_readblock + (work_offset + security_offset), - block_size * (block_idx + j)); + emlGet( + resp_readblock + (work_offset + security_offset), + block_size * (block_idx + j), + block_size + ); } else { memset(resp_readblock + work_offset + security_offset, 0, block_size); } @@ -2334,7 +2326,7 @@ void SimTagIso15693(uint8_t *uid, uint8_t block_size) { uint8_t *data = cmd + 3 + address_offset + multi_offset; // write data - EmlSetMemIso15693(block_count * block_size, data, block_idx * block_size); + emlSet(data, (block_idx * block_size), (block_count * block_size)); // Build WRITE_(MULTI_)BLOCK response int response_length = 3; diff --git a/armsrc/iso15693.h b/armsrc/iso15693.h index b087edd2e..4644adea9 100644 --- a/armsrc/iso15693.h +++ b/armsrc/iso15693.h @@ -47,8 +47,6 @@ int GetIso15693AnswerFromTag(uint8_t *response, uint16_t max_len, uint16_t timeo void AcquireRawAdcSamplesIso15693(void); void ReaderIso15693(iso15_card_select_t *p_card); // ISO15693 reader void EmlClearIso15693(void); -void EmlSetMemIso15693(uint8_t count, uint8_t *data, uint32_t offset); -void EmlGetMemIso15693(uint8_t count, uint8_t *output, uint32_t offset); void SimTagIso15693(uint8_t *uid, uint8_t block_size); // simulate an ISO15693 tag void BruteforceIso15693Afi(uint32_t speed); // find an AFI of a tag void DirectTag15693Command(uint32_t datalen, uint32_t speed, uint32_t recv, uint8_t *data); // send arbitrary commands from CLI diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 162b8e902..f7f05a3eb 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -2019,15 +2019,6 @@ void MifareEMemClr(void) { emlClearMem(); } -void MifareEMemSet(uint8_t blockno, uint8_t blockcnt, uint8_t blockwidth, uint8_t *datain) { - FpgaDownloadAndGo(FPGA_BITSTREAM_HF); - - if (blockwidth == 0) - blockwidth = 16; // backwards compat... default bytewidth - - emlSetMem_xt(datain, blockno, blockcnt, blockwidth); // data, block num, blocks count, block byte width -} - void MifareEMemGet(uint8_t blockno, uint8_t blockcnt) { FpgaDownloadAndGo(FPGA_BITSTREAM_HF); @@ -2167,9 +2158,9 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { uint8_t st[16] = {0x00}; emlGetMem(st, tb, 1); memcpy(st + 6, data + 6, 4); - emlSetMem(st, tb, 1); + emlSetMem_xt(st, tb, 1, 16); } else { - emlSetMem(data, tb, 1); + emlSetMem_xt(data, tb, 1, 16); } break; } diff --git a/armsrc/mifarecmd.h b/armsrc/mifarecmd.h index b7f7d6379..52bc37f35 100644 --- a/armsrc/mifarecmd.h +++ b/armsrc/mifarecmd.h @@ -40,7 +40,6 @@ void MifareChkKeys_fast(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint8_t *da void MifareChkKeys_file(uint8_t *fn); void MifareEMemClr(void); -void MifareEMemSet(uint8_t blockno, uint8_t blockcnt, uint8_t blockwidth, uint8_t *datain); void MifareEMemGet(uint8_t blockno, uint8_t blockcnt); int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype); int MifareECardLoadExt(uint8_t sectorcnt, uint8_t keytype); diff --git a/armsrc/mifaresim.c b/armsrc/mifaresim.c index 5aa1a054a..a44220209 100644 --- a/armsrc/mifaresim.c +++ b/armsrc/mifaresim.c @@ -1272,7 +1272,7 @@ void Mifare1ksim(uint16_t flags, uint8_t exitAfterNReads, uint8_t *datain, uint1 memcpy(receivedCmd_dec, response, 16); // don't change anything } } - emlSetMem(receivedCmd_dec, cardWRBL, 1); + emlSetMem_xt(receivedCmd_dec, cardWRBL, 1, 16); EmSend4bit(mf_crypto1_encrypt4bit(pcs, CARD_ACK)); // always ACK? FpgaDisableTracing(); diff --git a/armsrc/mifareutil.c b/armsrc/mifareutil.c index c2d6f8246..7b3d27ee1 100644 --- a/armsrc/mifareutil.c +++ b/armsrc/mifareutil.c @@ -617,16 +617,9 @@ uint8_t FirstBlockOfSector(uint8_t sectorNo) { return sectorNo * 4; else return 32 * 4 + (sectorNo - 32) * 16; - } // work with emulator memory -void emlSetMem(uint8_t *data, int blockNum, int blocksCount) { - uint32_t offset = blockNum * 16; - uint32_t len = blocksCount * 16; - emlSet(data, offset, len); -} - void emlSetMem_xt(uint8_t *data, int blockNum, int blocksCount, int block_width) { uint32_t offset = blockNum * block_width; uint32_t len = blocksCount * block_width; @@ -634,18 +627,18 @@ void emlSetMem_xt(uint8_t *data, int blockNum, int blocksCount, int block_width) } void emlGetMem(uint8_t *data, int blockNum, int blocksCount) { - uint8_t *emCARD = BigBuf_get_EM_addr(); - memcpy(data, emCARD + blockNum * 16, blocksCount * 16); + uint8_t *mem = BigBuf_get_EM_addr(); + memcpy(data, mem + blockNum * 16, blocksCount * 16); } void emlGetMemBt(uint8_t *data, int offset, int byteCount) { - uint8_t *emCARD = BigBuf_get_EM_addr(); - memcpy(data, emCARD + offset, byteCount); + uint8_t *mem = BigBuf_get_EM_addr(); + memcpy(data, mem + offset, byteCount); } int emlCheckValBl(int blockNum) { - uint8_t *emCARD = BigBuf_get_EM_addr(); - uint8_t *data = emCARD + blockNum * 16; + uint8_t *mem = BigBuf_get_EM_addr(); + uint8_t *data = mem + blockNum * 16; if ((data[0] != (data[4] ^ 0xff)) || (data[0] != data[8]) || (data[1] != (data[5] ^ 0xff)) || (data[1] != data[9]) || @@ -659,8 +652,8 @@ int emlCheckValBl(int blockNum) { } int emlGetValBl(uint32_t *blReg, uint8_t *blBlock, int blockNum) { - uint8_t *emCARD = BigBuf_get_EM_addr(); - uint8_t *data = emCARD + blockNum * 16; + uint8_t *mem = BigBuf_get_EM_addr(); + uint8_t *data = mem + blockNum * 16; if (emlCheckValBl(blockNum)) return 1; @@ -671,8 +664,8 @@ int emlGetValBl(uint32_t *blReg, uint8_t *blBlock, int blockNum) { } int emlSetValBl(uint32_t blReg, uint8_t blBlock, int blockNum) { - uint8_t *emCARD = BigBuf_get_EM_addr(); - uint8_t *data = emCARD + blockNum * 16; + uint8_t *mem = BigBuf_get_EM_addr(); + uint8_t *data = mem + blockNum * 16; memcpy(data + 0, &blReg, 4); memcpy(data + 8, &blReg, 4); @@ -683,29 +676,29 @@ int emlSetValBl(uint32_t blReg, uint8_t blBlock, int blockNum) { data[13] = blBlock ^ 0xff; data[14] = blBlock; data[15] = blBlock ^ 0xff; - return 0; } uint64_t emlGetKey(int sectorNum, int keyType) { uint8_t key[6] = {0x00}; - uint8_t *em = BigBuf_get_EM_addr(); - memcpy(key, em + 16 * (FirstBlockOfSector(sectorNum) + NumBlocksPerSector(sectorNum) - 1) + keyType * 10, 6); + uint8_t *mem = BigBuf_get_EM_addr(); + memcpy(key, mem + 16 * (FirstBlockOfSector(sectorNum) + NumBlocksPerSector(sectorNum) - 1) + keyType * 10, 6); return bytes_to_num(key, 6); } void emlClearMem(void) { const uint8_t trailer[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x80, 0x69, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; const uint8_t uid[] = {0xe6, 0x84, 0x87, 0xf3, 0x16, 0x88, 0x04, 0x00, 0x46, 0x8e, 0x45, 0x55, 0x4d, 0x70, 0x41, 0x04}; - uint8_t *emCARD = BigBuf_get_EM_addr(); - memset(emCARD, 0, CARD_MEMORY_SIZE); + uint8_t *mem = BigBuf_get_EM_addr(); + memset(mem, 0, CARD_MEMORY_SIZE); // fill sectors trailer data - for (uint16_t b = 3; b < MIFARE_4K_MAXBLOCK; ((b < MIFARE_2K_MAXBLOCK - 4) ? (b += 4) : (b += 16))) - emlSetMem((uint8_t *)trailer, b, 1); + for (uint16_t b = 3; b < MIFARE_4K_MAXBLOCK; ((b < MIFARE_2K_MAXBLOCK - 4) ? (b += 4) : (b += 16))) { + emlSetMem_xt((uint8_t *)trailer, b, 1, 16); + } // uid - emlSetMem((uint8_t *)uid, 0, 1); + emlSetMem_xt((uint8_t *)uid, 0, 1, 16); return; } From 8ef1cdbd7508e50b25873f301a1e0fb1517d1f4b Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 18:56:11 +0200 Subject: [PATCH 137/299] inceased waiting time.. --- armsrc/mifarecmd.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index f7f05a3eb..3f0e6f187 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -97,7 +97,7 @@ int16_t mifare_cmd_readblocks(uint8_t key_auth_cmd, uint8_t *key, uint8_t read_c }; // frame waiting time (FWT) in 1/fc - uint32_t fwt = 256 * 16 * (1 << 6); + uint32_t fwt = 256 * 16 * (1 << 7); iso14a_set_timeout(fwt / (8 * 16)); for (uint8_t i = 0; i < count; i++) { @@ -1810,8 +1810,8 @@ OUT: emlSetMem_xt(block, blockno, 1, sizeof(block)); } - MifareECardLoad(sectorcnt, 0); - MifareECardLoad(sectorcnt, 1); + MifareECardLoad(sectorcnt, MF_KEY_A); + MifareECardLoad(sectorcnt, MF_KEY_B); } } else { // partial/none keys found From 64ea48e7d071b7d1c9dca1fb18166b60f0b3b917 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 18:57:11 +0200 Subject: [PATCH 138/299] remove fct in header file.\nreverted this decline --- armsrc/mifareutil.c | 4 ++-- armsrc/mifareutil.h | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/armsrc/mifareutil.c b/armsrc/mifareutil.c index 7b3d27ee1..415c01183 100644 --- a/armsrc/mifareutil.c +++ b/armsrc/mifareutil.c @@ -209,8 +209,8 @@ int mifare_classic_authex_cmd(struct Crypto1State *pcs, uint32_t uid, uint8_t bl uint32_t save_timeout = iso14a_get_timeout(); // set timeout for authentication response - if (save_timeout > 103) - iso14a_set_timeout(103); + if (save_timeout > 106) + iso14a_set_timeout(106); // Receive 4 byte tag answer len = ReaderReceive(receivedAnswer, receivedAnswerPar); diff --git a/armsrc/mifareutil.h b/armsrc/mifareutil.h index 9a179a553..1e45d50be 100644 --- a/armsrc/mifareutil.h +++ b/armsrc/mifareutil.h @@ -113,8 +113,7 @@ uint8_t SectorTrailer(uint8_t blockNo); // emulator functions void emlClearMem(void); -void emlSetMem(uint8_t *data, int blockNum, int blocksCount); -void emlSetMem_xt(uint8_t *data, int blockNum, int blocksCount, int blockBtWidth); +void emlSetMem_xt(uint8_t *data, int blockNum, int blocksCount, int block_width); void emlGetMem(uint8_t *data, int blockNum, int blocksCount); void emlGetMemBt(uint8_t *data, int offset, int byteCount); uint64_t emlGetKey(int sectorNum, int keyType); From 8bfb91562482be7b061a58f796b9be2cb84a74e9 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 19:01:46 +0200 Subject: [PATCH 139/299] adapt the leftovers --- armsrc/appmain.c | 12 ++++++++++-- client/src/mifare/mifarehost.c | 8 ++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index ced039702..79b21c5bf 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -61,6 +61,7 @@ #include "commonutil.h" #include "crc16.h" #include "protocols.h" +#include "mifareutil.h" #ifdef WITH_LCD @@ -1287,7 +1288,7 @@ static void PacketReceived(PacketCommandNG *packet) { uint8_t data[]; } PACKED; struct p *payload = (struct p *) packet->data.asBytes; - EmlSetMemIso15693(payload->count, payload->data, payload->offset); + emlSet(payload->data, payload->offset, payload->count); break; } case CMD_HF_ISO15693_SIMULATE: { @@ -1693,7 +1694,14 @@ static void PacketReceived(PacketCommandNG *packet) { uint8_t data[]; } PACKED; struct p *payload = (struct p *) packet->data.asBytes; - MifareEMemSet(payload->blockno, payload->blockcnt, payload->blockwidth, payload->data); + + FpgaDownloadAndGo(FPGA_BITSTREAM_HF); + + // backwards compat... default bytewidth + if (payload->blockwidth == 0) + payload->blockwidth = 16; + + emlSetMem_xt(payload->data, payload->blockno, payload->blockcnt, payload->blockwidth); break; } case CMD_HF_MIFARE_EML_MEMGET: { diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index 1576b03e5..a05456bcd 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -947,7 +947,7 @@ int mfEmlGetMem(uint8_t *data, int blockNum, int blocksCount) { } int mfEmlSetMem(uint8_t *data, int blockNum, int blocksCount) { - return mfEmlSetMem_xt(data, blockNum, blocksCount, 16); + return mfEmlSetMem_xt(data, blockNum, blocksCount, MFBLOCK_SIZE); } int mfEmlSetMem_xt(uint8_t *data, int blockNum, int blocksCount, int blockBtWidth) { @@ -961,7 +961,7 @@ int mfEmlSetMem_xt(uint8_t *data, int blockNum, int blocksCount, int blockBtWidt size_t size = ((size_t) blocksCount) * blockBtWidth; if (size > (PM3_CMD_DATA_SIZE - sizeof(struct p))) { - return PM3_ESOFT; + return PM3_EINVARG; } size_t paylen = sizeof(struct p) + size; @@ -1271,7 +1271,7 @@ int detect_classic_prng(void) { clearCommandBuffer(); SendCommandMIX(CMD_HF_ISO14443A_READER, flags, sizeof(cmd), 0, cmd, sizeof(cmd)); - if (!WaitForResponseTimeout(CMD_ACK, &resp, 2000)) { + if (WaitForResponseTimeout(CMD_ACK, &resp, 2000) == false) { PrintAndLogEx(WARNING, "PRNG UID: Reply timeout."); return PM3_ETIMEOUT; } @@ -1281,7 +1281,7 @@ int detect_classic_prng(void) { PrintAndLogEx(ERR, "error: selecting tag failed, can't detect prng\n"); return PM3_ERFTRANS; } - if (!WaitForResponseTimeout(CMD_ACK, &respA, 2500)) { + if (WaitForResponseTimeout(CMD_ACK, &respA, 2500) == false) { PrintAndLogEx(WARNING, "PRNG data: Reply timeout."); return PM3_ETIMEOUT; } From 39eecc917e09cd03c10c3063af19067dd0f6f42e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 19:38:51 +0200 Subject: [PATCH 140/299] improved the messages reported when loading json files fails. Usually because we have reserved the wrong size memory --- client/src/cmdhfmf.c | 12 ++++++------ client/src/fileutils.c | 19 ++++++++++++------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 10e305912..92001d760 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -4318,13 +4318,17 @@ int CmdHF14AMfELoad(const char *Cmd) { return PM3_EINVARG; } - PrintAndLogEx(INFO, "%d blocks ( %u bytes ) to upload", block_cnt, block_cnt * block_width); + PrintAndLogEx(INFO, "Upload " _YELLOW_("%u") " blocks " _YELLOW_("%u") " bytes", block_cnt, block_cnt * block_width); if (numblks > 0) { block_cnt = MIN(numblks, block_cnt); - PrintAndLogEx(INFO, "overriding number of blocks, will use %d blocks ( %u bytes )", block_cnt, block_cnt * block_width); + PrintAndLogEx(INFO, "overriding number of blocks, will use " _YELLOW_("%u") " blocks " _YELLOW_("%u") " bytes", block_cnt, block_cnt * block_width); } + // ICEMAN: bug. if device has been using ICLASS commands, + // the device needs to load the HF fpga image. It takes 1.5 second. + set_fpga_mode(2); + // use RDV4 spiffs if (use_spiffs && IfPm3Flash() == false) { PrintAndLogEx(WARNING, "Device not compiled to support spiffs"); @@ -4355,10 +4359,6 @@ int CmdHF14AMfELoad(const char *Cmd) { return PM3_SUCCESS; } - // ICEMAN: bug. if device has been using ICLASS commands, - // the device needs to load the HF fpga image. It takes 1.5 second. - set_fpga_mode(2); - uint8_t *data = NULL; size_t bytes_read = 0; int res = pm3_load_dump(filename, (void **)&data, &bytes_read, (block_width * block_cnt + hdr_len)); diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 9a56b4eba..1aa27ca7f 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -2085,6 +2085,9 @@ int pm3_load_dump(const char *fn, void **pdump, size_t *dumplen, size_t maxdumpl } case EML: { res = loadFileEML_safe(fn, pdump, dumplen); + if (res == PM3_ESOFT) { + PrintAndLogEx(WARNING, "file IO failed"); + } break; } case JSON: { @@ -2094,8 +2097,15 @@ int pm3_load_dump(const char *fn, void **pdump, size_t *dumplen, size_t maxdumpl return PM3_EMALLOC; } res = loadFileJSON(fn, *pdump, maxdumplen, dumplen, NULL); - if (res != PM3_SUCCESS) { - free(*pdump); + if (res == PM3_SUCCESS) + return res; + + free(*pdump); + + if (res == PM3_ESOFT) { + PrintAndLogEx(WARNING, "JSON objects failed to load"); + } else if (res == PM3_EMALLOC) { + PrintAndLogEx(WARNING, "Wrong size of allocated memory. Check your parameters"); } break; } @@ -2109,11 +2119,6 @@ int pm3_load_dump(const char *fn, void **pdump, size_t *dumplen, size_t maxdumpl } } - if (res != PM3_SUCCESS) { - PrintAndLogEx(WARNING, "file not found or locked `" _YELLOW_("%s") "`", fn); - return PM3_EFILE; - } - return res; } From a44e2fbc36e1d6f7f96058c34dbc149e1e6d1a05 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 19:47:11 +0200 Subject: [PATCH 141/299] text --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 92001d760..0eac61eca 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -3113,7 +3113,7 @@ all_found: clearCommandBuffer(); SendCommandNG(CMD_HF_MIFARE_EML_MEMCLR, NULL, 0); - PrintAndLogEx(INFO, "transferring keys to simulator memory" NOLF); + PrintAndLogEx(INFO, "transferring keys to simulator memory " NOLF); bool transfer_status = true; for (current_sector_i = 0; current_sector_i < sector_cnt; current_sector_i++) { From 19251645e15e5701fd0af09d7bcf93dee20a9c20 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 20:12:42 +0200 Subject: [PATCH 142/299] shorten LEN variable to match the available space in string --- client/src/fileutils.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 1aa27ca7f..7383c396f 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -194,7 +194,7 @@ char *newfilenamemcopyEx(const char *preferredName, const char *suffix, savePath // 16: room for filenum to ensure new filename // save_path_len + strlen(PATHSEP): the user preference save paths //const size_t len = p_namelen + strlen(suffix) + 1 + 16 + save_path_len + strlen(PATHSEP); - const size_t len = FILE_PATH_SIZE; + size_t len = FILE_PATH_SIZE; char *fileName = (char *) calloc(len, sizeof(uint8_t)); if (fileName == NULL) { @@ -207,8 +207,8 @@ char *newfilenamemcopyEx(const char *preferredName, const char *suffix, savePath size_t save_path_len = path_size(e_save_path); if (save_path_len && save_path_len < (FILE_PATH_SIZE - strlen(PATHSEP))) { snprintf(pfn, len, "%s%s", g_session.defaultPaths[e_save_path], PATHSEP); - pfn += save_path_len; - pfn += strlen(PATHSEP); + pfn += save_path_len + strlen(PATHSEP); + len -= save_path_len + strlen(PATHSEP); } // remove file extension if exist in name @@ -217,11 +217,17 @@ char *newfilenamemcopyEx(const char *preferredName, const char *suffix, savePath p_namelen -= strlen(suffix); } + len -= strlen(suffix) + 1; + len -= p_namelen; + // modify filename snprintf(pfn, len, "%.*s%s", (int)p_namelen, preferredName, suffix); - // check complete path/filename if exists + // "-001" + len -= 4; + int num = 1; + // check complete path/filename if exists while (fileExists(fileName)) { // modify filename snprintf(pfn, len, "%.*s-%03d%s", (int)p_namelen, preferredName, num, suffix); From 58f9ba0abfa742fdfa5695ed6bb65dd62a6b3a91 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 22:23:33 +0200 Subject: [PATCH 143/299] ugly hack to load the signature data if we are on a MFC Ev1 card. First we dont want to trigger the partial read unnecessary and secondly we dont save signature data in our MFC dump file. Need to adapt the JSON format for this --- armsrc/iso14443a.c | 12 +++++++----- armsrc/mifarecmd.c | 20 +++++++++++++++----- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index cb5f89118..07faa5b02 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -2596,7 +2596,7 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint p_card->ats_len = 0; } - if (GetATQA(resp, resp_par, polling_parameters) == false) { + if (GetATQA(resp, resp_par, polling_parameters) == 0) { return 0; } @@ -2621,11 +2621,11 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint memcpy(p_card->uid, resp, 4); // select again? - if (GetATQA(resp, resp_par, &WUPA_POLLING_PARAMETERS) == false) { + if (GetATQA(resp, resp_par, &WUPA_POLLING_PARAMETERS) == 0) { return 0; } - if (GetATQA(resp, resp_par, &WUPA_POLLING_PARAMETERS) == false) { + if (GetATQA(resp, resp_par, &WUPA_POLLING_PARAMETERS) == 0) { return 0; } @@ -2824,7 +2824,7 @@ int iso14443a_fast_select_card(uint8_t *uid_ptr, uint8_t num_cascades) { uint8_t sak = 0x04; // cascade uid int cascade_level = 0; - if (!GetATQA(resp, resp_par, &WUPA_POLLING_PARAMETERS)) { + if (GetATQA(resp, resp_par, &WUPA_POLLING_PARAMETERS) == 0) { return 0; } @@ -2851,7 +2851,9 @@ int iso14443a_fast_select_card(uint8_t *uid_ptr, uint8_t num_cascades) { ReaderTransmit(sel_uid, sizeof(sel_uid), NULL); // Receive the SAK - if (!ReaderReceive(resp, resp_par)) return 0; + if (!ReaderReceive(resp, resp_par)) { + return 0; + } sak = resp[0]; diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 3f0e6f187..32e90d56a 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -2071,24 +2071,33 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { // increase time-out. Magic card etc are slow uint32_t timeout = iso14a_get_timeout(); // frame waiting time (FWT) in 1/fc - uint32_t fwt = 256 * 16 * (1 << 7); + uint32_t fwt = 256 * 16 * (1 << 6); iso14a_set_timeout(fwt / (8 * 16)); for (uint8_t s = 0; s < sectorcnt; s++) { + uint64_t ui64Key = emlGetKey(s, keytype); + if (sectorcnt == 18) { // MFC 1K EV1, skip sector 16 since its lockdown if (s == 16) { + // unknown sector trailer, keep the keys, set only the AC + uint8_t st[16] = {0x00}; + emlGetMem(st, FirstBlockOfSector(s) + 3, 1); + memcpy(st + 6, "\x70\xF0\xF8\x69", 4); + emlSetMem_xt(st, FirstBlockOfSector(s) + 3, 1, 16); continue; } + + // ICEMAN: ugly hack, we don't want to trigger the partial load message // MFC 1K EV1 sector 17 don't use key A. - if (keytype == 0) { - continue; + // not mention we don't save signatures in our MFC dump files. + if (s == 17 && keytype == 0) { + ui64Key = 0x4B791BEA7BCC; + keytype = 1; } } - uint64_t ui64Key = emlGetKey(s, keytype); - // use fast select if (have_uid == false) { // need a full select cycle to get the uid first iso14a_card_select_t card_info; @@ -2125,6 +2134,7 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { continue; } + #define MAX_RETRIES 2 uint8_t data[16] = {0x00}; From 4e6962864adcbe36fa8686581ba4796f7a9a7a95 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 22:53:01 +0200 Subject: [PATCH 144/299] fix loading mifare keys to flash memory, forgot to wipe the new area which we extended to --- armsrc/appmain.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 79b21c5bf..3c471191f 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -2516,6 +2516,9 @@ static void PacketReceived(PacketCommandNG *packet) { Flash_WriteEnable(); Flash_Erase4k(3, 0xC); } else if (payload->startidx == DEFAULT_MF_KEYS_OFFSET) { + Flash_CheckBusy(BUSY_TIMEOUT); + Flash_WriteEnable(); + Flash_Erase4k(3, 0x8); Flash_CheckBusy(BUSY_TIMEOUT); Flash_WriteEnable(); Flash_Erase4k(3, 0x9); From 944af6be9501511da5cc1d1b29534006d7d9d1e9 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 22:55:58 +0200 Subject: [PATCH 145/299] fixed the missing erasing of flash memory bank. --- CHANGELOG.md | 2 ++ client/src/cmdflashmem.c | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ce56eecda..1c1f4e86c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `mem load -m` - now correctly erase all allocated flash memory (@iceman1001) + - Fixed emulator quick dump to handle MFC Ev1 extra sectors (@iceman100) - Removed some empty dump files (@iceman1001) - Added a fct to choose fpga mode (@iceman1001) - Changed `hf mf eload/gsave` - fast uploading to emulator memory (@iceman1001) diff --git a/client/src/cmdflashmem.c b/client/src/cmdflashmem.c index e8db64885..2cfe3849c 100644 --- a/client/src/cmdflashmem.c +++ b/client/src/cmdflashmem.c @@ -275,7 +275,8 @@ static int CmdFlashMemLoad(const char *Cmd) { } break; } -// not needed when we transite to loadxxxx_safe methods.(iceman) + + // ICEMAN: not needed when we transite to loadxxxx_safe methods uint8_t *newdata = realloc(data, datalen); if (newdata == NULL) { free(data); From d9e867fa28980516863a2952f080f25773e4eb09 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 22:56:41 +0200 Subject: [PATCH 146/299] string formatters --- common_arm/flashmem.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/common_arm/flashmem.c b/common_arm/flashmem.c index 94dcf1fd3..f4dde74a0 100644 --- a/common_arm/flashmem.c +++ b/common_arm/flashmem.c @@ -402,7 +402,7 @@ void Flashmem_print_info(void) { if (isok == 2) { num = ((keysum[1] << 8) | keysum[0]); if (num != 0xFFFF && num != 0x0) - Dbprintf(" Mifare.................. "_YELLOW_("%d")" / "_GREEN_("%d")" keys", num, DEFAULT_MF_KEYS_MAX); + Dbprintf(" Mifare.................. "_YELLOW_("%u")" / "_GREEN_("%u")" keys", num, DEFAULT_MF_KEYS_MAX); } Flash_CheckBusy(BUSY_TIMEOUT); @@ -410,7 +410,7 @@ void Flashmem_print_info(void) { if (isok == 2) { num = ((keysum[1] << 8) | keysum[0]); if (num != 0xFFFF && num != 0x0) - Dbprintf(" T55x7................... "_YELLOW_("%d")" / "_GREEN_("%d")" keys", num, DEFAULT_T55XX_KEYS_MAX); + Dbprintf(" T55x7................... "_YELLOW_("%u")" / "_GREEN_("%u")" keys", num, DEFAULT_T55XX_KEYS_MAX); } Flash_CheckBusy(BUSY_TIMEOUT); @@ -418,7 +418,7 @@ void Flashmem_print_info(void) { if (isok == 2) { num = ((keysum[1] << 8) | keysum[0]); if (num != 0xFFFF && num != 0x0) - Dbprintf(" iClass.................. "_YELLOW_("%d")" / "_GREEN_("%d")" keys", num, DEFAULT_ICLASS_KEYS_MAX); + Dbprintf(" iClass.................. "_YELLOW_("%u")" / "_GREEN_("%u")" keys", num, DEFAULT_ICLASS_KEYS_MAX); } FlashStop(); From 97a1f97308fed7231170b0aed864ae2db82c294f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 27 Jul 2023 23:42:06 +0200 Subject: [PATCH 147/299] style --- armsrc/iso14443a.c | 4 +-- client/src/pm3line_vocabulory.h | 1 + doc/commands.json | 44 +++++++++++++++++++++++++-------- doc/commands.md | 1 + 4 files changed, 38 insertions(+), 12 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 07faa5b02..45f61f4ce 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -2580,8 +2580,8 @@ int iso14443a_select_card(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32 // and num_cascades must be set (1: 4 Byte UID, 2: 7 Byte UID, 3: 10 Byte UID) // requests ATS unless no_rats is true int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint32_t *cuid_ptr, - bool anticollision, uint8_t num_cascades, bool no_rats, - iso14a_polling_parameters_t *polling_parameters) { + bool anticollision, uint8_t num_cascades, bool no_rats, + iso14a_polling_parameters_t *polling_parameters) { uint8_t resp[MAX_FRAME_SIZE] = {0}; // theoretically. A usual RATS will be much smaller uint8_t resp_par[MAX_PARITY_SIZE] = {0}; diff --git a/client/src/pm3line_vocabulory.h b/client/src/pm3line_vocabulory.h index 509cf5387..4168a0800 100644 --- a/client/src/pm3line_vocabulory.h +++ b/client/src/pm3line_vocabulory.h @@ -388,6 +388,7 @@ const static vocabulory_t vocabulory[] = { { 0, "hf mfp ndefread" }, { 0, "hf mfp ndefwrite" }, { 1, "hf mfu help" }, + { 1, "hf mfu list" }, { 1, "hf mfu keygen" }, { 1, "hf mfu pwdgen" }, { 0, "hf mfu otptear" }, diff --git a/doc/commands.json b/doc/commands.json index d0fe5ad8b..c03e4c80a 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -3072,9 +3072,10 @@ "options": [ "-h, --help This help", "-f, --file filename of dump (bin/eml/json)", - "-m, --mem use RDV4 spiffs" + "-m, --mem use RDV4 spiffs", + "-v, --verbose verbose output" ], - "usage": "hf iclass eload [-hm] -f " + "usage": "hf iclass eload [-hmv] -f " }, "hf iclass encode": { "command": "hf iclass encode", @@ -4281,9 +4282,10 @@ "--4k MIFARE Classic 4k / S70", "--ul MIFARE Ultralight family", "-m, --mem use RDV4 spiffs", - "-q, --qty manually set number of blocks (overrides)" + "-q, --qty manually set number of blocks (overrides)", + "-v, --verbose verbose output" ], - "usage": "hf mf eload [-hm] -f [--mini] [--1k] [--2k] [--4k] [--ul] [-q ]" + "usage": "hf mf eload [-hmv] -f [--mini] [--1k] [--2k] [--4k] [--ul] [-q ]" }, "hf mf esave": { "command": "hf mf esave", @@ -6424,9 +6426,10 @@ "options": [ "-h, --help This help", "-f, --file Filename of dump", - "-q, --qty Number of blocks to load from eml file" + "-q, --qty Number of blocks to load from eml file", + "-v, --verbose verbose output" ], - "usage": "hf mfu eload [-h] -f [-q ]" + "usage": "hf mfu eload [-hv] -f [-q ]" }, "hf mfu esave": { "command": "hf mfu esave", @@ -6489,6 +6492,27 @@ ], "usage": "hf mfu keygen [-hr] [-u ]" }, + "hf mfu list": { + "command": "hf mfu list", + "description": "Alias of `trace list -t 14a` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "notes": [ + "hf 14a list --frame -> show frame delay times", + "hf 14a list -1 -> use trace buffer" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-1, --buffer use data from trace buffer", + "--frame show frame delay times", + "-c mark CRC bytes", + "-r show relative times (gap and duration)", + "-u display times in microseconds instead of clock cycles", + "-x show hexdump to convert to pcap(ng)", + "or to import into Wireshark using encapsulation type \"ISO 14443\"", + "-f, --file filename of dictionary" + ], + "usage": "hf 14a list [-h1crux] [--frame] [-f ]" + }, "hf mfu ndefread": { "command": "hf mfu ndefread", "description": "Prints NFC Data Exchange Format (NDEF)", @@ -6622,12 +6646,12 @@ "offline": false, "options": [ "-h, --help This help", - "-t, --type <1..10> Simulation type to use", + "-t, --type <1..12> Simulation type to use", "-u, --uid <4|7|10> hex bytes UID", "-n, --num Exit simulation after blocks. 0 = infinite", "-v, --verbose Verbose output" ], - "usage": "hf mfu sim [-hv] -t <1..10> [-u ] [-n ]" + "usage": "hf mfu sim [-hv] -t <1..12> [-u ] [-n ]" }, "hf mfu tamper": { "command": "hf mfu tamper", @@ -11779,8 +11803,8 @@ } }, "metadata": { - "commands_extracted": 683, + "commands_extracted": 684, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-07-26T21:49:57" + "extracted_on": "2023-07-27T21:41:37" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index a26d55d8e..7a8476a6c 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -567,6 +567,7 @@ Check column "offline" for their availability. |command |offline |description |------- |------- |----------- |`hf mfu help `|Y |`This help` +|`hf mfu list `|Y |`List MIFARE Ultralight / NTAG history` |`hf mfu keygen `|Y |`Generate 3DES MIFARE diversified keys` |`hf mfu pwdgen `|Y |`Generate pwd from known algos` |`hf mfu otptear `|N |`Tear-off test on OTP bits` From 6df79e3926677d99a76f299312dae50555758376 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 29 Jul 2023 12:44:32 +0200 Subject: [PATCH 148/299] missed to remove exclamation mark --- client/src/cmdhf14a.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 85f7c9588..c7529c56a 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -549,7 +549,7 @@ static int CmdHF14AReader(const char *Cmd) { bool continuous = arg_get_lit(ctx, 7); CLIParserFree(ctx); - if (!disconnectAfter == false) { + if (disconnectAfter == false) { cm |= ISO14A_NO_DISCONNECT; } From 0c9855017725a3a5cd1ae4924e7253b1298a311f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 30 Jul 2023 17:17:08 +0200 Subject: [PATCH 149/299] dont mark crc byte everywhere in the alias list. have to set it for those commands that would benefit from it --- client/src/cmdhf14a.c | 2 +- client/src/cmdhfmf.c | 2 +- client/src/cmdhfmfu.c | 2 +- client/src/cmdtrace.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index c7529c56a..ecd57e181 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -232,7 +232,7 @@ static uint8_t gs_frames_num = 0; static uint16_t atsFSC[] = {16, 24, 32, 40, 48, 64, 96, 128, 256}; static int CmdHF14AList(const char *Cmd) { - return CmdTraceListAlias(Cmd, "hf 14a", "14a"); + return CmdTraceListAlias(Cmd, "hf 14a", "14a -c"); } int hf14a_getconfig(hf14a_config *config) { diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 0eac61eca..be336bcb3 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -6736,7 +6736,7 @@ static int CmdHFMFPersonalize(const char *Cmd) { } static int CmdHF14AMfList(const char *Cmd) { - return CmdTraceListAlias(Cmd, "hf mf", "mf"); + return CmdTraceListAlias(Cmd, "hf mf", "mf -c"); } static int CmdHf14AGen3UID(const char *Cmd) { diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 7f1722cd4..13b8c9cb4 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -4673,7 +4673,7 @@ static int CmdHF14AMfuView(const char *Cmd) { } static int CmdHF14AMfuList(const char *Cmd) { - return CmdTraceListAlias(Cmd, "hf 14a", "14a"); + return CmdTraceListAlias(Cmd, "hf 14a", "14a -c"); } diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 7efb8bc35..e71ca4445 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -1176,7 +1176,7 @@ int CmdTraceListAlias(const char *Cmd, const char *alias, const char *protocol) CLIParserFree(ctx); char args[128] = {0}; - snprintf(args, sizeof(args), "-c -t %s ", protocol); + snprintf(args, sizeof(args), "-t %s ", protocol); strncat(args, Cmd, sizeof(args) - strlen(args) - 1); return CmdTraceList(args); } From 708cfca850d4912f9a26ebf244b766f03d681a0c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 30 Jul 2023 20:32:56 +0200 Subject: [PATCH 150/299] add default marking of crc bytes for these protocols --- client/src/cmdhficlass.c | 2 +- client/src/cmdhflto.c | 2 +- client/src/cmdhfmfdes.c | 2 +- client/src/cmdhfmfp.c | 2 +- client/src/cmdhftopaz.c | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 4c4f3215d..131944f6e 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -645,7 +645,7 @@ void print_picopass_header(const picopass_hdr_t *hdr) { } static int CmdHFiClassList(const char *Cmd) { - return CmdTraceListAlias(Cmd, "hf iclass", "iclass"); + return CmdTraceListAlias(Cmd, "hf iclass", "iclass -c"); } static int CmdHFiClassSniff(const char *Cmd) { diff --git a/client/src/cmdhflto.c b/client/src/cmdhflto.c index b5a8d1206..d11f0c6d1 100644 --- a/client/src/cmdhflto.c +++ b/client/src/cmdhflto.c @@ -526,7 +526,7 @@ int infoLTO(bool verbose) { } static int CmdHfLTOList(const char *Cmd) { - return CmdTraceListAlias(Cmd, "hf lto", "lto"); + return CmdTraceListAlias(Cmd, "hf lto", "lto -c"); } int rdblLTO(uint8_t st_blk, uint8_t end_blk, bool verbose) { diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index b2cd1f7a5..03dcea842 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -1411,7 +1411,7 @@ static int CmdHF14aDesChk(const char *Cmd) { } static int CmdHF14ADesList(const char *Cmd) { - return CmdTraceListAlias(Cmd, "hf mfdes", "des"); + return CmdTraceListAlias(Cmd, "hf mfdes", "des -c"); } static int DesfireAuthCheck(DesfireContext_t *dctx, DesfireISOSelectWay way, uint32_t appID, DesfireSecureChannel secureChannel, uint8_t *key) { diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 01f529b99..c0078819b 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1810,7 +1810,7 @@ static int CmdHFMFPNDEFWrite(const char *Cmd) { } static int CmdHFMFPList(const char *Cmd) { - return CmdTraceListAlias(Cmd, "hf mfp", "mfp"); + return CmdTraceListAlias(Cmd, "hf mfp", "mfp -c"); } static command_t CommandTable[] = { diff --git a/client/src/cmdhftopaz.c b/client/src/cmdhftopaz.c index 4483e3154..649882416 100644 --- a/client/src/cmdhftopaz.c +++ b/client/src/cmdhftopaz.c @@ -812,7 +812,7 @@ static int CmdHFTopazRaw(const char *Cmd) { } static int CmdHFTopazList(const char *Cmd) { - return CmdTraceListAlias(Cmd, "hf topaz", "topaz"); + return CmdTraceListAlias(Cmd, "hf topaz", "topaz -c"); } static int CmdHFTopazSniff(const char *Cmd) { From 9943235e3128209eb62e8a32f9b3f7cca446fa33 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 30 Jul 2023 21:20:32 +0200 Subject: [PATCH 151/299] updated atr table --- client/src/atrs.h | 488 ++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 425 insertions(+), 63 deletions(-) diff --git a/client/src/atrs.h b/client/src/atrs.h index 87171c523..18c1880c6 100644 --- a/client/src/atrs.h +++ b/client/src/atrs.h @@ -43,6 +43,7 @@ const static atr_t AtrTable[] = { { "3B003B28003441454130323030", "Cryptoguard card used for pay tv Plustelka (DVB-T2 - Slovak) (Pay TV)\nhttps://www.plustelka.sk/" }, { "3B021050", "Visa (Bank)" }, { "3B02141C", "UAE (United Arab Emirates) (eID)" }, + { "3B021435", "cartao cidadao (eID)" }, { "3B021450", "Schlumberger Multiflex 3k" }, { "3B02145011", "Maste visa card (Bank)" }, { "3B021451", "8A (Bank)" }, @@ -54,7 +55,7 @@ const static atr_t AtrTable[] = { { "3B026F33", "Polish national PKI equivalent to national id card issued by Eurocert - 1 of 2 Polish authorized issuers (PKI)\nhttps://eurocert.pl/index.php/en-us/" }, { "3B0400000000", "Laundromat payment card\nSpanish ID ('DNIe: Documento Nacional de Identidad electronico).\nhttp://www.dnie.es/" }, { "3B0400000073", "ASE M2 Card (I2C) (Other)" }, - { "3B0400040000", "Italian healtcare card (TS) National Service Card (CNS) - Regione Lazio - (HealthCare)\nhttp://cns.regione.lazio.it" }, + { "3B0400040000", "Italian healthcare card (TS) National Service Card (CNS) - Regione Lazio - (HealthCare)\nhttp://cns.regione.lazio.it" }, { "3B0401020304", "SLE4442 - memory card (256) with write protection PIN. (Other)" }, { "3B0405D486C8", "Telstra (Telecom Australia) Pay Phone Phonecard (Telecommunication)\nhttps://www.telstra.com.au/home-phone/calling-cards" }, { "3B04073C8592", "OLD Spanish Prepaid phone cards (pesetas) provided by Telefonica" }, @@ -70,15 +71,18 @@ const static atr_t AtrTable[] = { { "3B0417D43000", "Gemalto BONZA game smart-card. (Other)" }, { "3B0417D46608", "Prepaid public telephone card from Antel, Uruguay. (Telecommunication)" }, { "3B0417D4C882", "prepaid payphone card, issued by Lietuvos Telekomas (now Teo LT)\nhttps://www.teo.lt/" }, + { "3B04190CF600", "USWest TeleCard for Millennium Payphones (Other)" }, { "3B041BF43F54", "German TelefonKarte 50DM. Memory card with Solaic chip (Other)" }, { "3B042AFF3200", "Mac Gray Intelligent Laundry Systems laundry card" }, + { "3B0437E409EC", "prepaid payphone card, issued by Deutsche Telekom 'Telefonkarte Comfort als klassische Karte' (Other)\nhttps://tkc.telekom-dienste.de/" }, { "3B0441117781", "Sample Mifare DESFire contactless smartcard from Phillips" }, { "3B04411177B1", "IBM JCOP 30 contactless" }, { "3B044932432E", "German Health Insurance Card\n'LogCard' from concept2.com (a indoor rower manufacturer)\nI2C card" }, - { "3B0450D7F30E", "Ukranian memory card for public phones. Manufacturer: 'Kvazar' (Other)" }, + { "3B0450D7F30E", "Ukrainian memory card for public phones. Manufacturer: 'Kvazar' (Other)" }, { "3B046089", "Smartcard 3.1 (JavaCard)" }, { "3B04696C2065", "ASE M2 Card 2Kbit (Other)" }, { "3B047F010000", "Russian memory card for payphones. Manufacturer: 'Exiton' (Other)" }, + { "3B0482231091", "VISA DEBIT (Bank)" }, { "3B0492231091", "Siemens SLE 4432/42 card" }, { "3B04989400C4", "Windsor and Maidenhead Advantage Card\nhttp://www.rbwm.gov.uk/web/advantage_index.htm" }, { "3B0499FFFF90", "Madrid prepaid parkimeters parking card" }, @@ -103,6 +107,7 @@ const static atr_t AtrTable[] = { { "3B06010022018227", "HID ProxCard II (Other)" }, { "3B06010100001073", "HID Prox 26-bit (eID)" }, { "3B06010102000001", "HID0009P (eID)" }, + { "3B06010118038209", "HID ProxKey III (125kHz) (eID)\nhttps://www.hidglobal.com/products/cards-and-credentials/hid-proximity/1346" }, { "3B06010210......", "ISOProx II Card:\nhttp://www.hidglobal.com/documents/isoprox_ds_en.pdf" }, { "3B0602..........", "HID Prox H10302 Format\n37 bit (CN)\nhttps://www.hidglobal.com/sites/default/files/omnikey_contactless_developer_guide.pdf" }, { "3B0604..........", "HID Prox H10304 Format\n37 bit (FAC+CN)\nhttps://www.hidglobal.com/sites/default/files/omnikey_contactless_developer_guide.pdf" }, @@ -136,6 +141,7 @@ const static atr_t AtrTable[] = { { "3B12953608", "EMTG56 0.8 (sub-version 0.1)" }, { "3B12953609", "EMTG56 0.9 (sub-version 0.1)" }, { "3B1396130917", "Teacher Card (Other)" }, + { "3B1411CA4DDEAD", "Tricolor (Telecommunication)" }, { "3B151112CA0700DB", "Tricolor TV center card (Pay TV)" }, { "3B151112CA0711CA", "DRE Crypt (Pay TV)" }, { "3B151112CA0714CF", "PlatformaHD (Russia) DRE Crypt 4AE1:14" }, @@ -165,12 +171,14 @@ const static atr_t AtrTable[] = { { "3B16959B0007011803", "Thai GSM UICC (Telecommunication)" }, { "3B1695D00045F70100", "Telefonica O2 Czech Republic, a.s. - O2 sim card - 173285 / SIM64ND.GO0\nhttp://www.o2.cz" }, { "3B1695D0016CFD0D00", "Virgin Mobile SIM card (SIM)" }, + { "3B1695D0017B010E00", "Vivo Brasil - SIM Card (Telecommunication)" }, { "3B1695D0017BDA0D00", "Verizon GSM SIM (Telecommunication)" }, { "3B1696417374726964", "Gemalto IDPrime v2+ .NET" }, { "3B1696770006010403", "AIS One-2-Call GSM UICC (Telecommunication)\nhttp://www.ais.co.th" }, { "3B1696BA000E010603", "Vinaphone Vietnam SIM" }, { "3B1696BA000E020A03", "Vietel (Telecommunication)" }, { "3B1696D000D4072C00", "Vodafone India Postpaid / Local Operator 3G" }, + { "3B1696D0016CA70D00", "Ukrainian Telecommunications Operator MTS (old simcard, now rebranded to Vodafone UA) (Telecommunication)\nhttps://www.vodafone.ua" }, { "3B17118065AF034200D8", "TELE2 SPB SIM Russia" }, { "3B17139C120201010740", "Schlumberger Cyberflex Access Developer 32k" }, { "3B179418010101014193", "T-Mobile SIM card" }, @@ -196,6 +204,7 @@ const static atr_t AtrTable[] = { { "3B1894451543DA0100FF02", "Airtel Tanzania Prepaid SIM Card (Telecommunication)" }, { "3B1894530D06772407FF02", "GSM SIM Tele2 Estonia, prepaid (Telecommunication)" }, { "3B1894532007AD0A05FF02", "GSM SIM Beeline Kazakhstan (Telecommunication)\nhttp://beeline.kz/" }, + { "3B18962621550401030001", "OBILedit Forensic SIM Cloning card (Telecommunication)\nhttps://www.mobiledit.com/connection-kit" }, { "3B19145590010101000508B0", "Schlumberger Multiflex 8k" }, { "3B19145590010201000504B0", "Schlumberger Multiflex 4k" }, { "3B19145901010F01000508B0", "Schlumberger Multiflex 8k" }, @@ -203,6 +212,7 @@ const static atr_t AtrTable[] = { { "3B19943303013145410602B6", "BASE Twin simcard (Telecommunication)" }, { "3B1994806794080125010101", "Mobiphone (Telecommunication)" }, { "3B1996806793270102020401", "Orange SIM card (Telecommunication)" }, + { "3B1996806794090101040104", "Morpho EIRENE GSM-R Card (Telecommunication)" }, { "3B1996806794160203010101", "Movistar Argentina Usim Card (Telecommunication)\nwww.movistar.com.ar" }, { "3B1996806798040101010101", "PLUS gsm (Telecommunication)" }, { "3B1A9692015493320103022501", "BEELINE (Telecommunication)" }, @@ -216,6 +226,7 @@ const static atr_t AtrTable[] = { { "3B1D9600230700000000000000009000", "emulator card prototype from ST" }, { "3B1D97434C5F53414D00143800009000", "CLSAM (Transport)\nhttp://www.planeta.inf.br" }, { "3B1E130069454D4345663228F86B009000", "ECHS (Ex-servicemen Contributory Health Scheme) Card (HealthCare)\nhttp://echs.gov.in/" }, + { "3B1E95806721544D4D04120E7132829F00", "SIM card of old Ukrainian Telecommunications Operator Ace&Base (deriving from Kyivstar) (Telecommunication)\nhttps://kyivstar.ua/uk/mm" }, { "3B1F110067424146495345535266FF819000", "Finnish student id card" }, { "3B1F110067804246495345105266FF819000", "Nokia branded SC (Setec)" }, { "3B1F11006A013846495345108C02FF079000", "GSM-SIM Saunalahti (from 2004)\nFinnish cell phone operator 'Sonera' SIM card (from 2002)" }, @@ -240,7 +251,7 @@ const static atr_t AtrTable[] = { { "3B23003513FF", "Schlumberger MicroPayflex" }, { "3B2300354180", "PayflexHID (idenfitied by Sun Ray Services)" }, { "3B2400......45", "Conax" }, - { "3B240000000000", "MultiChoice satelite TV Card Eutelsat 36B at 35.9degE\nhttp://www.lyngsat.com/Eutelsat-36B.html" }, + { "3B240000000000", "MultiChoice satellite TV Card Eutelsat 36B at 35.9degE\nhttp://www.lyngsat.com/Eutelsat-36B.html" }, { "3B240000E29267", "Health care (HealthCare)" }, { "3B240030423030", "ComHem Digital-TV smartcard (Sweden)\nTNK Telewizja Na Karte (Poland) - Conditional access system : Conax (Norway)\nhttp://telewizjanakarte.pl/" }, { "3B240080729443", "MPCOS-3DES 64K \\ EMV Filter (Gemplus)" }, @@ -258,6 +269,7 @@ const static atr_t AtrTable[] = { { "3B2600311A45039000", "Tajeta Sanitaria Individual (Spanish Insurance Card)\nfrom the 'Junta de Andalucia(Consejeria de Salud)'" }, { "3B2600311A51039000", "Andalusian Health Service identification card (HealthCare)" }, { "3B270011140003029000", "ITTAS CNA Smart Card Reader (PKI)\nhttps://www.ittas.by/en/solutions/cna-cryptographic-protection-of-information" }, + { "3B27002A2A4352595054", "PAY TV (Pay TV)" }, { "3B27008065A2..010137", "Gemplus GemSAFE Smart Card (4K)" }, { "3B27008065A200010137", "Gemplus GemSAFE Card CSP v1.0" }, { "3B27008065A202028237", "Gemplus GPK2000s" }, @@ -317,7 +329,6 @@ const static atr_t AtrTable[] = { { "3B3B13008066120401040158829000", "Schaffhauser Kantonalbank Switzerland (Bank)\nhttp://www.shkb.ch" }, { "3B3B7F380000006A444E496510024C", "dnie (eID)" }, { "3B3B7F380000006A444E496520024C", "DNI (eID)" }, - { "3B3B8E800180318066B1840C016E01830090001C021450", "all transport travel pass (Transport)\nhttp://www.metro.spb.ru/cnblt41.html" }, { "3B3B94000064053E030F31800E9000", "Slovenian national health insurance card" }, { "3B3B940000640E3E02F031800E9000", "HPC card 2\nZZZS Health care professional card- Slovenia (Healthcard) (HealthCare)\nhttps://partner.zzzs.si/wps/portal/portali/aizv/e-poslovanje/kartice_in_citalniki/prof_kartica/" }, { "3B3B940000640E3E030F31800E9000", "HIC card\nZZZS Health care card- Slovenia (HealthCare)\nhttps://partner.zzzs.si/wps/portal/portali/aizv/e-poslovanje/kartice_in_citalniki/kartica_zdravstvenega_zavarovanja/!ut/p/z1/04_Sj9CPykssy0xPLMnMz0vMAfIjo8ziTQxdPd2N_Q08LSyCDQ0cjZzMzXz8XQ3cXU30C7IdFQEohG-V/" }, @@ -400,8 +411,9 @@ const static atr_t AtrTable[] = { { "3B4F004932435F436172643D4E6F5F515452", "AT24C (Bank)" }, { "3B4F00536C653434322D34343DA2131091", "Debit card (Bank)" }, { "3B4F00536C65343433322D34323DA2131091", "VISA (Bank)" }, + { "3B501100", "JAVA (JavaCard)" }, { "3B57180293020101019000", "Easyflex FastOS 2.0 / Schlumberger" }, - { "3B5B96000031C064BAFC10000F9000", "SERGAS - Galician Healtcare Service (Spain) (HealthCare)\nhttps://www.sergas.gal" }, + { "3B5B96000031C064BAFC10000F9000", "SERGAS - Galician Healthcare Service (Spain) (HealthCare)\nhttps://www.sergas.gal" }, { "3B5B96000031C064C6FC1000019000", "Banking card (Oberthur C.S. 06 18710-04-10)" }, { "3B5B96000031C064C7FC1000019000", "EBanking card (Oberthur C.S. 03 1146821)" }, { "3B5E11FF4573744549442076657220312E30", "Estonian Identity Card (EstEID v1.0 2006 warm)" }, @@ -411,11 +423,16 @@ const static atr_t AtrTable[] = { { "3B5F9500807300010059434C5AC506117C9000", "Smart Card C5 68K CardLogix Corp (Other)\nhttps://www.cardlogix.com/products/most-card-c-series-microprocessor-smart-cards/" }, { "3B5F9500807300010059434C5AC50612C09000", "Republic of Liberia Civil Service Identification Card (eID)" }, { "3B5F9600805A2C1100101000FFFFFFFF829000", "Calypso (Transport)" }, + { "3B5F9600805A3F0608140101C546DEDC829000", "Navegante(r) Personalizado (Lisbon public transportation card) (Transport)\nhttps://www.navegante.pt/viajar/cartoes" }, + { "3B5F9600805A3F0608140101C546EBDC829000", "Multi-Transport Pass (Navegante) (Metro, Bus, Electric, Boat) Carris Metropolitano, PT (Transport)\nhttps://www.navegante.pt/" }, + { "3B600000", "Meano (Bank)" }, { "3B61000080", "blank A40CR card (JavaCard)" }, { "3B630000364180", "Schlumberger Payflex 4k User" }, { "3B64..FF8062..A2", "JCOP20" }, { "3B64000080620.51", "Setec SetCOS 5.1.0 EMV" }, { "3B6400FF806202A2", "VISA credit card (Nordea bank)" }, + { "3B6500002063CB3020", "CB / VISA La Banque Postale (IDEMIA) (Bank)" }, + { "3B6500002063CB3040", "Credit Mutuel Debit card (Bank)" }, { "3B6500002063CB4700", "Orga SmartyPlus DATA STORE issued by MORPHO CARDS PERU" }, { "3B6500002063CB6300", "Bank card from Societe Generale (Oberthur)" }, { "3B6500002063CB6400", "Bank card Caisse d'Epargne" }, @@ -460,21 +477,28 @@ const static atr_t AtrTable[] = { { "3B6500002063CBB020", "Credit Mutuel Arkea paycard (Bank)" }, { "3B6500002063CBB120", "Bank card 'Credit Agricole' (Bank)" }, { "3B6500002063CBB280", "Visa card distributed by 'Societe Generale' (French Bank) (Bank)\nVisa card distributed by 'Boursorama Banque' (French Bank) (Bank)\nhttps://www.visa.fr/" }, + { "3B6500002063CBB600", "Maestro Bank Card with chip (Bank)" }, { "3B6500002063CBB620", "MasterCard credit card, issued by Swedbank LT (Bank)" }, { "3B6500002063CBB680", "Visa bank card (Bank)" }, { "3B6500002063CBB700", "Lloyds Bank (UK) 'Avios Duo' Mastercard credit card (Bank)" }, - { "3B6500002063CBB720", "Lloyds Bank Platinum Mastercard Credit (Bank)" }, + { "3B6500002063CBB720", "Lloyds Bank Platinum Mastercard Credit (Bank)\nCredit Agricole Prepaid - Mastercard" }, { "3B6500002063CBB780", "VISA Credit Card (Bank)" }, { "3B6500002063CBB900", "Mastercard (Bank)" }, + { "3B6500002063CBBC", "jcop040 (JavaCard)" }, { "3B6500002063CBBC00", "Credit Agricole MasterCard Societaire (France) (Bank)\nhttps://www.ca-centrefrance.fr/moyens-de-paiement/carte-bancaire-societaire.html" }, { "3B6500002063CBBC10", "French 'Ticket Restaurant' Edenred payment card (Other)\nhttps://www.myedenred.fr/" }, { "3B6500002063CBBC80", "CB / Visa La Banque Postale (Gemalto SP)" }, { "3B6500002063CBBD00", "Credit Mutuel Arkea (Bank)" }, + { "3B6500002063CBBD80", "CARD ONEY BANQUE VISA CREDIT (Bank)\nhttps://www.oney.fr/" }, + { "3B6500002063CBBF00", "Credit Agricole SA (france) (Bank)" }, { "3B6500002063CBC000", "Nickel Credit Card (Bank)\nhttps://nickel.eu" }, { "3B6500002063CBC080", "VISA debit card (Bank)\nhttps://www.cic.fr/fr/banques/professionnels/gestion-courante/cartes-paiement-professionnelles.html" }, { "3B6500002063CBC100", "CIC (Bank)\nhttps://www.cic.fr/" }, + { "3B6500002063CBC300", "CIC Credit Card (Bank)" }, { "3B6500002063CBC310", "Pass Restaurant Sodexo Pass France (Bank)\nhttps://moncompte.sodexopass.fr/" }, { "3B6500002063CBC380", "Apetiz restaurant card (French luncheon vouchers) (Bank)\nhttps://www.apetiz.com/faq/?thematic=achats-apetiz-quoi-quand-combien" }, + { "3B6500002063CBC600", "AuMax / Credit Mutuel (Bank)\nhttps://www.aumaxpourmoi.fr/" }, + { "3B6500002063CBC680", "BNP Paribas Visa Classic Card (Bank)\nhttps://mabanque.bnpparibas/en/managing-your-accounts/cards-and-payment-methods/all-cards/visa-classic-card" }, { "3B6500002063CBFF00", "Credit Agricole business mastercard (Bank)" }, { "3B6500002640009000", "Alacard Petroltech (Transport)\nhttp://www.alacard.kz/" }, { "3B6500002905010201", "ActivCard (Schlumberger) CyberFlex 64K V1 SM 2.1" }, @@ -490,6 +514,7 @@ const static atr_t AtrTable[] = { { "3B660000009C11010103", "Axalto Cyberflex Access 32K V4 SM 1.3" }, { "3B660000009C11010301", "Axalto Cyberflex Access 64K V1 Bio SM 3.1" }, { "3B6600000512010101B1", "Lyon1 student card (Moneo compatible)" }, + { "3B660000112233445566", "Sodexo Restaurant Pass Card (Turkey) (Loyalty)\nhttps://www.sodexoavantaj.com/yemek-karti" }, { "3B660000314B01010080", "VISA credit card (Skandiabanken)" }, { "3B66000032D000300201", "Kazakhstan Kazkom Onlinebank (Homebank) PKI client key-card\nhttps://www.homebank.kz/" }, { "3B66000062C901010000", "safeview (Pay TV)\nhttps://safeviewmedia.com/" }, @@ -563,10 +588,10 @@ const static atr_t AtrTable[] = { { "3B6800000073C84010009000", "Icelandic Banking scheme Issued by the Ministry of Treasure in Iceland\nhttp://www.islandsrot.is/" }, { "3B6800000073C84011009000", "Woolworths Everyday Money prepaid Mastercard\nNordea Bank Norway Visa + national debet card [BankAxept]\nVISA Classic - Nordlandsbanken (Norway)\nCiti Double Cash MasterCard\nWescom Credit Union Visa Debit Card (Bank)\nhttps://www.wescom.org/CHECKING/CHECK-CARD.ASP" }, { "3B6800000073C84012009000", "Brazilian 'e-CPF' card" }, - { "3B6800000073C84013009000", "MASTERCARD issued by MLP (Marschollek, Lautenschlager and Partner)\nG&D 12696-GDM-10/11 DEBIT CARD issued by BANCO DE CREDITO DEL PERU\nVisa from Caisse populaire Desjardins (Canada) (Bank)\nhttps://www.desjardins.com/\nMasterCard issued by President's Choice Bank (Canada)\nhttp://pcfinancial.ca/mastercard\nMasterCard issued by CIBC (Canada)\nhttp://www.cibc.com/\nMasterCard issued by The Bank of Nova Scotia (Canada)\nhttp://www.scotiabank.com/\nMasterCard issued by JPMorgan Chase Bank, N.A.\nhttps://www.chase.com/\nCaixaBank Visa Electron (Bank)\nhttps://www.lacaixa.cat/\nAmerican Express Canada Credit Card (Bank)" }, + { "3B6800000073C84013009000", "MASTERCARD issued by MLP (Marschollek, Lautenschlager and Partner)\nG&D 12696-GDM-10/11 DEBIT CARD issued by BANCO DE CREDITO DEL PERU\nVisa from Caisse populaire Desjardins (Canada) (Bank)\nhttps://www.desjardins.com/\nMasterCard issued by President's Choice Bank (Canada)\nhttp://pcfinancial.ca/mastercard\nMasterCard issued by CIBC (Canada)\nhttp://www.cibc.com/\nMasterCard issued by The Bank of Nova Scotia (Canada)\nhttp://www.scotiabank.com/\nMasterCard issued by JPMorgan Chase Bank, N.A.\nhttps://www.chase.com/\nCaixaBank Visa Electron (Bank)\nhttps://www.lacaixa.cat/\nAmerican Express Canada Credit Card (Bank)\nAlfa-bank Russia Visa" }, { "3B6800000073C8401300907D", "NextCard - Mastercard Debit card - Intesa Sanpaolo Bank (Italy) (Bank)\nhttps://www.intesasanpaolo.com/it/persone-e-famiglie/prodotti/carte/carte-di-debito/next-card.html" }, { "3B68000000DE511001019000", "Itau Bank Mastercard Debit Card (Brazil) (Bank)\nhttps://www.itau.com.br" }, - { "3B6800000101309600009000", "Edenred - French Restauration e-Ticket card (2013) (Other)\nhttps://www.edenred.fr/ticket-restaurant" }, + { "3B6800000101309600009000", "Edenred - French Restoration e-Ticket card (2013) (Other)\nhttps://www.edenred.fr/ticket-restaurant" }, { "3B6800000101310000009000", "VISA ELECTRON Sberbank card (Bank)\nSubmarino MasterCard credit card (Brazil) (Bank)\nhttps://www.submarino.com.br/landingpage/ofertas-cartao-submarino" }, { "3B6800000102109600009000", "Italian BancoPostaClick Postamat Card (Poste Italiane) -\nMasterCard debit card\nmbna PLATINUM MasterCard\nFlash (Banca Fideuram) Italy prepaid Mastercard" }, { "3B6800000105200000009000", "Air Bank a.s. MasterCard debit card with PayPass (Bank)" }, @@ -589,7 +614,8 @@ const static atr_t AtrTable[] = { { "3B6800008066B00701010707", "Java Gemalto R7 (Bank)\nGemalto Santander Optelio TUI R7 with WG10 using Contact interface" }, { "3B6800008066B00701017707", "Tecnico Lisboa Student Card (Bank)\nhttp://www.tecnico.ulisboa.pt/\nOther Optelio Card (Santander)\nSantander Totta Student Card - Portugal (Bank)\nhttps://www.santandertotta.pt" }, { "3B68000081000350010F9000", "Holvi Payment Master Card (Bank)\nhttp://www.holvi.com" }, - { "3B680000990200D103042201", "N26 business debit card (Bank)\nhttps://n26.com/en-de/business-account" }, + { "3B680000990100C103042201", "Robinhood Debit (Bank)\nhttps://robinhood.com/us/en/" }, + { "3B680000990200D103042201", "N26 business debit card (Bank)\nhttps://n26.com/en-de/business-account\nVisa cards from Inecobank, Armenia" }, { "3B6800009D03020101564953", "Visa Card - SberBank / Russia" }, { "3B6800009D08010201564953", "Visa Card - bonus - DenizBank / Turkey" }, { "3B6800009D080103014F5453", "MasterCard Card - bonus - Garanti Bank / Turkey" }, @@ -605,7 +631,7 @@ const static atr_t AtrTable[] = { { "3B6900002494010000000001A9", "Kazakhstan Helios gas station debit card\nhttp://helios.kz/" }, { "3B6900002494010201000101A9", "Chipcard from SUN to be used in SunRay's\n370-4328-01 (31091)" }, { "3B6900002494010301000100A9", "Schlumberger MicroPayflex S card" }, - { "3B6900004944353056312E....", "eID Card to user authenticate and save paswords in the Card. Product ID50 Password manager from IDENTOS GmbH (eID)\nhttps://identos.com/id50-password-manager/" }, + { "3B6900004944353056312E....", "eID Card to user authenticate and save passwords in the Card. Product ID50 Password manager from IDENTOS GmbH (eID)\nhttps://identos.com/id50-password-manager/" }, { "3B6900004944363056312E....", "token appidkey ID60-USB (Other)\nhttps://identsmart.com/en/products/id60-datasafe/" }, { "3B6900004A434F503331563232", "Visa Europe Sample Card / Axalto" }, { "3B6900005001010401000101A9", "Sample card given to all attendees of the CTST 2004 SmartCard Conference" }, @@ -624,7 +650,7 @@ const static atr_t AtrTable[] = { { "3B690000F704010601800102A9", "Azeriqaz Smart Payment (eID)\nhttp://azeriqaz104.az/" }, { "3B690000F704010801800102A9", "Multinet (Other)" }, { "3B69000241434F534A76313031", "ACOSJ 40K Dual Interface (JavaCard)" }, - { "3B69000241434F534A76323033", "ACS ACOSJ Java Card (JavaCard)\nhttps://www.acs.com.hk/en/products/405/acosj-java-card-combi/" }, + { "3B69000241434F534A7632303.", "ACS ACOSJ Java Card (JavaCard)\nhttps://www.acs.com.hk/en/products/405/acosj-java-card-combi/" }, { "3B6900FF00644A100432059000", "NXP JCOP 20 V2.1 16K" }, { "3B6900FF3131313054434F5350", "Seven-Eleven Value Card / Smart Purse - Thailand (Other)\nhttp://www.7eleven.co.th/about7card.php" }, { "3B6900FF323332435343533336", "CSCS smart card. Must be read using CSCS go smart software.\nhttps://download.cscsreader.co.uk/" }, @@ -658,8 +684,10 @@ const static atr_t AtrTable[] = { { "3B6B00000031806443B002008C6127", "Bull Odyssey 1.2 (Javacard 2.0)" }, { "3B6B00000031C06400273400079000", "American Express Gold Air France - KLM (Bank)" }, { "3B6B00000031C064002734000F9000", "American Express Chip and Signature Card (Contact) ()\nhttps://americanexpress.com/chipandsignature" }, + { "3B6B00000031C06408046105079000", "TBC Bank Mastercard (Georgia) (Bank)\nhttps://www.tbcbank.ge/web/en/cards-and-subscription-plans" }, { "3B6B00000031C06408046112079000", "Visa Electron. BSB Bank. Belarus (Bank)" }, { "3B6B00000031C064080461120F9000", "Portuguese National Identity Card (eID)\nhttps://www.autenticacao.gov.pt/o-cartao-de-cidadao" }, + { "3B6B00000031C06408046114079000", "Belarusbank VISA credit card (Belarus) (Bank)" }, { "3B6B00000031C06408046120079000", "AMEX Bank DI Card (Bank)" }, { "3B6B00000031C06408046176079000", "Alliance Bank Debit Card (Bank)" }, { "3B6B00000031C064080461770F9000", "'Strelka' Russian Federation Travelcard (Transport)\nhttp://strelkacard.ru/" }, @@ -674,20 +702,24 @@ const static atr_t AtrTable[] = { { "3B6B00000031C064083981040F9000", "Visa Debit (Bank)" }, { "3B6B00000031C064083991080F9000", "MasterCard Bank Card (Bank)\nhttps://www.creditonebank.com/" }, { "3B6B00000031C064084403040F9000", "VISA debit card (ActivoBank, Portugal) (Bank)\nhttps://www.activobank.pt" }, + { "3B6B00000031C06408440305019000", "mastercard (Bank)" }, { "3B6B00000031C064084403050F9000", "Visa (Bank)" }, { "3B6B00000031C06408440312079000", "VISA (Bank)" }, { "3B6B00000031C064084403120F9000", "Debit Card/MasterCard shipped by electronic Bank N26 (Number26) (Bank)\nhttps://n26.com/de-de/\nBBVA (Spain) (MasterCard) debit card (Bank)\nhttps://www.bbva.es/eng/productos/ficha/tarjeta-ahora-bbva/0000009719" }, { "3B6B00000031C06408440313079000", "MasterCard, Alfa Bank (Russia) (Bank)\nhttps://alfabank.ru/everyday/debit-cards/perekrestok-prepaid/" }, { "3B6B00000031C064084403680F9000", "Credit card emitted by KBC Brussels, Belgium (Bank)\nAdvanzia Credit Card (Master Card gold), Germany (IDK if there is a difference between the german one and the other ones) (Bank)\nhttps://mastercard.gebuhrenfrei.com/\nItalian Intesa Sanpaolo Superflash Prepaid Mastercard (Bank)" }, { "3B6B00000031C06408440376079000", "Blu American Express Credit Card (Bank)\nhttps://www.americanexpress.com/it/content/carta-blu/" }, - { "3B6B00000031C064084403760F9000", "Maestro debit card, issued by Caixa Geral de Depositos (Bank)\nhttps://www.cgd.pt/Particulares/Cartoes/Cartoes-de-Debito/Pages/Cartao-Debito-Cauxautomatica-Maestro.aspx" }, + { "3B6B00000031C064084403760F9000", "Maestro debit card, issued by Caixa Geral de Depositos (Bank)\nhttps://www.cgd.pt/Particulares/Cartoes/Cartoes-de-Debito/Pages/Cartao-Debito-Cauxautomatica-Maestro.aspx\nCredit Agricole Bank Card - Bancomat / Maestro\nDanske Bank Mastercard Debit" }, + { "3B6B00000031C06408440377079000", "Sber bank VISA with Novacard chip (Bank)" }, + { "3B6B00000031C064084403930F9000", "MIR card (Bank)" }, { "3B6B00000031C064084841080F9000", "Monizze card. Card use to pay only meal. (Other)\nhttp://www.monizze.be" }, { "3B6B00000031C064131402000F9000", "UBA Card PREPAID (Bank)" }, { "3B6B00000031C0641F1801000F9000", "Portuguese Medical Association eID card (Cedula Profissional, Ordem dos Medicos, Portugal) (eID)\nhttp://www.omsul.pt/tabid/242/Default.aspx" }, { "3B6B00000031C0641F270100079000", "SOCCARDRT (HealthCare)" }, - { "3B6B00000031C0641F2701150F9000", "VISA Debit card for HSBC, Australia" }, + { "3B6B00000031C0641F2701150F9000", "VISA Debit card for HSBC, Australia\nDanske Bank Mastercard Debit" }, { "3B6B00000031C0641F27011C079000", "Raiffeizen Bank, Russia, MasterCard paypass card (Bank)" }, { "3B6B00000031C0641F2701350F9000", "V PAY (Bank)\nhttps://www.unicreditbulbank.bg/en/individual-clients/everyday-banking/payments/debit-cards/" }, + { "3B6B00000031C0643F680100079000", "JCOP empty card (JavaCard)" }, { "3B6B00000031C0643F6801020F9000", "dinacard (Bank)" }, { "3B6B00000031C0643F680103079000", "American Express Blue Cash (Bank)\nhttps://www.americanexpress.com/us/credit-cards/" }, { "3B6B00000031C0643F6801030F9000", "HSBC Credit Gold Card from VISA (Bank)" }, @@ -700,15 +732,25 @@ const static atr_t AtrTable[] = { { "3B6B00000031C064BE1B01030F9000", "dsafas (Telecommunication)" }, { "3B6B00000031C064D0100100079000", "Alfa-Bank (Russia) Master Card (Aeroflot bonus) (Bank)" }, { "3B6B00000031C16408603206079000", "HSBC (Bank)" }, + { "3B6B00000031C164086032060F90", "VISA (National Bank) (eID)" }, { "3B6B00000031C164086032060F9000", "Nationwide Building Society VISA Debit card (Bank)" }, + { "3B6B00000031C164086032090F9000", "Swedbank Estonia ISIC debit card (Bank)\nhttps://www.swedbank.ee/private/cards/debit/isic" }, { "3B6B00000031C164086032100F9000", "ICA Bank, Mastercard (Bank)\nhttps://www.icabanken.se/kort-och-betala/bankkort/" }, { "3B6B00000031C1640860321F079000", "NMRC Card (Transport)" }, { "3B6B00000031C1640860321F0F9000", "Fio bank, Mastercard, credit (Bank)\nhttps://www.fio.cz/bankovni-sluzby/platebni-karty/kreditni-karty" }, { "3B6B00000031C164086032200F9000", "Twisto (Bank)" }, { "3B6B00000031C16408603221079000", "DSK Bank Debit Mastercard (Bank)" }, + { "3B6B00000031C164086032220F9000", "Universidade de Aveiro (ID Card) (eID)\nhttps://www.ua.pt/pt/sas/cartao" }, + { "3B6B00000031C164086032420F9000", "Westpac Handybank EFTPOS/ATM Card (Bank)" }, { "3B6B00000031C164087771300F9000", "Apple Card (from launch) (Bank)\nhttps://www.apple.com/apple-card/" }, { "3B6B00000031C16408777156079000", "American Express UK Euro ICC charge card (Bank)\nhttps://www.americanexpress.com/icc/cards/the-basic-international-currency-card.html" }, + { "3B6B00000031C16408986200079000", "EquaBank Master Card (Bank)\nhttps://equabank.cz" }, + { "3B6B00000031C164089862000F9000", "NovaKBM Visa Debit (Bank)" }, { "3B6B00000031C164089862010F9000", "Sodexo Czech Gastro/Multipass (Other)\nhttps://www.sodexo.cz/" }, + { "3B6B00000031C1640924331E0F9000", "Cembra Money Bank - Certo! Mastercard credit card (Bank)\nhttps://certo-card.ch/certo/de/" }, + { "3B6B00000031C164092962250F9000", "SANTANDER BASIC CASH CARD (Bank)\nhttps://www.santander.co.uk/assets/s3fs-public/2018-09/Basic%20Current%20Account%20KFD.pdf" }, + { "3B6B00000031C16409644136079000", "HSBC UK Visa Debit Card (Bank)\nhttps://www.hsbc.co.uk/content/dam/hsbc/gb/pdf/help/hsbc-visa-debit-card-guide.pdf" }, + { "3B6B00000031C164096441360F9000", "VISA Business Folio AS /Norway (Sparebanken Vest) [IDEMIA] (Bank)\nhttps://folio.no/" }, { "3B6B000020900000000000B0A2BD69", "Fudan FM1280 (JavaCard)" }, { "3B6B0000426C756361726420344B42", "Blutronics Blucard 4K (Loyalty)\nhttp://blucard.blutronics.com" }, { "3B6B00004348495031342056312E30", "Swiss PostFinance Card (Bank)\nhttps://www.postfinance.ch/en/priv/prod/card/pfcard.html" }, @@ -739,7 +781,10 @@ const static atr_t AtrTable[] = { { "3B6C00004E544943339051024A030000", "Topas TV (Pay TV)" }, { "3B6C000080641134014873F741C08107", "Universal Electronic Card (UEC Russia) (eID)" }, { "3B6C0000806411650190730000008107", "Universal Electronic Card (UEC Russia) (eID)" }, + { "3B6C00008066B1A30401110B83009000", "NAVY F.C.U. (JavaCard)" }, + { "3B6C00008066B1A330401110B8300900", "Visa debit (Bank)" }, { "3B6C0002366186384B8C13046203598A", "Nagravision, Swiss mode" }, + { "3B6C00FF50564A434F50323156323331", "Al Etihad (Bank)" }, { "3B6C00FF8073C8211366010611590001", "Visa Crypto Business Electron by neyvabank.ru (Bank)\nhttps://neyvabank.ru/uploads/files/download/bankdirectvisacryptocardreader.pdf" }, { "3B6D0000", "PVT (Bank)" }, { "3B6D0000003180642DA0040C71968C6129", "UK Co-operative Bank Visa Debit (produced 2002)" }, @@ -756,6 +801,7 @@ const static atr_t AtrTable[] = { { "3B6D00000031C071D664A0010400849000", "Swiss Mastercard M-Budget (Bank)" }, { "3B6D00000031C071D66511223301839000", "UK Co-operative Bank Visa Debit (produced 2006)" }, { "3B6D000000664D453153050653036104F0", "FutureCard Ind. LLC / Feb-18 | Blank card for programming (JavaCard)" }, + { "3B6D00000073C800136447374237009000", "VISA DEBIT CLASSIC BANK OF AMERICA (Bank)" }, { "3B6D00000073C800136447374532009000", "Canada TD Bank Visa Debit/Interac Debit Card (Bank)" }, { "3B6D00000073C80013644A374237009000", "Sberbank Visa card (Bank)" }, { "3B6D00000073C800136454334433009000", "FirstBankcard issued for overstock.com (Bank)\nhttp://www.firstbankcard.com/overstock/" }, @@ -795,9 +841,10 @@ const static atr_t AtrTable[] = { { "3B6D000080318065B0872701BC83089000", "Kazcommertsbank\nhttp://en.kkb.kz/page/WhoWeAre\none of the biggest banks in Republic of Kazakhstan\nNordea (Finland) + Finnair MasterCard (credit)\nGXP7 T=0" }, { "3B6D000080318065B0873401D783009000", "Fidelity Investment Rewards (AMEX) (Bank)\nhttps://www.fidelity.com/cash-management/american-express-cards" }, { "3B6D000080318065B0893501F183009000", "Bank of America BankAmericard Travel Visa Chip Card (Gemalto)\nhttps://www.bankofamerica.com/credit-cards/products/bankamericard-travel-rewards-credit-card.go\nCredito Trevigiano - Banca di Credito Cooperativo - Carta BCC\nVISA Signature issued by RBC Bank (Georgia), N.A.\nhttps://www.rbcbank.com/\nBanca Popolare di Novara - (Bancomat Maestro)" }, - { "3B6D000080318065B0894001F283009000", "PSAM Card" }, + { "3B6D000080318065B0894001F283009000", "PSAM Card\nNordea Mastercard Card" }, { "3B6D00008067A1110101640855830E9000", "Italian Intesa SanPaolo Maestro" }, { "3B6D00FF003180718E6448D50200829000", "Blue for Business, American Express@Business" }, + { "3B6D00FF0031C173C8400052A1D8009000", "Discover it Credit Card (Bank)\nhttps://www.discover.com/credit-cards/cash-back/it-card.html" }, { "3B6D00FF80655343010D067394211B810[15]", "Giesecke & Devrient CardToken 350 (ICCD)" }, { "3B6D00FF8073002113574A544861314700", "ActiveKey SIM" }, { "3B6D00FF8073002113574A544861314800", "Spanish Medical College Card" }, @@ -824,7 +871,7 @@ const static atr_t AtrTable[] = { { "3B6E00000031C0657CB501018071D68C6121", "MUFG CARD (AMEX .jp) (Bank)\nhttp://www.cr.mufg.jp/mufgcard/support/webs/" }, { "3B6E00000031C065BCD002010671D68C612E", "Lloyds TSB Mastercard Credit Card" }, { "3B6E00000031C065BCD002010671D68C6133", "Lloyds TSB Visa Debit\nBarclays Visa DEBIT" }, - { "3B6E00000031C065BCD002010671D68C6143", "S-pankki (Finland) Visa Debit" }, + { "3B6E00000031C065BCD002010671D68C6143", "S-Pankki (Finland) Visa Debit" }, { "3B6E00000031C065BCD102010171D68C6133", "Travelex Cash Passport - Prepaid MasterCard Currency Card" }, { "3B6E00000031C065BCD102010171D68C6135", "MasterCard Card, issues by Rabobank in the Netherlands" }, { "3B6E00000031C065D3C102012871D68C6122", "Visa debit card" }, @@ -910,10 +957,11 @@ const static atr_t AtrTable[] = { { "3B6E0000626C756361726420344B422F7634", "eID Blutronics Blucard 4K\nhttp://blucard.blutronics.com" }, { "3B6E0000626C756361726420384B422F7634", "eID Blutronics Blucard 8K\nhttp://blucard.blutronics.com" }, { "3B6E00008025A00000002856801024000111", "Opencard, new card in Prague, Czech Republic (transport card)" }, + { "3B6E0000803108721422574458544B4E3031", "DX-Token (eID)\nhttps://www.dexon.ind.br/produtos-dxtoken" }, { "3B6E000080318065B00301015E8300009000", "FirstUSA Visa" }, { "3B6E000080318065B00302015E8300009000", "Gemplus GemXpresso 211is" }, { "3B6E000080318066B0070300AC0183009000", "e-payment card with topup system, propreteary by local bank\nhttp://www.klikbca.com/individual/silver/product.html?s=69" }, - { "3B6E000080318066B0840C016E0183009000", "Optelio Cards (D72 R4 WR)\nNordea (a Skandinavian bank) eID card\nhttp://linux.fi/wiki/Nordea_eID\nRBC Royal Bank Client Card (bank in Canada)\nBanco Santander TUI/USC R7\nGemalto Optelio/Desineo D72 (JavaCard) with WG10 and Maestro (JavaCard) (Bank)\nCarte Ticket Restaurant with MasterCard\nCitigold VISA Debit for Citibank, Australia\nPlatinum VISA card for Citibank, Australia\nVISA Infinite issued by RBC Royal Bank (Canada)\nhttp://www.rbc.com/\nPostepay Evolution - Poste Italiane (mastercard)\n'la Caixa' (Spain) (VISA Electron) debit card (Bank)\nhttps://www.lacaixa.es/\nItalian Webank.it BPM Banca Popolare di Milano Bancomat & Maestro Card (Bank)" }, + { "3B6E000080318066B0840C016E0183009000", "Optelio Cards (D72 R4 WR)\nNordea (a Skandinavian bank) eID card\nhttp://linux.fi/wiki/Nordea_eID\nNordea Mastercard card\nNordea Visa card\nRBC Royal Bank Client Card (bank in Canada)\nBanco Santander TUI/USC R7\nGemalto Optelio/Desineo D72 (JavaCard) with WG10 and Maestro (JavaCard) (Bank)\nCarte Ticket Restaurant with MasterCard\nCitigold VISA Debit for Citibank, Australia\nPlatinum VISA card for Citibank, Australia\nVISA Infinite issued by RBC Royal Bank (Canada)\nhttp://www.rbc.com/\nPostepay Evolution - Poste Italiane (mastercard)\n'la Caixa' (Spain) (VISA Electron) debit card (Bank)\nhttps://www.lacaixa.es/\nItalian Webank.it BPM Banca Popolare di Milano Bancomat & Maestro Card (Bank)\nSberbank of Russia MIR debit card (Bank)\nMasterCard bank card by OTP Bank (Hungary)" }, { "3B6E000080318066B08412016E0183009000", "Barclaycard Platinum VISA\nInteligo debit card\nVISA issued by ING (Poland)\nVISA Debit card for ING Direct, Australia\nVISA Gold issued by RBC Royal Bank (Canada)\nhttp://www.rbc.com/\nGas Natural Fenosa Visa (issued by CaixaBank) (Bank)\nhttp://www.clubfenosa.gasnaturalfenosa.es/ca/1285341160257/targeta+gas+natural+fenosa.html" }, { "3B6E000080318066B08416016E0183009000", "UK 'Barclaycard Gold VISA' with RFID" }, { "3B6E000080318066B0870C016E0183009000", "Banco Santander TUI/USC R7 - Gemalto Optelio/Desineo D72 (JavaCard)\nhttp://www.observatoriotui.com/home" }, @@ -927,17 +975,24 @@ const static atr_t AtrTable[] = { { "3B6E00FF00620000574156414E5410819000", "debit card (Visa Electron) issued by Nordea bank" }, { "3B6E00FF4573744549442076657220312E30", "Estonian Identity Card (EstEID v1.0 warm)" }, { "3B6E00FF47442D47502D333256342D444553", "Mastercard Ourocard Platinum from Banco do Brasil" }, + { "3B6F000000004A300A86454A5A231044433330", "Personal Card (eID)" }, { "3B6F00000031C068435350454D560300079000", "SOCCARDRT (HealthCare)" }, { "3B6F00000031C173C821106441443231009000", "Debit Card for Santander Universidades PT (Bank)\nhttps://www.santander.pt/pt_PT/Particulares/Universitarios.html" }, + { "3B6F00000031C173C821106441443530009000", "Discover Cashback Debit (Bank)\nhttps://www.discover.com/online-banking/" }, + { "3B6F00000031C173C8211064414D3347", "CHASE DEBIT VISA (JavaCard)" }, + { "3B6F00000031C173C8211064414D3347079000", "Java (JavaCard)" }, { "3B6F00000031C173C8211064474D3131009000", "Beutsche Bank Business mastercard credit (Bank)\nhttps://www.deutsche-bank.de/gk/zahlungsverkehr/zahlungsverkehr-im-ueberblick/kreditkarte.html" }, { "3B6F00000031C173C8211064474D3133009000", "Bank card from the Commonwealth Bank of Australia (Bank)\nhttps://www.commbank.com.au/business/pds/cbb127_eftpos_int_v7.pdf" }, { "3B6F00000031C173C8211064474D3134009000", "bancomat Banca Popolare Milano + maestro debit card + rfid (Bank)" }, + { "3B6F00000031C173C8211064474D3136009000", "Highest level of DNB AS (Norway (Bank)" }, { "3B6F00000031C173C8211064474D3331009000", "BBVA Antes Card (Spain) (VISA) prepaid card (Bank)\nhttps://www.bbva.es/eng/productos/ficha/tarjeta-antes-bbva/0T00000225" }, { "3B6F00000031C173C8211064474D3332009000", "td debit visa card (Bank)\nScotiabank ScotiaCard Interac/Visa debit card (Bank)\nhttps://www.scotiabank.com/ca/en/personal/ways-to-bank/debit-credit-prepaid-cards/debit-cards/scotiacards.html" }, { "3B6F00000031C173C8211064474D3338009000", "ING Direct Debit Card (Bank)" }, { "3B6F00000031C173C8211064474D3341009000", "Fineco debit card (Bancomat, Visa Debit) (Bank)\nhttps://finecobank.com/it/online/conto-e-carte/carte-e-bancomat/" }, - { "3B6F00000031C173C8211064474D3435009000", "VISA card, issued by OP Financial Group, Finland (Bank)" }, + { "3B6F00000031C173C8211064474D3435009000", "VISA card, issued by OP Financial Group, Finland (Bank)\nVISA card, issued by S-Pankki, Finland (Bank)" }, { "3B6F00000031C173C8211064474D3437009000", "Visa credit card, issued by Klarna (Bank) (Bank)\nhttps://www.klarna.com/se/kort/" }, + { "3B6F00000031C173C8211064474D3533009000", "American Express Platinum Card Mexico (Bank)\nhttps://www.americanexpress.com/mx/tarjetas-de-credito/the-platinum-credit-card/" }, + { "3B6F00000031C173C821106457493035009000", "Discover EMV Card (Bank)" }, { "3B6F00000031C173C821106457493036009000", "neat MasterCard (Bank)\nhttps://www.neatcommerce.com/" }, { "3B6F00000031C173C821106457493131009000", "Banca Popolare Di Sondrio (IT) - Ateneo+ Card for University of Brescia (Bank)\nhttps://www.ateneopiu.it/home" }, { "3B6F00000031C173C8211064574B3037009000", "NatWest VISA Debit card (Bank)\nhttps://personal.natwest.com/personal/current-accounts/select_account.html" }, @@ -945,7 +1000,7 @@ const static atr_t AtrTable[] = { { "3B6F00000031C173C821106457533430009000", "PNC Debit (Bank)" }, { "3B6F000000664D453161030153086104F09000", "Spanish University of Murcia smart ID card - Old version (M.Mar OS) - Also used by many others spanish universities" }, { "3B6F000000664D4531B1030153086104F09000", "Spanish UCAM University smart ID card - (M.Mar OS) - Also used by many others spanish universities" }, - { "3B6F000000664D45668003..53066103F09000", "Millenium Card (www.coruna.es/millennium) municipal city card for A Coruna, Spain.\nelectronic wallet for paying services like parking meter or public service (bus) transportation." }, + { "3B6F000000664D45668003..53066103F09000", "Millennium Card (www.coruna.es/millennium) municipal city card for A Coruna, Spain.\nelectronic wallet for paying services like parking meter or public service (bus) transportation." }, { "3B6F000000664D456680030C53066105F09000", "Transporte Metropolitano de Galicia (Transport)\nhttp://tmg.xunta.gal/" }, { "3B6F000000664D456680031453036104F09000", "Paypal Prepaid Card (YoUnique Money E.D.E.)" }, { "3B6F000000664D456680031653066105F09000", "Transport Metropolitano de Galicia (Transport)\nhttps://tmg.xunta.gal/" }, @@ -956,6 +1011,7 @@ const static atr_t AtrTable[] = { { "3B6F000000B854211004900000000000000000", "VIABUY Credit card (Bank)\nhttp://www.viabuy.de" }, { "3B6F000000B854311007900000000000000000", "Revolut Premium Mastercard (Bank)\nhttps://www.revolut.com/revolut-premium\nMonzo Bank (UK) Debit Mastercard\nhttps://monzo.com/\nLansforsakringar (SE) Debit Mastercard\nhttps://www.lansforsakringar.se/\nING Direct MasterCard (Bank)\nhttps://www.ing.es/tarjetas-ing" }, { "3B6F00000231B813FF000000000000000F9000", "Coverflex | Flexible Benefits Platform (Other)\nhttps://www.coverflex.com/" }, + { "3B6F00003101F1564011001900000000000000", "Postepay Evolution (Bank)\nhttps://postepay.poste.it/prodotti/postepay-evolution.html" }, { "3B6F0000626C75636172642031364B422F7634", "eID Blutronics Blucard 16K\nhttp://blucard.blutronics.com" }, { "3B6F00008031C0520083640219083283839000", "Bancomer Mexican Bank" }, { "3B6F00008031C05205B5640200647183839000", "Read Card in USB, used for application in Java. (JavaCard)" }, @@ -966,6 +1022,7 @@ const static atr_t AtrTable[] = { { "3B6F00008031C05211F46402B3023783839000", "VISA (Bank)" }, { "3B6F00008031C052132F640219083283839000", "Cajamadrid-UCM (Madrid, Spain) Cash/Visa Electron" }, { "3B6F00008031C05216B9640566803283839000", "Banorte Mexican Bank" }, + { "3B6F00008031C05216F5640569937083839000", "BANCO INTERAMERICANO DE FINANZAS, S.A.E.M.A. (Bank)" }, { "3B6F00008031C05220E2640562178083839000", "VISA MedicusMundi (VISA Classic Affinity credit card, issued by Laboral Kutxa) (Bank)\nhttps://www.medicusmundi.es/es/que-puedes-hacer-tu/tarjetas-affinity" }, { "3B6F00008031E05B4555520000000000070200", "Pre-loaded wallet card. 'Mondex is a smart card electronic cash system, implemented as a stored-value card' (Bank)\nhttps://en.wikipedia.org/wiki/Mondex" }, { "3B6F00008031E05B4E4F4B0000000000000200", "Norsk-Tipping (Buypass) Monodex card" }, @@ -994,6 +1051,7 @@ const static atr_t AtrTable[] = { { "3B6F00008031E06B04520502BB555555555555", "AlfaBROU - Mastercard (prepaid card emitted by Banco Republica - Uruguay) (Bank)\nhttps://www.brou.com.uy/personas/tarjetas/prepaga-alfabrou" }, { "3B6F00008031E06B04520502FD555555555555", "C6 Bank Mastercard Global Account (Bank)\nhttps://www.c6bank.com.br/conta-global\nC6 Bank Mastercard Brazil Account (Bank)\nhttps://www.c6bank.com.br/nossos-produtos" }, { "3B6F00008031E06B04520502FE555555555555", "CITIBanamex 'Perfiles' debit card (Bank)\nhttps://www.banamex.com/es/personas/cuentas/cuenta-perfiles.html" }, + { "3B6F00008031E06B04546B026D555555555555", "Mastercard Credit/Debit Card (Bank)" }, { "3B6F00008031E06B0505050280555555555555", "Banamex cuenta perfiles (Bank)\nhttp://banamex.com" }, { "3B6F00008031E06B0508050283555555555555", "Bank of Montreal debit card" }, { "3B6F00008031E06B0512050287555555555555", "American Express credit card" }, @@ -1047,8 +1105,11 @@ const static atr_t AtrTable[] = { { "3B6F0000805A080608201223C202795D829000", "OPUS is card for storing public transit passes and tickets (Transport)\nhttps://opusenligne.ca/" }, { "3B6F0000805A080608201223C2036347829000", "OPUS Card RTC Quebec's Bus system (Canada) (Transport)\nhttps://opusenligne.ca" }, { "3B6F0000805A080608201223C204D07F829000", "OPUS Card (Transport)\nhttps://en.wikipedia.org/wiki/OPUS_card" }, + { "3B6F0000805A080608201223C210E956829000", "Montreal Public transport Card (OPUS) (Transport)\nhttps://www.stm.info/en/info/fares/opus-cards-and-other-fare-media/opus-card" }, { "3B6F0000805A080608201223C21113A6829000", "OPUS (Montreal and Quebec transport card) (Transport) (Transport)\nhttps://www.stm.info/en/info/fares/opus-cards-and-other-fare-media/opus-card" }, { "3B6F0000805A080608201223C21290FD829000", "OPUS Montreal Societe des Transports de Montreal Metro and Bus card. (Transport)\nhttps://www.stm.info/en/info/fares/opus-cards-and-other-fare-media" }, + { "3B6F0000805A080608201223C215C411829000", "Montreal OPUS Transportation Card for the STM, STL, RTM and RTL (Transport) (Transport)" }, + { "3B6F0000805A080608201223C21BAFB4829000", "OPUS card (Transport)\nhttps://www.stm.info/en/info/fares/opus-cards-and-other-fare-media/opus-card" }, { "3B6F0000805A0A010120031103DCB31B829000", "Card Transport 'Lignes d'Azur' of 'Metropole Nice Cote d'Azur'" }, { "3B6F0000805A0A01012003119361D7D7829000", "Carte Tecely (Reseau TCL: metro, tramway, bus et funiculaire de Lyon) (Idemia)" }, { "3B6F0000805A0A0102200311........829000", "Card << Oura ! >> of region Rhone-Alpes, Calypso standard (TER, Transisere)" }, @@ -1072,10 +1133,16 @@ const static atr_t AtrTable[] = { { "3B6F0000805A0A070620042C031B899B829000", "Israeli public transport 'RavKav' card (ASK variant) (Transport)\nhttp://www.dannorth.co.il/" }, { "3B6F0000805A0A070620042C031C112A829000", "Peronalized RavKav (Transport)\nhttps://ravkavonline.co.il/he/" }, { "3B6F0000805A0A070620042C03288444829000", "rav-kav (Transport)\nhttp://nohal.mot.gov.il/%d7%94%d7%92%d7%93%d7%a8%d7%95%d7%aa%20%d7%91%d7%a0%d7%95%d7%a9%d7%90%20%d7%9b%d7%a8%d7%98%d7%95%d7%a1%20%d7%97%d7%9b%d7%9d.aspx" }, + { "3B6F0000805A0A070620042C0490EFCB829000", "Rav-Kav Israel (Transport)\nhttps://ravkavonline.co.il" }, { "3B6F0000805A0A070620042DC1660B73829000", "Rav-Kav: Israel's Travel Card (Transport)" }, { "3B6F0000805A0A070620042DC169517A829000", "Card for bus (Transport)" }, + { "3B6F0000805A0A070620042DC2E8E270829000", "ravkav (Transport)" }, + { "3B6F0000805A0A070620042DC3229072829000", "Israelian public transportation smartcard for all bus and rail services, called a Rav-Kav, RavKav, or Rav Kav. This variant is NFC capable. (Transport)\nhttps://ravkavonline.co.il/" }, { "3B6F0000805A28010220122103346577829000", "ONYGO! pass\nhttp://www.region-basse-normandie.fr/pass-onygo" }, + { "3B6F0000805A280102201221C12AD1C8829000", "SIMPLI CITES (Transport)\nhttps://www.fluo.eu/" }, + { "3B6F0000805A280102201221C365AF0F829000", "SIMPLI CITE Stan (France) (Transport)\nhttps://www.reseau-stan.com/" }, { "3B6F0000805A2811421010122B260CD45A829000", "French transport card Navigo (Transport)\nhttps://www.iledefrance-mobilites.fr/je-gere-ma-carte" }, + { "3B6F0000805A28114210122B03791BB9829000", "RATP Navigo Easy Paris France (Transport)\nhttps://www.transilien.com/fr/page-tarifs/navigo-easy" }, { "3B6F0000805A28114210122B037A89AA829000", "Ile-de-France Mobilites (Navigo Easy) (Transport)\nhttps://www.iledefrance-mobilites.fr/titres-et-tarifs/supports/passe-navigo-easy" }, { "3B6F0000805A28114210122B037AED59829000", "Navigo Easy (Paris) (Transport)\nhttps://www.iledefrance-mobilites.fr/titres-et-tarifs/supports/passe-navigo-easy" }, { "3B6F0000805A28114210122B23A9E229829000", "Navigo(French transport) (Transport)\nhttp://www.navigo.fr/je-gere-ma-carte/" }, @@ -1120,6 +1187,8 @@ const static atr_t AtrTable[] = { { "3B6F0000805A28130210122B03F80BC3829000", "Korrigo Card (Transport in Rennes Area in France ) (Transport)\nhttps://www.star.fr/titres-tarifs/carte-korrigo/" }, { "3B6F0000805A28130210122B7500559A829000", "Contact card to handle personal travel tickets in the Britany area. Used by several travel operators like SNCF TER Bretagne, STAR in Rennes, BIBUS in Brest,.... (Transport)" }, { "3B6F0000805A28130210122B75021B8A829000", "KorriGo, smart transport card in France region Brittany (Transport)\nhttps://www.ter.sncf.com/bretagne/offres/carte-korrigo" }, + { "3B6F0000805A28130210122B7503FB01829000", "origo (France) (Transport)\nhttps://www.breizhgo.bzh/se-deplacer-en-bretagne/KorriGo" }, + { "3B6F0000805A28130210122B750C7E79829000", "Transportation card delivered by STAR (Transportation service from the city of Rennes, France) (Transport)\nhttps://www.star.fr/titres-et-tarifs/carte-korrigo/" }, { "3B6F0000805A28130210122B9292E642829000", "Transport card in cote d'or France (mobigo)" }, { "3B6F0000805A28130210122B9292E829829000", "French transport card of the city of Dijon and Cote d'or department. (Transport)\nhttps://www.viamobigo.fr/fr/acheter-mes-titres-de-transport-mobigo-en-cote-dor/176" }, { "3B6F0000805A28130210122B92D663FC829000", "Card 'Korrigo' region Bretagne, France, Bibus Brest Metropole public transport (Transport)\nhttps://fr.wikipedia.org/wiki/KorriGo" }, @@ -1132,6 +1201,7 @@ const static atr_t AtrTable[] = { { "3B6F0000805A2C06081010059316213D829000", "Portuguese Viva Card (Transport)\nhttp://www.portalviva.pt" }, { "3B6F0000805A2C0608101005932268D0829000", "Public transport card lisbon (Transport)\nhttp://www.portalviva.pt" }, { "3B6F0000805A2C0608101005932346E2829000", "Lisboa Viva (Transport)" }, + { "3B6F0000805A2C060810100593237A11829000", "Portuguese Lisboa Viva Viagem Transport Card (Transport)" }, { "3B6F0000805A2C11C31010057B01004B829000", "French Military Circulation card (Transport)" }, { "3B6F0000805A2C11C31010057B0A1DBA829000", "French military discount on SNCF trains card (Transport)" }, { "3B6F0000805A2C11C31010057B120D53829000", "French military transport card (Transport)" }, @@ -1156,11 +1226,16 @@ const static atr_t AtrTable[] = { { "3B6F0000805A2D060810100278324D6F829000", "Lisboa Viva card, public transport card of Lisbon (Portugal) (Transport)\nhttps://www.portalviva.pt" }, { "3B6F0000805A2D06081010027835EDCE829000", "Lisbon Transportation SmartCard (Transport)" }, { "3B6F0000805A2D06081010027848BBCC829000", "Lisbon Metro Monthly Student Pass (Transport)\nhttps://www.metrolisboa.pt/" }, + { "3B6F0000805A2D0608101005935C42FB829000", "Comboios de Portugal Transit Card (Transport)\nhttps://www.cp.pt/passageiros/pt/consultar-horarios/precos/cartao-cp" }, { "3B6F0000805A3407061500017917A7E2829000", "Rav-Kav multi-line travel ticket used in the public transportation system in Israel (Transport)\nhttps://www.gov.il/en/departments/guides/multi_line_card" }, + { "3B6F0000805A340706150001792A4B5C829000", "Rav Kav Transit Payment Card (Israel) (Transport)\nhttps://ravkavonline.co.il/" }, { "3B6F0000805A3B0706150101793E797B829000", "Rav Kav (Transport)\nhttp://alhakav.mot.gov.il/he/rav-kav" }, { "3B6F0000805A3B070615010279537211829000", "Israeli public transport card ('RavKav') (Transport)\nhttps://ravkavonline.co.il" }, { "3B6F0000805A3B07061501027956C5F4829000", "RAVKAV - Israel dual interface transport card (Calypso standard) (Transport)\nhttps://en.wikipedia.org/wiki/Rav-Kav" }, + { "3B6F0000805A3B070615010279C3C331829000", "Rav-Kav Israel (Transport)\nhttps://ravkavonline.co.il" }, { "3B6F0000805A3C0608140101C3805E38829000", "Lisboa VIVA - Lisbon public transport card (Transport)\nhttps://www.portalviva.pt/" }, + { "3B6F0000805A3C0608140101C4D4FEC4829000", "Metropolitan Transports of Lisbon NAVEGANTE Card (Transport)\nhttps://www.navegante.pt/viajar/cartoes" }, + { "3B6F0000805A3C0608140101C4D522FB829000", "Navegant Perdonal Card - Transportes Metropolitanos de Lisboa (Transport)\nhttps://www.navegante.pt/" }, { "3B6F0000805A3C1142141001274AC890829000", "Gemalto Celego G1 (Transport)" }, { "3B6F0000805A3C114214100127A46D02829000", "Navigo decouverte Paris (Transport)\nhttp://www.navigo.fr/titres/le-forfait-navigo-semaine-presentation/" }, { "3B6F0000805A3C114214100127B3C81B829000", "Transport card for Paris (France) and its region. Market name is Navigo (Transport)" }, @@ -1172,8 +1247,10 @@ const static atr_t AtrTable[] = { { "3B6F0000805A3C1142141001C17BC993829000", "Navigo Easy (Transport)\nhttps://www.ratp.fr/titres-et-tarifs/passe-navigo-easy" }, { "3B6F0000805A3C1142141001C17DA8CA829000", "Navigo Easy (France) transport card (Transport)\nhttps://www.ratp.fr/titres-et-tarifs/passe-navigo-easy" }, { "3B6F0000805A3C1142141001C185D47B829000", "Navigo Liberte+ -- French (Paris region) transport card (Transport)" }, + { "3B6F0000805A3C1142141001C2A40D5F829000", "'Pass Navigo Decouverte' - Parisian transport card (Transport)\nhttps://www.iledefrance-mobilites.fr/titres-et-tarifs/supports/passe-navigo-decouverte" }, { "3B6F0000805A3C1142141001C2BF7B46829000", "Navigo RATP (Transport)" }, { "3B6F0000805A3C1330141001C3568397829000", "'oura' card for leman express and ter sncf rhone-alpes (Transport)" }, + { "3B6F0000805A3C1330141001C4F81130829000", "Oura card which allows to travel across many transport networks of France region: Auvergne-Rhone-Alpes (Transport)\nhttps://www.oura.com/" }, { "3B6F0000805A3C23C4141001C02EF7F8829000", "MOBIB basic Brussels (with NFC) (Transport)\nhttps://mobib.be/en.html" }, { "3B6F0000805A3C23C4141001C02EFA97829000", "Brussels STIB MOBIB Classic (Transport)\nhttps://www.stib-mivb.be/mobib.html" }, { "3B6F0000805A3C23C4141001C02FDEFA829000", "MOBIB public transport card (Belgium); contacted IC (Transport)" }, @@ -1187,7 +1264,9 @@ const static atr_t AtrTable[] = { { "3B6F0000805A3D0706150101792CB636829000", "RavKav (Transport)" }, { "3B6F0000805A3D23C41501027937D7AE829000", "MOBIB - Brussels (Transport)\nhttps://www.stib-mivb.be/article.html?_guid=d02c7fb6-3e9c-3810-248e-eec4ee5ebc8c&l=fr" }, { "3B6F0000805A3D23C41501027949789C829000", "MOBIB basic (Transport)\nhttp://www.stib-mivb.be/article.html?_guid=30af0085-2483-3410-5394-a71daf08acd1&l=en#contentBodyList1" }, + { "3B6F0000805A3D23C4150102795A863C829000", "mobib transportation card (Transport)" }, { "3B6F0000805A3D23C415010279748A25829000", "Mobib (Brussels transport card) for the STIB-MIVB network (Transport)\nhttps://www.stib-mivb.be/article.html?_guid=d02c7fb6-3e9c-3810-248e-eec4ee5ebc8c&l=fr" }, + { "3B6F0000805A3D23C415010279A9E567829000", "MoBIB card, a medium for the transport tickets of the four Belgian public transport operators (Transport)\nhttps://mobib.be/" }, { "3B6F0000805A434F4C44000000000000829000", "LBB Berlin, MasterCard (ADAC branding?)" }, { "3B6F0000805A4880C1205001AEC00295829000", "Calypso SAM C1 (Transport)" }, { "3B6F0000806645460138180353023110829000", "Fabrica Nacional de Moneda y Timbre FNMT WG10\nhttp://www.fnmt.es/es/html/tage/fichaTarjeta/fp1_ta_01.asp" }, @@ -1198,7 +1277,7 @@ const static atr_t AtrTable[] = { { "3B6F00008066A20302023D0753023110829000", "Electronic purse of the Universidad Politecnica of Madrid (provided by Banco Santander)" }, { "3B6F00008066B007010107............9000", "Gemalto Santander Optelio TUI R7 with WG10 customized using Contact interface" }, { "3B6F00008066B0070101070753023110829000", "Banco Santander TUI/USC R7 - Gemalto Optelio/Desineo D72 (JavaCard) with WG10 (JavaCard)" }, - { "3B6F00008066B0070101070753023124829000", "Banco Santander TUI/USC R7 - Gemalto Optelio/Desineo D72 (JavaCard) with WG10 and Maestro (JavaCard)" }, + { "3B6F00008066B0070101070753023124829000", "Banco Santander TUI/USC R7 - Gemalto Optelio/Desineo D72 (JavaCard) with WG10 and Maestro (JavaCard)\nClient bizness card (Bank)" }, { "3B6F00008066B007010177............9000", "Other Optelio Card (Santander)" }, { "3B6F00008066B0070101770753023110829000", "University ID card (issued by Banco Santander Central Hispano)\n.\nUniversidad Nacional de Educacion a Distancia (UNED, Spain)\nhttp://www.uned.es/tarjeta\n.\nUniversitat Politecnica de Catalunya (UPC.edu)\nhttps://www.upc.edu/identitatdigital\n.\nUniversitat Ramon Llull (URL)\nhttp://www.url.edu/cont/url/carnet.php" }, { "3B6F00008066B0070101770753023124829000", "Santander 4B Maestro\nUniversity of Santiago de Compostela. Spain\nPolytechnical University of Madrid, Spain" }, @@ -1227,7 +1306,7 @@ const static atr_t AtrTable[] = { { "3B76130000806207418181", "TransLink card (discontinued San Francisco Bay Area transit card)" }, { "3B76980000009C11010102", "CyberFlex Access 32" }, { "3B771800004B4153414B4944", "Identification Kazakhstan Republic (passport)\nhttps://egov.kz/" }, - { "3B7812000047C403008FF19000", "Sattelite bg 23.5 East cryptoworks card" }, + { "3B7812000047C403008FF19000", "Satellite bg 23.5 East cryptoworks card" }, { "3B7812000054C401078FF19000", "XtraMusic listening card (Pay TV)" }, { "3B7812000054C40204FFFF6F04", "UPC Direct Satellite TV Card (Pay TV)\nhttp://www.upcdirect.com/" }, { "3B7812000054C402078FF19000", "Polish WIZJA TV pay-tv card for satellite receivers (Pay TV)" }, @@ -1247,11 +1326,14 @@ const static atr_t AtrTable[] = { { "3B781400000073C8400000", "e-tazkira (eID)" }, { "3B781800000073C80140009000", "The Kyrgyz Republic eID (eID)" }, { "3B781800000073C840000000009000", "VERISOFT REWARDO LOYALTY CARD and CUSTOM PERSONALIZATION PROJECTS FOR EXTERNAL ENTITIES (Loyalty)\nhttp://www.verisoft.com" }, + { "3B781800000073C84013009000", "Mastercard (Bank)" }, { "3B781800005448204E4944203.", "Thailand National ID (eID)" }, { "3B7818000100000000C31E6919", "Storage for passwords (Bank)" }, { "3B781800FF0073C84000009000", "NAB Visa Debit - Contact I/F (Bank)" }, + { "3B789400008684044930310604", "bank of china Debit Card (Bank)" }, { "3B789600000073C84000009000", "SAM card for acquirer module by lanit.ru (Bank)" }, { "3B789600005343066001079000", "Bank of America Travel Rewards Credit Card (Bank)\nhttps://www.bankofamerica.com/credit-cards/products/travel-rewards-credit-card/" }, + { "3B789600005343066201079000", "ATM Card (Bank)" }, { "3B789600008100035001079000", "RMA BMCE BANK CARD (Bank)" }, { "3B791100008054434F4C44829000", "amazon.de / VISA / LBB Debit Card (Bank)" }, { "3B79130000806416030183829000", "Raiffeisen VPay Debit Card (Bank)\nhttp://raiffeisen.ch" }, @@ -1262,11 +1344,13 @@ const static atr_t AtrTable[] = { { "3B791800008054434F4C44829000", "LBB VISA Card" }, { "3B7918000080634B560283079000", "Pay charge of South Korean Highway Tollgate, It named hi-pass. This card is sales by 'SM hiplus', and card name is 'Greencar Postpaid hi-pass Card'. In this name, 'Greencar' means South Korea's Car Sharing Service. This card from Rented car. (Transport)\nhttps://www.lottecard.co.kr/" }, { "3B79180000806355500183079000", "TEST SAM Card (espark) (Other)" }, + { "3B79180000806355561183039000", "Hi-Pass (Other)" }, { "3B79180000806355561283079000", "'hi-pass+ Prepaid hi-pass Card' pay charge of South Korean Highway Tollgate. Sold by 'SM hiplus' (Transport)\nhttp://www.hipluscard.co.kr/" }, { "3B799400005901010E016B0102A9", "Vending machine payment card ('Necta' brand)" }, { "3B79940000EB03010102700102A9", "Sodexo - Spanish vending machines (Other)\nhttp://es.sodexo.com/home.html" }, { "3B79940000F704010103800102A9", "Pelican Rouge, vending machine (Other)\nhttp://colnect.com/es/functional_cards/functional_card/26065-Maquinas_Cafe_-_Pelican_Rouge-Pelican_Rouge-Vending-Espa%C3%B1a\nhttp://www.pelicanrouge.co.uk/en-uk/about-us" }, { "3B7995000054454C454D10211010", "Israeli Identity Card (eID)\nhttp://smartid.gov.il/English/Pages/default.aspx" }, + { "3B799600002001010601000100E9", "Casino (Other)" }, { "3B799600005448204E494420313.", "Thai National ID Card (eID)" }, { "3B799800005001010401000101A9", "Gemalto PayFlex used in Aristocrat System 7000 Casino Management System (South Africa only)" }, { "3B79980000EB03010000700101A9", "Casino Rio Patras, Greece" }, @@ -1287,16 +1371,17 @@ const static atr_t AtrTable[] = { { "3B7A9600008065A201200100303D72D641", "Oman eID (eID)" }, { "3B7A9600008065A20120013D72D641", "Oman eID (eID)" }, { "3B7A9700008065B08520040272D64.", "OMAN EID CARD (eID)" }, + { "3B7A9700008065B08521040272D641", "Oman eID (eID) (eID)\nhttps://idp.pki.ita.gov.om/" }, { "3B7B..000080620.515646696E454944", "Setec SetCOS 5.1.0" }, { "3B7B..00008065B083......83009000", "IDClassic 3XX Cards (without MPCOS Applet - FIPS)" }, - { "3B7B11000031FE45436F6D624F532000", "Debit card emmited by Societe Generale Morocco (Bank)" }, + { "3B7B11000031FE45436F6D624F532000", "Debit card emitted by Societe Generale Morocco (Bank)" }, { "3B7B1800000031C06477E30300829000", "Oberthur Cosmopolic 64K v5.2 D" }, { "3B7B1800000031C06477E91000019000", "Oberthur Card Systems: Cosmo 64 RSA V5.4 (ISK Key Set: 404142 .. 4E4F)" }, { "3B7B1800000031C06490E31100829000", "oberthur card in the middle http://postarca.posta.si/downloadfile.aspx?fileid=16918 (eID)\nhttp://postarca.posta.si/" }, { "3B7B1800000031C064C6FC1000079000", "Sberbank of the RUSSIAN federation" }, { "3B7B1800000031E85427E60000019000", "Oberthur ID-One COSMO 64k v.5" }, - { "3B7B180000806201545646696E454944", "FineID identity card for organizations\nhttp://fineid.fi/default.aspx?id=491\nhttp://www.opensc-project.org/opensc/wiki/FinnishEid" }, - { "3B7B94000080621[12]515646696E454944", "Finnish Electronic ID card (fineid card www.fineid.fi)" }, + { "3B7B180000806201545646696E454944", "FineID identity card for organizations\nhttps://dvv.fi/en/organisation-cards\nhttps://github.com/OpenSC/OpenSC/wiki/Finnish-FINEID" }, + { "3B7B94000080621[12]515646696E454944", "Finnish Electronic ID card for persons (Former FINeID card)\nhttps://dvv.fi/en/citizen-certificate-and-electronic-identity" }, { "3B7B9400008065521607865383009000", "Truemove H Thailand (Telecommunication)\nhttp://truemoveh.truecorp.co.th/" }, { "3B7B9400008065B083010[13]7483009000", "Gemplus GemXpresso Pro R3 (E64 PK)" }, { "3B7B9500008065B08301047483009000", "Gemplus GemXpresso Pro 64K R3 FIPS v2" }, @@ -1341,8 +1426,9 @@ const static atr_t AtrTable[] = { { "3B7D94000080318065B08311C0A983009000", "GemXpresso R4 72K\nNational ID card of Republic of Lithuania (2007-2012)" }, { "3B7D95000080318065B08302047E83009000", "Gemalto's Classic TPC HM CC Mifare 1K White PVC\n(Old name GemSafeXpresso 64K)" }, { "3B7D95000080318065B08311....83009000", "Portuguese ID Card (eID)\nhttp://www.cartaodecidadao.pt/" }, + { "3B7D96000080318065B07549170F83009000", "DoD CAC card issued ~October 2020, Gemalto TOP DL V2.1 144K, Geneva Conventions Identification Card (PKI)\nhttps://www.cac.mil/" }, { "3B7D96000080318065B0830201F383009000", "Gemalto IDClassic 340" }, - { "3B7D96000080318065B0831100C883009000", "GEMALTO Clasic TPC IM CC" }, + { "3B7D96000080318065B0831100C883009000", "GEMALTO Classic TPC IM CC" }, { "3B7D96000080318065B0831111AC83009000", "GEMALTO WM GX4 72 DHS TSA" }, { "3B7D96000080318065B0831111E583009000", "Gemalto TOP DL v2 StdR\neCPF (Cadastro de Pessoas Fisicas) from Imprensa Oficial do Brasil\nIdentidade digital (e-CPF) from Caixa\nhttp://www.caixa.gov.br/\nIngenico Sign/Kit Telium TETRA (Developer kit signature card)\nhttps://developer.ingenico.com/hc/en-gb\nBrazilian 'e-CNPJ' card, issued by Certisign (Safesign)" }, { "3B7D96000080318065B0831113AC83009000", "CAC card (GEMALTO GCX4 72K DI)" }, @@ -1375,7 +1461,7 @@ const static atr_t AtrTable[] = { { "3B7E9400008025A00000002856801021000114", "CryptoPlus ProID, students ISIC card at University of Zilina, Slovakia\nTOP GX4 72k contact chip using JavaCard v2.2.1. and GlobalPlatform 2.1.1" }, { "3B7E9400008025A00000002856801024000111", "'OpenCard' - card issued by Prague local authority\ndual card: chip used for electronic certificates" }, { "3B7E9400008025D20310010056000000010100", "Personal identity card (ID card) of Czech Republic" }, - { "3B7E9400008025D20310010056000000020200", "Official Czech Republic identity card issued since 7/2018 (eID)\nhttps://www.eidentita.cz/" }, + { "3B7E9400008025D20310010056000000020200", "Official Czech Republic identity card issued since 7/2018 (eID)\nhttps://info.identitaobcana.cz/eop/" }, { "3B7E94000080318066475091450313830F9000", "JTOP Trusted Logic" }, { "3B7E940000803180664750A4450511830F9000", "JTOP Trusted Logic" }, { "3B7E9500008031807334118082900000000000", "IAS (Identification, Authentication, and electronic Signature) Premium, profil DGME from Gemalto" }, @@ -1410,17 +1496,19 @@ const static atr_t AtrTable[] = { { "3B7F1300008031C0520B71640566983683839000", "OuroCard VISA International - Banco do Brasil" }, { "3B7F1300008031C0520BBB640566983683839000", "VISA OUROCARD Banco do Brasil S.A." }, { "3B7F1300008031C0520D1E640566946183839000", "Universitat Politecnica de Valencia ID Visa Electron Card\nhttp://www.upv.es" }, - { "3B7F1300008031C0520DEA640566946183839000", "Universitat Rovira i Virgili Identification Card\nThis card enables his/her propietary to sign documents and to access to rooms, laboratories and classes." }, + { "3B7F1300008031C0520DEA640566946183839000", "Universitat Rovira i Virgili Identification Card\nThis card enables his/her proprietary to sign documents and to access to rooms, laboratories and classes." }, { "3B7F1300008031C0520ED4640566966183839000", "BBVA Blue Card (VISA)\nwww.bluebbva.com" }, { "3B7F1300008031C05210496402B3027083839000", "Bank of Brazil (Bank)\nhttp://www.bb.com.br/pbb/pagina-inicial" }, { "3B7F1300008031C05210686402B3027083839000", "Santander VISA (Brazil) (Bank)" }, { "3B7F1300008031C05210A46402B3027083839000", "EMV Smartcard Reader (Other)\nSaraiva (Banco do Brasil) - VISA (Bank)\nhttps://www.bb.com.br/pbb/pagina-inicial/voce/produtos-e-servicos/cartoes#/" }, { "3B7F1300008031C052112F640569937083839000", "Banco do Brasil (Bank)\nhttp://www.bb.com.br/" }, { "3B7F1300008031C05212936402B3027083839000", "Visa Infinite issued by Banco do Brasil (www.bb.com.br)\nManufactured by Giesecke & Devrient (G&D www.gi-de.com)" }, + { "3B7F1300008031C05213076402B3023783839000", "Banco do Brasil ELO Debito (Brazil) (Bank)" }, { "3B7F1300008031C052130B6402B3023783839000", "Visa Ourocard Platinum from Banco do Brasil" }, { "3B7F1300008031C0521366640566983683839000", "VISA Platinum from Banco do Brasil" }, { "3B7F1300008031C05214D5640566966183839000", "Visa Electron Debit Card issued by Spain Caja Madrid (www.cajamadrid.es)" }, { "3B7F1300008031C0521554640566983683839000", "VISA Card from Banc Sabadell in Spain" }, + { "3B7F1300008031C0521563640200647183839000", "VISA CREDIT (Bank)" }, { "3B7F1300008031C05215B8640200647183839000", "Debit classic card banorte 'banco mercantilmdel norte' (Bank)\nhttps://www.banorte.com/" }, { "3B7F1300008031C05215C7640569937083839000", "Brazil Bank Debit Cart - Visa Electron (Banco do Brasil) (Bank)" }, { "3B7F1300008031C05215CB640566966183839000", "Bank, Spanish group BANKIA (www.bankia.es)\nVisa, Servired\nManufactured by Saetic\nhttp://www.saetic.es/" }, @@ -1488,13 +1576,16 @@ const static atr_t AtrTable[] = { { "3B7F960000006A444E4965200101550421039000", "DNI electronico (Spanish electronic ID card) (eID)\nhttp://www.dnielectronico.es" }, { "3B7F960000006A444E4965200177980311039000", "Spanish ID card (DNIe) (eID)\nwww.dnielectronico.es/" }, { "3B7F960000006A464E4D54030411430430039000", "CERES Spanish SmartCard from the 'Fabrica Nacional de Moneda y Timbre' (FNMT) (eID)\nhttp://www.cert.fnmt.es/" }, + { "3B7F960000006A54494633000101550422039000", "DNIe Spain (eID)\nhttps://www.dnielectronico.es/PortalDNIe/" }, { "3B7F96000000B854311007900000000000000000", "Mastercard (Bank)" }, { "3B7F96000000B854311107900000000000000000", "STPay-Gold (JavaCard)\nhttp://www.st.com/en/secure-mcus/stpay-gold.html" }, { "3B7F9600003100DE525001001500000000000000", "VALES (Bank)" }, + { "3B7F9600008031805843657274756D3031829000", "Certum Electronic Seal (PKI)" }, { "3B7F9600008031806555850300EF124140829000", "Civil ID (eID)" }, { "3B7F96000080318065B0842327E5120FFE829000", "Gemalto IDPrime MD 3810 dual interface smartcard ISO 7816, ISO 14443 and NFC (PKI)\nhttp://www.smartcardfocus.com/shop/ilp/id~672/gemalto-idprime-md-3810-dual-interface-smartcard/p/index.shtml" }, { "3B7F96000080318065B084413DF612004C829000", "Serasa Experian (Other)" }, { "3B7F96000080318065B084413DF6120FFE829000", "Gemalto IDPrime MD" }, + { "3B7F96000080318065B084413DF612FFFE829000", "THALES IDCore 30 B (JavaCard)\nhttps://cpl.thalesgroup.com/access-management/idcore-java-card" }, { "3B7F96000080318065B084534C0F12037B829000", "Serbian International Student Identity Card (ISIC) (eID)\nhttps://www.gpa.rs/kartice" }, { "3B7F96000080318065B0846160FB120FFD829000", "IDPrime 930/3930 FIPS Level 2 or Level 3 (T=0 CT=96) (BAI1, BAI2, BAI3, BAI5, BAI7) (PKI)" }, { "3B7F96000080318065B0850201F3120FFF829000", "Swedish National Identity Card (eID)\nhttps://polisen.se/tjanster-tillstand/pass-och-nationellt-id-kort/" }, @@ -1510,18 +1601,25 @@ const static atr_t AtrTable[] = { { "3B7F96000080318065B085040120120FFF829000", "Belgian eID v1.8 (eID)\nhttps://github.com/Fedict/eid-mw" }, { "3B7F96000080318065B085040120F20001829000", "Health Insurance Institute of Slovenia - Health Insurance Card Gen. 3 (HealthCare)" }, { "3B7F96000080318065B085040120F20002829000", "Health Insurance Institute of Slovenia - Professional Card Gen. 3 (HealthCare)" }, + { "3B7F96000080318065B085050011120FFF829000", "LuxTrust card (Luxembourg qualified electronic signature / authentication system) (Other)\nhttps://www.luxtrust.com/en/professionals/smartcard" }, + { "3B7F96000080318065B0855956FB120268829000", "qualified certificate (eID)\nhttps://www.elektronicznypodpis.pl/en/offer/qualified-certificates/" }, + { "3B7F96000080318065B0855956FB1202C1829000", "Gemalto USB (eID)" }, { "3B7F96000080318065B0855956FB12FFFE829000", "IDCORE 3140 (JavaCard)" }, { "3B7F9600008031B865B0850300EF1200F6829000", "Finnish identity card (eID)\nhttp://vrk.fi/en/citizen-certificate" }, { "3B7F9600008031B865B08504021B1200F6829000", "Finnish ID-card v5.0(?) (eID)\nhttps://dvv.fi/en/fineid-specifications" }, + { "3B7F9600008031B865B085050011122460829000", "wasim finnish id (eID)" }, { "3B7F960000EA5CBDF07AEB6541894B0400000000", "Gemalto TOP IM GX4 (Other)" }, + { "3B7F960080318065B084413DF612004C829000", "Black (PKI)\nhttps://certificadodigital.imprensaoficial.com.br" }, { "3B7F9700000031C173C821106457533430009000", "PNC Bank VISA card (Bank)" }, + { "3B7F97000080318065B08466693912FFFE829000", "IDCore3230 build 6.8, test APDU applet (JavaCard)" }, { "3B7F980000805A070404000102028458F2829000", "Mobili'carte (Angouleme mobility services card) (Transport)\nhttp://www.mobilite-grandangouleme.fr/" }, { "3B800181", "NXP Semiconductors VNG OpenPGP Card (Other)\nhttps://www.vng.com.vn/" }, - { "3B80800101", "ISO 14443 Type B without historical bytes\nElectronic Passport\nSpanish passport (2012)\nCanadian Passport\nVenez_Prox" }, + { "3B801FC78031E073FE211163407163830790009A", "Intertelecom UA RUIM card (Telecommunication)\nhttps://www.intertelecom.ua/" }, + { "3B80800101", "ISO 14443 Type B without historical bytes\nElectronic Passport\nSpanish passport (2012)\nCanadian Passport\nVenez_Prox\nCarta nazionale dei servizi\nhttps://www.agid.gov.it/it/piattaforme/carta-nazionale-servizi" }, { "3B810020", "Old MobilCOM GSM (Telecom D1) (Telecommunication)" }, { "3B81010080", "Rompetrol Romania Fill&Go Fuel Card (Other)" }, { "3B811F00CC52", "eToken R2 2242" }, - { "3B8180018080", "RFID - ISO 14443 Type A - NXP DESFire or DESFire EV1 or EV2\n'Reiner LoginCard' (or 'OWOK', how they name it) - they have been distributed by a german computer magazine ('Computer BILD')\nhttps://cardlogin.reiner-sct.com/\nBelgium A-kaart (Antwerp citycard)\nOyster card - Transport for London (second-gen 'D')\nhttps://en.wikipedia.org/wiki/Oyster_card\nKaba Legic Advant 4k\nSydney Opal card public transport ticket (Transport)\nhttps://www.opal.com.au\nTH Koln (University of Applied Sciences Cologne) - Student Identity Card\nhttps://www.th-koeln.de/en/academics/multica_5893.php\nGerman red cross blood donation service\nhttp://www.blutspende-nordost.de/\nGreater Toronto/Hamilton/Ottawa PRESTO contactless fare card\nhttp://en.wikipedia.org/wiki/Presto_card\nElectic vehicle charging card of the EMSP EnBW Energie Baden-Wurttemberg AG, Tarif ADAC e-Charge, Germany" }, + { "3B8180018080", "RFID - ISO 14443 Type A - NXP DESFire or DESFire EV1 or EV2\n'Reiner LoginCard' (or 'OWOK', how they name it) - they have been distributed by a german computer magazine ('Computer BILD')\nhttps://cardlogin.reiner-sct.com/\nBelgium A-kaart (Antwerp citycard)\nOyster card - Transport for London (second-gen 'D')\nhttps://en.wikipedia.org/wiki/Oyster_card\nKaba Legic Advant 4k\nSydney Opal card public transport ticket (Transport)\nhttps://www.opal.com.au\nTH Koln (University of Applied Sciences Cologne) - Student Identity Card\nhttps://www.th-koeln.de/en/academics/multica_5893.php\nGerman red cross blood donation service\nhttp://www.blutspende-nordost.de/\nGreater Toronto/Hamilton/Ottawa PRESTO contactless fare card\nhttp://en.wikipedia.org/wiki/Presto_card\nElectric vehicle charging card of the EMSP EnBW Energie Baden-Wurttemberg AG, Tarif ADAC e-Charge, Germany" }, { "3B8180018181", "Ticket (Transport)" }, { "3B82005518", "GSM SIM of TIM ITalian mobile company" }, { "3B82005519", "GSM card 'Hi' (KPN brand)" }, @@ -1575,9 +1673,12 @@ const static atr_t AtrTable[] = { { "3B8580012063CBAD0021", "NUMBER26 MasterCard (Bank)\nhttps://number26.eu" }, { "3B8580012063CBAD2001", "KBC Ireland MasterCard Debit Card (Bank)\nhttp://www.kbc.ie/" }, { "3B8580012063CBAD80A1", "VISA Caisse d'Epargne (Bank)\nVISA BNP Paribas (NFC) (Bank)" }, - { "3B8580012063CBB7201B", "Halifax Clarity Mastercard (Bank)" }, + { "3B8580012063CBB7003B", "Visa card issued by OTP Bank (Hungary) (Bank)\nhttps://www.otpbank.hu/portal/en/Retail/Bankcards" }, + { "3B8580012063CBB7201B", "Halifax Clarity Mastercard (Bank)\nCredit Agricole Prepaid - Mastercard" }, { "3B8580012063CBB780BB", "First Direct Debit (Bank)" }, { "3B8580012063CBB880B4", "VISA Cleo LCL (Bank)\nhttps://particuliers.lcl.fr/quotidien/cartes/carte-visa-cleo/" }, + { "3B8580012063CBC6004A", "Gold Mastercard Credit Agricole (Bank)" }, + { "3B858001300101301014", "German public health insurance card (,,Gesundheitskarte'), 2.1 generation (G2.1), issuer Techniker Krankenkasse (HealthCare) (HealthCare)\nhttps://www.gematik.de/telematikinfrastruktur/egk" }, { "3B858001300101303034", "German Health Insurance Card 'elektronische Gesundheitskarte' (eGK) / European Health Insurance Card (EHIC) (HealthCare)\nhttps://fachportal.gematik.de/karten-und-identitaeten/elektronische-gesundheitskarte" }, { "3B8580014A4D52544441", "JMRTD - Java Machine Readable Travel Document (ePassport emulator\nhttp://jmrtd.org/)" }, { "3B8580014D7945494478", "MyEID" }, @@ -1588,21 +1689,27 @@ const static atr_t AtrTable[] = { { "3B858001A000000000A4", "Italian Passport (passport)" }, { "3B85C0FA216380630101051B", "Public Distribution System\nhttp://cg.nic.in/pdsonline/corepds/" }, { "3B8640206801010204AC", "Activcard Gold, SchlumbergerSema Cryptoflex 8k" }, + { "3B8640FA808101520301", "SCOSTA (JavaCard)" }, { "3B86800100049AEE00CABD", "ASK CPL 528" }, { "3B86800103020211000015", "cash bee card. transportation and payment in south korea (seoul) (Transport)\nhttp://cashbee.co.kr" }, { "3B86800106757781028000", "NXP Mifare DESFire EV1 8K / MF3ICD81\n'OpenCard' - card issued by Prague local authority\ndual card: RFID (1k Mirfare) used for parkimeters and as public traffic ticket" }, { "3B86800106757781028F00", "Desfire (eID)" }, { "3B8680013930433032317E", "Chase Freedom VISA card" }, + { "3B86800143686970313733", "PostFinance Switzerland (Bank)\nhttp://www.postfinance.ch" }, { "3B86800144492030324D65", "Lufthansa Miles & More Gold MasterCard PayPass\nRaiffeizen Bank, Russia, MasterCard paypass card" }, { "3B8680014449203032567E", "DKB VISA paywave (Bank)\nhttp://www.visaeurope.com/en/cardholders/visa_paywave.aspx" }, { "3B8680014A434F50333012", "Mifare ProX T=CL" }, { "3B8680014A434F50333113", "JCOP BIO 31 Contactless Card" }, { "3B8680014B4F4E4112203E", "Citibank Russia, Mastercard paypass" }, + { "3B8680014B4F4E4113213E", "Vivid Money Visa Debit (Bank)\nhttps://vivid.money" }, { "3B8680014B4F4E41141109", "Mastercard paypass enabled credit card" }, { "3B8680015741524930310B", "Gusto Karta (Bank)\nhttps://www.gustokarta.cz" }, { "3B86800157575061737336", "WWPass Passkey (eID)\nhttps://www.wwpass.com/passkey" }, + { "3B8680018031C15211182C", "IDEMIA Cosmo V8.0 with a PIV applet (contactless) (PKI)" }, + { "3B8680018031C152411A7E", "IDEMIA Cosmo V8.1 with a PIV applet (contactless) (PKI)" }, { "3B86800180540410010FC9", "Nickel.eu prepaid account (Bank)\nhttps://nickel.eu" }, { "3B868001C1052F2F01BC7E", "Contactless interface to St. Petersburg unified card, Russia (Edinaia karta peterburzhtsa) (Other)\nhttps://ekp.spb.ru/" }, + { "3B868001F04938DE0C3064", "blyt mtrw (Transport)\nhttps://ezpay.ir/" }, { "3B868131703445504120454B08", "Austrian Quick E-purse 'Einreichkarte' (transfer card)\nhttp://www.quick.at/" }, { "3B8780014D49464152452B39", "PEKA CARD (JavaCard)" }, { "3B8780014D525444312E3026", "Russian Foreign Passport (passport)" }, @@ -1619,21 +1726,26 @@ const static atr_t AtrTable[] = { { "3B8780017743495002000128", "CIPURSE (transport)\nhttp://www.osptalliance.org/" }, { "3B8780018031807396128040", "Public transport: VRS Verkehrsverbund Rhein-Sieg (Germany, North_Rhine-Westphalia)\nhttp://www.vrsinfo.de/englisch/the-vrs/vrs-about-us.html" }, { "3B878001803198738401E039", "Austrian Passport" }, + { "3B878001803198738601E03B", "German passport (passport)" }, { "3B8780018031B8738401E019", "Personalausweis (German Identity Card) (eID)" }, - { "3B8780018031B973842160B8", "Hungarian eID (2016) (eID)\nhttp://kekkh.gov.hu/Eszemelyi/" }, + { "3B8780018031B8738601E01B", "Personalausweis (German Identity Card) (eID)\nhttps://www.personalausweisportal.de/" }, + { "3B8780018031B973842160B8", "Hungarian eID (2016) (eID)\nhttps://eszemelyi.hu/en/" }, { "3B8780018031C073D620C032", "RFID GeldKarte (girogo)" }, { "3B8780018031C073D621C033", "Sparkasse Hannover - German contactless GeldKarte (RFID, NFC, girogo)\nhttps://www.geldkarte.de/_www/en/pub/geldkarte/service_navigation/about_us.php" }, { "3B8780018031C073D631C023", "girocard contactless (Bank)\nhttps://www.girocard.eu/english.html" }, + { "3B8780018073842140900080", "Queensland drivers licence (eID)\nhttps://www.qld.gov.au/transport/licensing/driver-licensing" }, { "3B878001C10521300077C165", "Mifare Plus (Other)\nhttp://www.Mifare.net" }, { "3B878001C1052F2F0035C730", "MiFare Plus 2K 'S' (Other)" }, { "3B878001C1052F2F01BCD6A9", "RFID - ISO 14443 Type A - NXP Mifare Plus" }, { "3B87813140434D4643203133316F", "Telekom Paycard" }, { "3B88010003050668D06080D1", "125 Khz HID Proximity card (eID)\nhttps://www.hidglobal.com/product-display/cards-and-credentials/hid-proximity" }, { "3B88014B415A544F4B454E82", "Kaztoken (eID)\nhttp://kaztoken.kz/" }, + { "3B88018056536F6C6F203272", "SoloKeys Solo 2 Security Key (PKI)\nhttps://github.com/solokeys/solo2" }, { "3B888001000000000000000009", "Personalausweis (German Identity Card) (eID)" }, { "3B8880010000000000419100D9", "EffiTIC (Transport)\nwww.effitic.com" }, { "3B888001000000000071710009", "OPUS Public Transport card (Montreal, Quebec, Canada) - Oberthur based\nhttp://carteopus.info/\nACTV (Italy) transport card (RFID)" }, { "3B8880010000000000718100F9", "Navigo Decouverte (RFID interface) (Transport)" }, + { "3B8880010000000000817000F8", "Qantas Frequent Flyer Loyalty Card - Contactless (Loyalty)" }, { "3B8880010000000000817700FF", "KBC Maestro card (Bank)" }, { "3B88800100000000008187000F", "ING Bank Card (Bank)\nhttps://www.ing.nl/particulier/betalen/passen/betaalpas/contactloos-betalen-met-uw-betaalpas/index.html" }, { "3B888001000000000081911009", "Trenitalia (Italy) fidelity card 'CartaFreccia' (RFID)" }, @@ -1656,8 +1768,10 @@ const static atr_t AtrTable[] = { { "3B888001000005E0B381A1007F", "Japanese JPKI card (aka JINC card) (eID)\nhttps://github.com/jpki/myna" }, { "3B888001000014E0B38191005E", "'JUKICARD', the Basic Resident Registration Card in Japan (eID)" }, { "3B888001000041E0B381A1003B", "ID card issued by Japan government (eID)\nhttps://www.kojinbango-card.go.jp/mynumber/index.html" }, + { "3B8880010000C9047781730041", "D-TRUST Card 4.1, qualified signature card (eID)\nhttps://www.d-trust.net" }, { "3B8880010073C8400000900062", "NXP JCOP 31 V2.2 36K - RFID I/F\nBarclaycard Visa Wave & Pay - RFID I/F\nCIBC Visa" }, { "3B8880010073C8401300900071", "Nokia 6131 NFC phone\nhttp://wiki.forum.nokia.com/index.php/Nokia_6131_NFC_-_FAQs\nGiesecke & Devrient's (G&D) Sm@rtCafe Expert 3.1\nAmex Bank of Canada American Express\nTD Canada Trust Visa\nTD Canada Trust Access Card (Visa Debit)" }, + { "3B88800100883C1F77819500C1", "Polish Passport (passport)" }, { "3B88800100DDA611F771850060", " 'Pyrelis' card, PAU (France) public transport card. (Calypso card). (Transport)\n http://www.reseau-idelis.com/930-Billettique-IDELIS.html" }, { "3B888001040200200071C140DF", "Seoul Citypass+ T-Money Card" }, { "3B8880011000000000817000E8", "Tap&Go MasterCard Sim Card (Bank)\nhttps://www.tapngo.com.hk" }, @@ -1671,7 +1785,8 @@ const static atr_t AtrTable[] = { { "3B8880011CF0E111F771850016", "CEPAS Card (Concession card issued by Land Transport Authority Singapore) (Transport)" }, { "3B88800130415654000000077D", "Avtor ID Key (eID)\nhttp://avtor.ua/" }, { "3B888001304C47127783D50001", "elesec - TCOS 3.0 Signature Card (eID)\nhttps://www.telesec.de/de/tcos/support/downloadbereich/category/28-leistungsbeschreibung" }, - { "3B88800130ABAB017781B70079", "Italian healtcare card (TS) National Service Card (CNS) (HealthCare)" }, + { "3B88800130ABAB017781B70079", "Italian healthcare card (TS) National Service Card (CNS) (HealthCare)" }, + { "3B888001310109000000000030", "Indonesian Electronic Driving License (e-SIM) (Other)\nhttps://polri.go.id/sim, https://www.digitalkorlantas.id/sim/" }, { "3B88800131CCCC017781C1000E", "Ideal v 1.4 (Transport)" }, { "3B88800131CCCC017783A1006C", "Chile RUT (eID)" }, { "3B88800131F35E110081950090", "Venez_Omnikey" }, @@ -1681,6 +1796,7 @@ const static atr_t AtrTable[] = { { "3B8880014241454944312E316C", "BiH eID card (eID)" }, { "3B88800143433169AA200000DB", "PostFinance Switzerland (Bank)\nhttp://www.postfinance.ch" }, { "3B888001434C6169726520360F", "VISA credit card with NFC payment function (Bank)\nhttp://www.visa.ca/en/personal/visa-paywave/index.jsp" }, + { "3B8880014431314352322E3070", "javacard.pro card (JavaCard)\nhttps://javacard.pro/" }, { "3B88800146494445534D4F3167", "Fidesmo card (install or uninstall JavaCard applets or Mifare-based services on the field, using the Fidesmo Android App. (JavaCard))\nhttps://developer.fidesmo.com/" }, { "3B8880014A434F50763234315E", "RFID - ISO 14443 Type A - NXP JCOP\nNXP J3A081 JavaCard (contactless interface)" }, { "3B88800150FFFF117783D50069", "Gematik TSYS eHBA G2.1 (HealthCare)" }, @@ -1694,19 +1810,23 @@ const static atr_t AtrTable[] = { { "3B888001990200D10304220167", "Debit card (Bank)" }, { "3B888001C91207520200811014", "electronic Tickes from the german Transport Association VGN (Verkehrsgemeinschaft Niederrhein)" }, { "3B888001D10386050080800058", "Resident Identity Card of People Republic of China (Second Generation with RF Feature) (eID)\nhttp://www.gov.cn/banshi/2005-08/02/content_19457.htm" }, + { "3B888001E1686C17778395009A", "Algerian ID card (eID)" }, { "3B888001E1E1F35E1377830043", "ePerso - German ID card (issued 2011) (eID)" }, + { "3B888001E1F35E113381970071", "DK passport (passport)" }, { "3B888001E1F35E117381A50003", "US passport (2007)" }, - { "3B888001E1F35E117781950037", "Belgian Passport (passport)" }, + { "3B888001E1F35E117781950037", "Belgian Passport (passport)\nFinnish Passport (passport)" }, { "3B888001E1F35E117781A10003", "Spanish ID know as DNIe (eID)\nhttp://www.dnielectronico.es" }, { "3B888001E1F35E117781A50007", "US passport (2012)" }, { "3B888001E1F35E117781C72045", "French passport (2007-2008)" }, { "3B888001E1F35E117781E10043", "DNIE Spain (eID) Contactless (eID)\nhttp://www.dnielectronico.es/PortalDNIe/" }, + { "3B888001E1F35E117781E16023", "DNIe v4 (Spanish eID) - contactless interface (PC/SC wrapped 14443 Type B ATR) (eID)\nhttps://www.dnielectronico.es" }, { "3B888001E1F35E1177830000A0", "Residence permit (eID)\nhttp://de.wikipedia.org/wiki/Aufenthaltstitel" }, { "3B888001E1F35E117783950035", "French biometric ePassport (issued in 2012)" }, { "3B888001E1F35E117783D50075", "German Passport (ePass) (issued June 2009)" }, { "3B888001E1F35E117783D70077", "Spanish Electronic Passport 2.0 (passport)\nhttps://www.dnielectronico.es/PortalDNIe/PRF1_Cons02.action?pag=REF_1080&id_menu=56" }, { "3B888001E1F35E117787950031", "Dutch Government Pilot E-rijbewijs (eID)\nhttps://www.digid.nl/over-digid/kaartlezer-pilot" }, { "3B888001E1F35E1180879500C6", "Irish Driver Learner Permit (Other)" }, + { "3B888001E1F35E11B381A500C3", "Australian Passport (passport)\nhttps://www.passports.gov.au/" }, { "3B888001E1F35E1377830000A2", "ePerso - German ID card (issued 2013)" }, { "3B888001E1F35E137783D50077", "ePerso - German ID card (issued 2011)" }, { "3B88813120550057696E4361726429", "SmartCard for Windows 1.0" }, @@ -1717,6 +1837,7 @@ const static atr_t AtrTable[] = { { "3B894014474732364D35323830", "GSM-SIM e-plus (1800MHz)" }, { "3B898001006404150102009000EE", "German Passport (issued Apr 2007)" }, { "3B898001006404280302009000D1", "TCOS 3.0 release 2 on Philips P5CD080 (PKI)\nhttps://www.digchip.com/datasheets/parts/datasheet/1019/P5CD080.php" }, + { "3B898001024D4B4D574B534B5411", "Polish National ID (eID)\nhttps://www.gov.pl/web/e-dowod/" }, { "3B8980013131313054434F535052", "Seven-Eleven Value Card / Smart Purse - Thailand (Contactless) (Other)\nhttp://www.7eleven.co.th/about7card.php" }, { "3B8980013233324353435333363E", "CSCS Smartcard (passport)\nhttp://getgosmart.io" }, { "3B89800141434F534A763130311A", "ACS ACOSJ (Combi) (JavaCard)\nhttp://www.acs.com.hk/en/products/405/acosj-java-card-combi/" }, @@ -1737,13 +1858,15 @@ const static atr_t AtrTable[] = { { "3B89800150565F4A33413034305D", "Java Card J3A040 (JavaCard)\nhttp://smartcardsource.com/contents/en-ca/d9_JCOP-NXP-cards.html" }, { "3B898001535049564B4559373044", "Taglio PIVkey C980 smart card (Other)\nhttps://pivkey.com/" }, { "3B89800153504B323544499000DA", "SPK 2.5 D1" }, + { "3B89800153776973735061737374", "SwissPass - key to mobility and leisure in Switzerland (Transport)\nhttps://www.swisspass.ch\nhttps://www.allianceswisspass.ch/de/informationen-ov-nutzende/SwissPass" }, { "3B89800166494658425332476F32", "Blockchain Security 2Go (JavaCard)\nhttps://github.com/Infineon/Blockchain" }, { "3B898001664A41434F53322E3016", "MasterCard, Credit Card by TargoBank, Germany -- (Bank)" }, - { "3B898001665257453250524F4D1C", "NFC enabled SIM card. (Telecommunication)\nElectic vehicle charging card of the EMSP Chargepoint" }, + { "3B898001665257453250524F4D1C", "NFC enabled SIM card. (Telecommunication)\nElectric vehicle charging card of the EMSP Chargepoint" }, { "3B8980016653434F4E454432307C", "Alioth 98886 chip (Bank)" }, { "3B8980018057454D5650524F438F", "BNP Paribas Visa Classic Card (NFC) (Bank)\nhttps://mabanque.bnpparibas/fr/notre-offre/comptes-cartes-et-services/cartes-et-moyens-de-paiement/decouvrir-toutes-les-cartes/carte-visa-classic" }, { "3B89800180574A4D5650726F33F0", "PayPal UK MasterCard Contacless" }, { "3B89800180574A4D5676352E30D3", "PayPal Access Business MasterCard (contactless) (Bank)\nCoinbase Card, Visa Debit (Paysafe / TCT FCU) (Bank)\nhttps://coinbase.com/card" }, + { "3B8980018064160401868290006B", "LUKB (Bank)\nhttps://www.lukb.ch" }, { "3B8980018064160402828290006C", "Maestro card (from Mastercard) used by BCGE (switzerland) bank (Bank)" }, { "3B89800180670412B0030501024C", "Austrian Passport" }, { "3B8A0091010016000116010096", "GSM-SIM T-Mobil D1 (900MHz)" }, @@ -1761,13 +1884,20 @@ const static atr_t AtrTable[] = { { "3B8A80010031C173C8400000900090", "NXP PN65o's Internal Secure Element in card emulation mode. (Other)" }, { "3B8A80010064055C02033180900016", "T-System Contactless Netkey Card" }, { "3B8A8001006405760203318090003C", "T-System Contactless TCOS Min" }, + { "3B8A80013037393134315F3030316F", "Electronic Citizen Identity Card (e-ID Card) (eID)\nhttps://www.e-ktp.com/" }, + { "3B8A800143323330302D4649505368", "Crescendo 2300 FIPS (contactless interface) (PKI)" }, { "3B8A80014A3341303831563234316B", "NXP JCOP CJ3A081 (NFC) (JavaCard)\nNXP JCOP 80K - J3A081V241" }, + { "3B8A80014A33523138302D32353506", "Cardlogix J3R180 NXP JCOP 4 Java Card 3.0.5 Classic Dual Interface (JavaCard)\nhttps://www.cardlogix.com/product/nxp-jcop-4-java-card-3-0-5-classic/" }, { "3B8A80014A434F503331563233327A", "Snapper New Zealand (JCOP)" }, { "3B8A80014A434F503431563232317F", "JCOP41 Cards (not supported, but recognized by Classic Client)\nNXP JCOP 41 v2.2.1 72k RFID I/F" }, + { "3B8A800150564A434F5033454D5676", "NXP JCOP3 J3H082 Java Card 3.0.4 Dual-Interface (JavaCard) (JavaCard)\nhttps://www.cardlogix.com/product/nxp-jcop3-j3h082-java-card-3-0-4-j3h081-dual-interface/" }, + { "3B8A800150564A434F503453494471", "J3R180 via ifdnfc (JavaCard)" }, + { "3B8A80015345204445534669726557", "NXP-Mifare DESFire EV1 2k (used as a company ID card) (eID)" }, { "3B8A8001534F535345020325010374", "Super SIM X-SIM 16-in-1 (Telecommunication)\nhttps://multi-com.eu/,details,id_pr,14881,key,super-sim-16-in-1-card,smenu,gsm.html" }, { "3B8A8001546963546F6B20332E3008", "Cryptas TicTok v3 (PKI)\nhttps://www.cryptas.com/en/products/tictok-card" }, { "3B8A80018031B8738401E082900006", "German ID Card - Personalausweis" }, { "3B8A80018031F873F741E082900075", "ePerso - German ID card" }, + { "3B8A800180641211111073C0C1801F", "Belarussian ID card (eID)" }, { "3B8A80018065A20101013D72D64397", "Gemplus GemXpresso Pro R3 E32 PK (combi)\nMultiApp ID Dual Citizen EAC 80K CC / IDClassic 3340 (old name: Classic TPC DM) (with MPCOS Applet installed by default) - Contactless Mode with Prox DU" }, { "3B8A80018065A20131013D72D641A5", "Resident Identity Card (eID)" }, { "3B8B005275746F6B656E6C745344E3", "Aktiv Rutoken Lite SD\nhttps://www.rutoken.ru/products/catalogue/info_52.html" }, @@ -1777,12 +1907,13 @@ const static atr_t AtrTable[] = { { "3B8B015275746F6B656E44534254D7", "Rutoken ECP Bluetooth (eID)\nhttp://www.rutoken.ru" }, { "3B8B015275746F6B656E6C697465C2", "Aktiv Rutoken Lite\nhttps://www.rutoken.ru/products/all/rutoken-lite/" }, { "3B8B80010012233F536549440F9000A0", "Estonian Identity Card (eID)\nhttp://id.ee/" }, + { "3B8B80010012428F536549440F900071", "Latvia eID card (eID)\nhttps://www.pmlp.gov.lv/en/identity-card-eid" }, { "3B8B80010031C0640804610000900062", "NUMBER26 Maestro Card (Bank)\nhttps://number26.eu\nAmerican Express credit card for corporations" }, { "3B8B80010031C0640844030400900044", "Credit Card Visa (Other)" }, { "3B8B80010031C0640844031200900052", "Tomorrow Debit Mastercard issued by solarisBank AG (Bank)\nhttps://www.tomorrow.one/" }, { "3B8B80010031C0640844031300900053", "Swedbank ISIC (eID)\nhttps://www.swedbank.ee/private/cards/debit/isic?language=EST" }, { "3B8B80010031C0640844036800900028", "Advanzia / Gebuhrenfrei.com Mastercard Gold (Bank)\nhttps://www.gebuhrenfrei.com/Home/" }, - { "3B8B80010031C0640844037600900036", "American Express Blue Card (Germany) (Bank)" }, + { "3B8B80010031C0640844037600900036", "American Express Blue Card (Germany) (Bank)\nMastercard issued by OTP Bank (Hungary) (Bank)\nhttps://www.otpbank.hu/portal/en/Retail/Bankcards\nCredit Agricole Bank Card - Bancomat / Maestro" }, { "3B8B80010031C06408440393009000D3", "Novacard pp0815-04/20 chip (Bank)" }, { "3B8B80010031C0641F18010000900009", "Student ID card in Poland (eID)" }, { "3B8B80010031C0641F27010000900036", "American Express Platinum (AU Issued) (Bank)" }, @@ -1792,10 +1923,15 @@ const static atr_t AtrTable[] = { { "3B8B80010031C1640840223000900054", "IDEMIA Cosmo v8.1-n (Other)" }, { "3B8B80010031C1640860320600900052", "Banco CTT (Portugal) contactless VISA Debit card (Bank) (Bank)\nhttps://www.bancoctt.pt/home/abrir-conta.html" }, { "3B8B80010031C1640860321200900046", "AMEX Silver Credit (Bank)" }, + { "3B8B80010031C1640860321F0090004B", "Hanseatic Bank Visa Card (Bank)\nhttps://www.hanseaticbank.de/kreditkarte/genialcard" }, { "3B8B80010031C1640860322000900074", "IDEMIA (Other)" }, - { "3B8B80010031C16408923354009000F3", "Italian healtcare card (TS) National Service Card (CNS) (HealthCare)\nhttp://www.salute.gov.it/portale/lea/dettaglioContenutiLea.jsp?lingua=italiano&id=4693&area=Lea&menu=leaEssn" }, + { "3B8B80010031C1640860324200900016", "Westpac Handybank EFTPOS/ATM Card - Contactless (Bank)" }, + { "3B8B80010031C16408923354009000F3", "Italian healthcare card (TS) National Service Card (CNS) (HealthCare)\nhttp://www.salute.gov.it/portale/lea/dettaglioContenutiLea.jsp?lingua=italiano&id=4693&area=Lea&menu=leaEssn" }, + { "3B8B80010031C16408986200009000FC", "ERSTE Bank creditcard (mastercard) (Bank)" }, { "3B8B80010031C1640911213000900007", "SmartMX (Other)" }, + { "3B8B80010031C1640924331E0090000E", "Cumulus Mastercard (Bank)\nhttps://www.migros.ch/cumulus/mastercard" }, { "3B8B80010031C1640937721300900051", "French ID Card 2021 (contactless interface) (eID)\nhttps://ants.gouv.fr/Les-titres/Carte-nationale-d-identite/La-puce-de-la-nouvelle-carte-nationale-d-identite" }, + { "3B8B80010031C1640964413600900014", "Monzo (Bank)\nhttps://monzo.com/" }, { "3B8B800100640411010131800090005A", "German Passport (issued Nov 2006)\nUnited Kingdom e-Passport\nLuxembourg passport (2007)" }, { "3B8B80010B7880820244492030324D1B", "Mastercard Debit issued by Raiffeisen bank in Czech Republic" }, { "3B8B80012085008B030FE09AA0E04052", "Shanghai Public Transportation Card (Transport)\nhttp://www.sptcc.com/" }, @@ -1809,21 +1945,29 @@ const static atr_t AtrTable[] = { { "3B8B8001654B5450304432654B54504C", "NXP smart eID - Indonesia ektp (eID)" }, { "3B8B80018031C06305107F8300900061", "UAB Bank - Prepaid VISA Card (Bank)\nhttps://www.uab.com.mm/cards/" }, { "3B8B80018066475000B8007F8290002E", "Italian Card Identity (eID)\nhttps://www.cartaidentita.interno.gov.it/" }, + { "3B8B80018066475000B80094829000C5", "Italian Electronic Contactless Identity Card v. 3.0 (CIE 3.0) (eID)\nhttps://www.cartaidentita.interno.gov.it/" }, { "3B8B800180F9A00000030800001000C8", "Probably the same as 'JCOP3 SecID P60 CS (JavaCard)' but mated with a contactless Identiv reader (JavaCard)" }, { "3B8B80018688FF6F391E743C200800D3", "Chinese ICBC (bank)" }, { "3B8B81314034534D41525453434F5045316D", "Zeeland kaart (Telecommunication)" }, { "3B8C014D79536D6172744C6F676F6EA5", "EIDVirtual (USB key emulated as a virtual smart card) (PKI)\nhttp://www.mysmartlogon.com/eidvirtual/" }, + { "3B8C01805A4E6974726F6B657920337D", "'Nitrokey 3C NFC' USB authentication and security token (Other)\nhttps://shop.nitrokey.com/shop/product/nk3cn-nitrokey-3c-nfc-148" }, { "3B8C40FA808105520101A00000015001", "Algerian Postal Services Current Account Card (Bank)" }, { "3B8C80010443FD....................", "RFID - NFC Forum tag type 3 (FeliCa)" }, + { "3B8C80010C75778002C1052F2F0035C7B7", "Mifare Plus S (Other)\nhttps://www.nxp.com/products/no-longer-manufactured/mifare-plus-s-2k-4k:MIFARE_PLUS_S_2K_4K" }, { "3B8C80014F5449442894B3C00100900045", "Belgian passport (2009-2013)" }, { "3B8C80014F5449442894F7C00000900000", "French passport (2010-2013)" }, { "3B8C800150........E1F35E117781E1..", "Spanish eID, Documento Nacional de Identidad (DNIe) (eID)\nhttp://www.dnielectronico.es/" }, + { "3B8C800150000000000000000080814519", "a12 (Telecommunication)" }, { "3B8C80015000000000000000009181A0ED", "Belimo VAV-Compact NFC (Other)\nhttp://www.belimo.ch/pdf/e/flyer_nfc_en.pdf" }, { "3B8C8001500005022D0206000000819163", "Local Transport card for Trentino region (Italy) trentino trasporti esercizio (Transport)\nhttp://www.ttesercizio.it/" }, + { "3B8C80015000CA464D00000000808171EC", "Visa Classic (Bank)" }, + { "3B8C8001500197E9BE00000000808171EC", "VISA card from bank LA BANQUE POSTALE (Bank)" }, { "3B8C80015001A5CE19000000008081715E", "VISA Card from Bank BANQUE POPULAIRE (Bank)" }, { "3B8C80015001BA137E00000000B3717138", "Mobib (Brussels public transportation card)" }, + { "3B8C80015001C62E3900000000808171FD", "edenred (Loyalty)" }, { "3B8C80015003A129CF0000000011818108", "rav-kav, Israel transport card (Transport)\nhttp://www.egged.co.il/Article-786-Rav-Kav-Card.aspx" }, { "3B8C80015004463EC3E1F35E117781A1E8", "Spanish ID (eID)" }, + { "3B8C8001500509CE35000000003371A149", "Libertan transport card from Nantes (France), based on Calypso (Transport)\nhttps://www.tan.fr/fr/abonnements-libertan-1" }, { "3B8C80015005A966960000000080817171", "Hello bank! VISA CLASSIC Card (Bank)\nhttp://www.hellobank.fr/" }, { "3B8C80015006DCA8590000000080817106", "VISA Hello bank! (NFC) (Bank)\nhttps://www.hellobank.fr/" }, { "3B8C800150107331B400000000B3717108", "MiMuovo public transport card used in Italian region Emilia Romagna (Transport)" }, @@ -1831,6 +1975,7 @@ const static atr_t AtrTable[] = { { "3B8C80015010B9F98900000000B3717137", "Toulouse (France) city public transport card called TISSEO Pastel (Transport)\nhttps://www.tisseo.fr/les-tarifs/obtenir-une-carte-pastel" }, { "3B8C80015010D632A000000000B37171BA", "MOBIB (STIB) (Transport)\nhttps://www.stib-mivb.be/article.html?_guid=30af0085-2483-3410-5394-a71daf08acd1&l=en" }, { "3B8C800150186188CEE1F35E117781C70E", "French passport (2007-2008)" }, + { "3B8C800150191B6CC20000000000817707", "Rabobank bankcard (dutch) (Bank)\nhttps://www.rabobank.nl/particulieren/betalen/betaalpas" }, { "3B8C80015019E3BB3D00000000008177D7", "ING/Maestro bank card (Bank)\nhttps://www.ing.nl/particulier/betalen/passen/index.html" }, { "3B8C80015024AD64E10000000033819172", "Italian healthcare + public administration card (HealthCare)\nhttp://sistemats1.sanita.finanze.it/wps/portal" }, { "3B8C800150260DBB150000000000718128", "Navigo Card (Transport)\nhttp://www.navigo.fr/" }, @@ -1839,13 +1984,17 @@ const static atr_t AtrTable[] = { { "3B8C8001502724266400000000007181EC", "French Transport Card (Navigo Card) (Transport)\nhttps://fr.wikipedia.org/wiki/Passe_Navigo" }, { "3B8C8001502747D205000000000071811A", "Pass Navigo Decouverte (Transport)\nhttps://fr.wikipedia.org/wiki/Passe_Navigo" }, { "3B8C800150275038CE000000000071812C", "Paris transportation card (Pass Navigo) (Transport)\nhttps://fr.wikipedia.org/wiki/Passe_Navigo" }, + { "3B8C8001502752318100000000007181", "Calypso (Transport)\nhttps://www.innovatron.fr/CalypsoFuncSpecification.pdf" }, { "3B8C80015027B1F76B0000000000717157", "Navigo (public transportation in Ile-de-France), IDF Mobilites (Transport)\nhttps://www.iledefrance-mobilites.fr/l-innovation/navigo/" }, { "3B8C8001502C8D214B23180100778197CD", "Indonesian Driver License" }, + { "3B8C8001502FE0AFA1000000000081776A", "Rabo Wereldpas (Maestro) (Bank)\nhttps://www.rabobank.nl/" }, { "3B8C80015035A45B650000000080817182", "Trenitalia cartafreccia (Transport)\nhttp://www.trenitalia.com/tcom/Cartafreccia" }, { "3B8C800150370B16BD310106017781777C", "Driver License of Indonesia - SIM (Surat Izin Mengemudi) (Transport)" }, { "3B8C800150380EB25B00000000B3717131", "BIP (Biglietto Integrato Piemonte) Card, GTT (Gruppo Trasporti Torinese) (Transport)\nhttp://bip.piemonte.it/" }, { "3B8C8001503A88EC29E1F35E117781E160", "DNI electronico (Spanish electronic ID card) (eID)\nhttp://www.dnielectronico.es" }, { "3B8C8001503A964B0000000000008180BB", "Ventra Transit Pass (Transport)\nhttps://www.ventrachicago.com/how-to/ventra-cards/" }, + { "3B8C8001503BF0330B30ABAB017781B7DE", "Italian health card - national service card (HealthCare)\nhttps://sistemats1.sanita.finanze.it/portale/tessera-sanitaria" }, + { "3B8C800150438EAE7B30ABAB017781B735", "Italian healthcare card (TS) National Service Card (CNS) (HealthCare) - Regione Liguria (HealthCare)" }, { "3B8C80015043E0F5F43101060077817748", "Indonesian Driver License" }, { "3B8C8001504553FFC6E1F35E117781A178", "Electronic DNI (eID)" }, { "3B8C80015046E570EC2318010077819739", "Indonesian Driver License" }, @@ -1853,6 +2002,7 @@ const static atr_t AtrTable[] = { { "3B8C8001504B75AF41E1F35E117781A583", "USA PASSPORT BOOK ICAO (passport)\nhttps://www.icao.int/publications/pages/publication.aspx?docnum=9303" }, { "3B8C8001505381573630AAAA017781D7FE", "Indonesian ektp (eID)" }, { "3B8C8001505467137900000000F781C1B3", "Tessera Sanitaria italian health care card (HealthCare)" }, + { "3B8C8001505C4B71A152745343778183D9", "RUTOKEN ECP 3.0 (PKI)\nhttps://www.rutoken.ru/products/catalogue/id_114.html" }, { "3B8C8001505CF5A94530AAAA017781D708", "Indonesia ektp (eID)" }, { "3B8C800150605F2EFA00000000778191D1", "Residence Permit (Switzerland) (eID)" }, { "3B8C80015064E65B000000000000818085", "Chicago CTA Ventra Transit card\nhttps://www.ventrachicago.com/" }, @@ -1863,9 +2013,12 @@ const static atr_t AtrTable[] = { { "3B8C8001507919600100DDA611F7718535", "Transport Traway Montpellier France (Transport)" }, { "3B8C8001507AA44007231801007781979F", "Indonesian Driver License" }, { "3B8C8001507E0071D20000000000717180", "Unica (= Just one) joined train and public transport card for Italian region Emilia Romagna (evolution of MiMuovo) (Transport)" }, + { "3B8C8001507E0A66C2000000000071718D", "'UNICA' card for the subscription to trains and buses of the Trenitalia TPER company (Transport)\nhttps://www.trenitalia.com/it/treni_regionali/smart-card-unica.html" }, + { "3B8C8001507EDE1E0600883C1F7781952D", "Bahrain CPR (eID)" }, { "3B8C8001507F9C668A0000000000818754", "NFC Mastercard issued by CSOB bank Czech Republic, first 4 digits 5168" }, { "3B8C80015089DCA96E00000000808171BF", "Cartafreccia VISA (Italian Railways Prepaid + Loyalty Card) (Bank)" }, { "3B8C800150915D7129E1F35E117781A1C3", "Spanish eID, Documento Nacional de Identidad (DNIe) (eID)\nhttp://www.dnielectronico.es/" }, + { "3B8C80015092BF3BC0000000000071718B", "Venice Public Transport Card (Transport)\nhttps://www.veneziaunica.it/" }, { "3B8C80015093195E3000000000007171B9", "OPUS STM CANADA (Transport)\nhttp://stm.info/" }, { "3B8C800150933CCC05000000000071713B", "OPUS Card, public transport (subway) of Montreal (Transport)\nhttp://www.stm.info/fr/infos/titres-et-tarifs/carte-opus-et-autres-supports/carte-opus" }, { "3B8C800150A221FAA031CCCC017781C183", "Morpho (eID)\nhttp://www.morpho.com/" }, @@ -1878,6 +2031,7 @@ const static atr_t AtrTable[] = { { "3B8C800150C0E450CA0000000091717172", "Transportation card for Lille (France) (Transport)" }, { "3B8C800150C0EA9CBB00000000B37171E3", "Tisseo (Toulouse) (Transport)\nhttp://www.tisseo.fr/les-tarifs/obtenir-une-carte-pastel" }, { "3B8C800150C0F1DE700000000091717153", "isodep, NfcB (Transport)" }, + { "3B8C800150C10D7D5E00000000B3717101", "Pastel transport card from Toulouse (France), based on Calypso (Transport)\nhttps://www.tisseo.fr/les-tarifs/ou-acheter/la-carte-pastel" }, { "3B8C800150C110BBA9000000009171710F", "Divia card (passport)" }, { "3B8C800150C11BA3F10000000091717144", "Tramway (PKI)" }, { "3B8C800150C14164E3000000000071715A", "Navigo Annuel (France) (Transport)\nhttps://www.iledefrance-mobilites.fr/titres-et-tarifs/detail/forfait-navigo-annuel" }, @@ -1886,6 +2040,9 @@ const static atr_t AtrTable[] = { { "3B8C800150C17B55BA0000000000717108", "Navigo Easy (Paris public transportation) (Transport)\nhttps://parisbytrain.com/navigo-easy/" }, { "3B8C800150C17DA8CA0000000000717183", "Navigo Easy (France) transport card (Transport)\nhttps://www.ratp.fr/titres-et-tarifs/passe-navigo-easy" }, { "3B8C800150C2B936860000000000717196", "Passe Navigo (Transport)\nhttps://www.iledefrance-mobilites.fr/titres-et-tarifs/supports/passe-navigo-decouverte" }, + { "3B8C800150C326AF0C000000000071711B", "Navigo Mobility Paris transport's Card (Transport)\nhttps://www.iledefrance-mobilites.fr/titres-et-tarifs/liste?d=forfaits" }, + { "3B8C800150C41466C30000000000717128", "Navigo easy (Transport)\nhttps://www.iledefrance-mobilites.fr/titres-et-tarifs/supports/passe-navigo-easy" }, + { "3B8C800150C51770F0000000008081717F", "SumUp Limited Apple Pay Virtual Card (Bank)\nhttps://sumup.co.uk" }, { "3B8C800150C7251C5A00000011F781811F", "MOBIB Belgian public transport Card (Transport)\nhttps://mobib.be/fr.html" }, { "3B8C800150CA24513E00000011F781813A", "belgian mobib transportation card (Transport)" }, { "3B8C800150CBFB077E000000008081E1F4", "Samsung Digital Center in Seul Access ID card for guests (eID)" }, @@ -1915,6 +2072,10 @@ const static atr_t AtrTable[] = { { "3B8C80019067464A0100360600000000C7", "A40CR (eID)" }, { "3B8D0180FBA000000397425446590401", "Microsoft Virtual Smart Card 0 (PKI)" }, { "3B8D0180FBA000000397425446590401CF", "Microsoft Virtual Smartcard Provider shared through VMWare Workstation. (Other)\nhttps://technet.microsoft.com/en-us/library/dn593708%28v=ws.11%29.aspx" }, + { "3B8D80010004D0842186640000000000009F", "ABC UnionPay card with QuickPass contactless interface (Bank)" }, + { "3B8D8001003180718E6452D90400829000BB", "AwesomeCard (Bank)" }, + { "3B8D80010031C173C8400052A51000900070", "NXP P71 SmartMX3 (JavaCard)\nhttps://www.nxp.com/products/security-and-authentication/security-controllers/smartmx3-p71d321-secure-and-flexible-microcontroller:SMARTMX3-P71D321" }, + { "3B8D80010031C173C8400052A5100090FF8F", "NXP Smart MX3 P71D321 (JavaCard)" }, { "3B8D80010073C80013644737423700900055", "TD Canada Trust Visa" }, { "3B8D80010073C8001364543741380090004A", "Visa Debit (ING-DiBa) (Bank)\nhttps://www.ing-diba.de/\nVisa Debit Card with NFC payment function (Consorsbank)\nhttps://www.consorsbank.de/" }, { "3B8D80010073C80013645437423700900046", "pay (Bank)" }, @@ -1940,6 +2101,7 @@ const static atr_t AtrTable[] = { { "3B8E8001005131631F5901739F20C0C0900017", "Identity card (eID) Republic of Latvia (eID)\nhttp://www.pmlp.gov.lv/en/home/services/personal-certificates-%28eid%29/\nFrench driving license (eID) (contactless)" }, { "3B8E80010E7833C4020064041501020090FF95", "Spanish Passport" }, { "3B8E8001103877A78091E165D0004200008272", "Czech Republic e-Passport (issued Feb 2009)" }, + { "3B8E8001107833D4020064041101013180FFBD", "Second generation German passport (passport)\nhttps://www.cs.bham.ac.uk/~tpc/Papers/PassportTrace.pdf" }, { "3B8E80011178B3C0024F5449442894B3FFFF0E", "Civilian passport NFC tag (passport)" }, { "3B8E8001137880720280318066B1840C01FF04", "Optelio Contactless Gemalto (Bank)" }, { "3B8E8001137880800246494F4D4B5F3030314E", "MasterCard/PayPass Card issued by Czech FIO Banka a.s. (contactless chip)\nnote the ASCII string 'FIOK_001N' embedded in ATR" }, @@ -1953,7 +2115,9 @@ const static atr_t AtrTable[] = { { "3B8E800180318066B08412016E018300900003", "Contactless Barclaycard Visa\nMyCiti Transport Card MasterCard PayPass (Cape Town, South Africa)" }, { "3B8E800180318066B08416016E018300900007", "Barclaycard Platinum VISA (Bank)" }, { "3B8E800180318066B1840C016E0183009000..", "Gemalto Santander Optelio TUI R7 using Contactless interface" }, - { "3B8E800180318066B1840C016E01830090001C", "UK Lloyds Bank Gold Visa Debit (Contact & Contactless)\nbPay by barclaycard - contactless pre-paid Visa\nBPP Digital pre-paid VISA card (Bank)\nhttps://bpp.com.br/" }, + { "3B8E800180318066B1840C016E01830090001C", "UK Lloyds Bank Gold Visa Debit (Contact & Contactless)\nbPay by barclaycard - contactless pre-paid Visa\nBPP Digital pre-paid VISA card (Bank)\nhttps://bpp.com.br/\nMastercard credit card for Standard Chartered Bank, Pakistan also Mastercard debit card for JS Bank, Pakistan (Bank)" }, + { "3B8E800180318066B1840C016E01830090001C021450", "all transport travel pass (Transport)\nhttp://www.metro.spb.ru/cnblt41.html" }, + { "3B8E800180318066B1C5240100ED83009000F7", "Mastercard (Bank)" }, { "3B8E80018031815448534D3173802140810718", "Smartcard-HSM (Contactless Interface) (PKI)\nhttp://www.cardcontact.de/products/sc-hsm.html" }, { "3B8E80018031815448534D3173802140FFFF9E", "SmartCard-HSM RFID (PKI)\nhttps://www.smartcard-hsm.com/" }, { "3B8E800180919131C06477E30300838290001C", "Belgian Passport (2005)\nThai Passport 2005" }, @@ -1963,19 +2127,34 @@ const static atr_t AtrTable[] = { { "3B8F01415642000000000000000001000000DA", "AVEST-SYSTEMS AvBign (PKI)" }, { "3B8F0145464B000000000000000004000000C2", "EfitKey (PKI)" }, { "3B8F018025A00000005657444B3430300600B7", "SafeNet IKey4000" }, + { "3B8F01805D4E6974726F6B657900000000006A", "Nitrokey Nitrokey 3 Mini (eID)\nhttps://shop.nitrokey.com/shop/product/nk3am-nitrokey-3a-mini-149" }, { "3B8F80010000000000000000000000000000000E", "Tangem card (Other)\nhttps://tangem.com/" }, { "3B8F80010000000000000000000000FF829000E3", "CIE (eID)" }, { "3B8F80010031B86404B0ECC1739401808290000E", "Contactless CPS v3 Card (Carte de Professionnel de Sante)" }, + { "3B8F80010031B86404B0ECC173940180FFFFFFE3", "Card used in public French hospital (Other)" }, + { "3B8F80010031B96409377213738401E0000000AB", "National Identity Card of Slovakia (NFC interface) (eID)\nhttps://en.wikipedia.org/wiki/Slovak_identity_card" }, { "3B8F80010031C173C800106457494943009000B5", "ICC Solutions Card for Certification (Other)\nhttps://www.iccsolutions.com/" }, + { "3B8F80010031C173C8211064414D31300790008A", "master card (Bank)" }, + { "3B8F80010031C173C8211064414D31370790008D", "AirPlus International Mastercard (Bank)\nhttps://www.airplus.com/" }, { "3B8F80010031C173C8211064414D333007900088", "ING-VISA-Card (Bank)\nhttps://www.ing.de/girokonto/karten-bargeld/" }, + { "3B8F80010031C173C8211064414D333107900089", "NAB VISA Debit (Bank)\nhttps://www.nab.com.au/" }, + { "3B8F80010031C173C8211064414D3341079000F9", "Ukrainian International resere bank (ex Sberbak RF) debit card (Bank)\nhttps://www.sbrf.com.ua/" }, + { "3B8F80010031C173C8211064474D34350090008B", "S-Etukortti Visa (Bank)\nhttps://www.s-pankki.fi/fi/s-etukortti-visa" }, { "3B8F80010031C173C8211064474D343700900089", "SpareBank Visa Card, Norway (Bank)" }, + { "3B8F80010031C173C8211064574B31330090009E", "TIM Pay - HYPE (Mastercard debit card) (Bank)\nhttps://www.tim.it/fisso-e-mobile/mobile/servizi/tim-pay" }, { "3B8F80010031C173C8211064574B313400900099", "G&D Sm@rtCafe Card embedded in a wristband (Bank)\nhttps://www.gi-de.com/en/au/mobile-security/industries/financial-institutions/wearables/" }, { "3B8F800100664653051000FF71DF000000000039", "JavaCOS A40 dual interface Java card - 64K (JavaCard)" }, { "3B8F800100B85421000090000000000000000053", "netbank Germany, Mastercard (Bank)\nhttps://netbank.de" }, { "3B8F800100B85431000090000000000000000043", "Monzo MasterCard Contactless (Bank)\nhttps://monzo.com/" }, { "3B8F800100B854310000900000000000FFFFFFBC", "VISA Debit issued by WIREX. card made by CONTIS / TAG SYSTEMS (Bank)\nhttps://wirexapp.com/" }, + { "3B8F80013101F1564011001900000000000000D1", "Revolut Mastercard (Bank)" }, + { "3B8F80013101F1564011001900000000FFFFFF2E", "BVG Guthabenkarte (Prepaid Payment Card for Berlin/Brandenburg Public Transport) (Transport)\nhttps://www.bvg.de/de/service-und-kontakt/guthabenkarte" }, { "3B8F800141434F53204449616E6131204C63365B", "DKB-VISA-Card (Bank)\nhttps://produkte.dkb.de/?&page=girokonto#kreditkarte" }, { "3B8F800141434F53204449616E613120FFFFFFBD", "DKB Visa Credit Card (Bank)\nhttps://www.dkb.de" }, + { "3B8F800141434F53204449616E6132204C633658", "comdirect Visa debit (Bank)\nhttps://www.comdirect.de" }, + { "3B8F800141434F53204449616E613220FFFFFFBE", "comdirect, VISA Debit (Bank)\nhttps://www.comdirect.de/konto/karten.html#bankkarte" }, + { "3B8F800141434F532046696F6E6131204C633677", "DKB Visa (Debit) (Bank)\nhttps://www.dkb.de/" }, + { "3B8F800143433169A920000020202020202020FF", "Reka (Bank)\nhttps://reka.ch" }, { "3B8F800143443269AB41202020202020FFFFFF47", "BKB VISA Card Switzerland (Bank)\nhttps://www.bkb.ch/de/privatkunden/konten-und-karten/kreditkarten/world-mastercard-silber-oder-visa-classic/factsheet" }, { "3B8F800143553269AA20202020202020202020E9", "UBS Access Card (Mobile Online Banking, NFC, Switzerland)" }, { "3B8F800145504100000000........00........", "Austrian Quick E-purse contactless\nhttp://www.quick.at/" }, @@ -1984,6 +2163,8 @@ const static atr_t AtrTable[] = { { "3B8F800152464944494F74204A434F5020373276", "RFIDIOt JCOP 72K Blank\nhttp://rfidiot.org" }, { "3B8F800152464944494F74204A434F5037327224", "RFIDIOt JCOP 72K RANDOM_UID Blank\nhttp://rfidiot.org" }, { "3B8F800156696E5061795379732050757273652F", "JCOP (Other)" }, + { "3B8F80018031806549544A3442120FFF829000", "Italian Identity Card CIE (eID) (eID)\nhttps://www.cartaidentita.interno.gov.it/en/home/" }, + { "3B8F80018031806549544A3442120FFF8290008B", "Identity Card (eID)" }, { "3B8F800180318065B0........120FFE829000..", "IDPrime MD 3810 T=Contactless (Prox DU)" }, { "3B8F800180318065B0842327E5120FFE8290007E", "Gemalto IDPrime MD 3810 Blank Card (Other)\nhttp://www.gemalto.com/products/IDPrime_MD/index.html" }, { "3B8F800180318065B0846160FB120FFD82900066", "IDPrime 3930 FIPS Level 2 (Contactless TypeA) (BAI5, BAI7) (PKI)" }, @@ -1991,8 +2172,13 @@ const static atr_t AtrTable[] = { { "3B8F800180318065B0850300EF120FFF82900073", "Grand Duchy of Luxembourg / Identity card with LuxTrust certificate (eID)\nhttp://www.guichet.public.lu/citoyens/fr/citoyennete/papiers-identite/carte-identite/nouv-carte-identite-adulte-EN/index.html" }, { "3B8F800180318065B085040011120FFF8290008A", "Dutch driver licence (eID)\nItalian electronic identity card (eID)\nhttps://en.wikipedia.org/wiki/Italian_electronic_identity_card" }, { "3B8F80018031B865B0850300EF1200F68290004D", "Finnish electronic identity card (eID)\nhttps://vrk.fi/en/electronic-identity-and-certificates" }, + { "3B8F80018031B865B08504021B1200F6829000BC", "Finnish identity card (eID)" }, + { "3B8F80018031D865B08505001112752082900076", "Swedish national ID card (eID)\nhttps://polisen.se/en/services-and-permits/passport-and-national-id-card/check-validity-online-for-passports-and-national-id-cards/" }, { "3B8F80018031E06B042105027255555555555564", "Banamex/Citi Bank Bsmart MasterCard Paypass (Bank)\nhttps://www.banamex.com/es/personas/tarjetas_credito/ver_tarjetas/puntos_efectivo/bsmart.htm" }, { "3B8F80018031E06B04310502D1555555........", "Revolut Prepaid Mastercard (Contactless) (Bank)\nhttps://revolut.com/" }, + { "3B8F80018031E06B04520502FD555555FFFFFF32", "C6 Bank Card (Bank)" }, + { "3B8F80018031E06B0453F5025B555555555555CF", "Mastercard debit card for Askari Bank, Pakistan (Bank)" }, + { "3B8F80018031E06B04546B026D55555555555560", "Mastercard Credit/Debit Card - Contactless (Bank)" }, { "3B8F80018031E06B061605028C555555555555AF", "Air Miles American Express card (contactless) (Bank)" }, { "3B8F8001804F0CA000000306..000000000000..", "Card name not given (as per PCSC std part3)" }, { "3B8F8001804F0CA000000306..000100000000..", "MIFARE Classic 1K (as per PCSC std part3)" }, @@ -2060,10 +2246,10 @@ const static atr_t AtrTable[] = { { "3B8F8001804F0CA00000030601....00000000..", "RFID - ISO 14443 Type A Part 1 (as per PCSC std part3)" }, { "3B8F8001804F0CA00000030602....00000000..", "RFID - ISO 14443 Type A Part 2 (as per PCSC std part3)" }, { "3B8F8001804F0CA00000030603....00000000..", "RFID - ISO 14443 Type A Part 3 (as per PCSC std part3)" }, - { "3B8F8001804F0CA000000306030000000000006B", "buss/train pass for use with Skanetrafiken (www.skanetrafiken.se) busses and trains.\npublic library of Dusseldorf\nhttp://www.duesseldorf.de/stadtbuechereien/\nspecialized Mifare Ultralight card" }, - { "3B8F8001804F0CA000000306030001000000006A", "NXP/Philips MIFARE Classic 1K (as per PCSC std part3)\nhttp://www.nxp.com/#/pip/pip=[pfp=41863]|pp=[t=pfp,i=41863]\nOyster card - Transport for London (first-gen)\nhttps://en.wikipedia.org/wiki/Oyster_card\nACOS5/1k Mirfare\nvivotech ViVOcard Contactless Test Card\nBangkok BTS Sky SmartPass\nMifare Classic 1K (block 0 re-writeable)\nElectic vehicle charging card of the German Telekom, acting as EMSP GetCharge\nElectic vehicle charging card of the EMSP Stadtwerke Muenchen (SWM), ladenetz.de, Germany\nElectic vehicle charging card of the EMSP EinfachStromLaden of Maingau-Energie, Germany\nScouter carsharing customer card in Germany\nhttps://scouter.de/" }, - { "3B8F8001804F0CA0000003060300020000000069", "RFID - ISO 14443 Type A - NXP Mifare card with 4k EEPROM" }, - { "3B8F8001804F0CA0000003060300030000000068", "RFID - ISO 14443 Type A - NXP Mifare Ultralight or UltralightC" }, + { "3B8F8001804F0CA000000306030000000000006B", "bus/train pass for use with Skanetrafiken (www.skanetrafiken.se) buses and trains.\npublic library of Dusseldorf\nhttp://www.duesseldorf.de/stadtbuechereien/\nspecialized Mifare Ultralight card" }, + { "3B8F8001804F0CA000000306030001000000006A", "NXP/Philips MIFARE Classic 1K (as per PCSC std part3)\nhttp://www.nxp.com/#/pip/pip=[pfp=41863]|pp=[t=pfp,i=41863]\nOyster card - Transport for London (first-gen)\nhttps://en.wikipedia.org/wiki/Oyster_card\nACOS5/1k Mirfare\nvivotech ViVOcard Contactless Test Card\nBangkok BTS Sky SmartPass\nMifare Classic 1K (block 0 re-writeable)\nElectric vehicle charging card of the German Telekom, acting as EMSP GetCharge\nElectric vehicle charging card of the EMSP Stadtwerke Muenchen (SWM), ladenetz.de, Germany\nElectric vehicle charging card of the EMSP EinfachStromLaden of Maingau-Energie, Germany\nScouter carsharing customer card in Germany\nhttps://scouter.de/\nDKV Euro Service +charge (Transport)\nhttps://www.dkv-mobility.com/en/fuelling/fuel-card/dkv-card-charge/\nAndante (Transport)\nKazakhstan 'Onay' transport card (Transport)\nhttps://onay.kz" }, + { "3B8F8001804F0CA0000003060300020000000069", "RFID - ISO 14443 Type A - NXP Mifare card with 4k EEPROM\nOV Chipkaart\nhttps://www.ov-chipkaart.nl/home.htm" }, + { "3B8F8001804F0CA0000003060300030000000068", "RFID - ISO 14443 Type A - NXP Mifare Ultralight or UltralightC\nTempmate S1 Data Logger (Other)\nhttps://www.tempmate.com/\nprepaid bus card (Transport)\nhttps://www.t-l.ch/abos-billets/billets/carte-prepayee\nGamestate rechargable play card (Other)\nhttps://shop.gamestate.com/" }, { "3B8F8001804F0CA0000003060300FF0000000094", "ACTV (Italy) prepaid transport ticket\n'NFC Tag' -- Sony's 'Smart Tags'" }, { "3B8F8001804F0CA00000030603F004000000009F", "NFC FORUM TYPE 1 TAG\nwww.inovision-group.com/topaz\nISO/IEC 14443A - 96 Bytes read/write NFC/RFID IC mandated by NFC Forum as the Type 1 NFC Forum Tag Format." }, { "3B8F8001804F0CA00000030603F011000000008A", "Bangkok Metro (MRT)\nHTC One X Android phone (European edition 'endaevoru')" }, @@ -2074,8 +2260,10 @@ const static atr_t AtrTable[] = { { "3B8F8001804F0CA00000030607....00000000..", "RFID - ISO 14443 Type B Part 3 (as per PCSC std part3)" }, { "3B8F8001804F0CA000000306070000000000006F", "Atmel AT88RF04C CryptoRF" }, { "3B8F8001804F0CA000000306074344600201E4EF", "'Andante' Card, Porto (Portugal) metro card. (ISO14443 B CTS/CTM512B) (Transport)\nhttp://www.transportespublicos.pt/en/glossary/andante-ticket-system/" }, + { "3B8F8001804F0CA00000030607FFB00000000020", "Chinese ID Card (eID)\nhttps://en.wikipedia.org/wiki/Resident_Identity_Card" }, { "3B8F8001804F0CA00000030609....00000000..", "RFID - ISO 15693 Part 1 (as per PCSC std part3)" }, { "3B8F8001804F0CA0000003060A....00000000..", "RFID - ISO 15693 Part 2 (as per PCSC std part3)" }, + { "3B8F8001804F0CA0000003060A0018000000007A", "HID ICLASS DL (eID)" }, { "3B8F8001804F0CA0000003060A001C000000007E", "RFID - HID iCLASS 16K CL" }, { "3B8F8001804F0CA0000003060B....00000000..", "RFID - ISO 15693 Part 3 (as per PCSC std part3)" }, { "3B8F8001804F0CA0000003060B00000000000063", "RFID - ISO 15693 - EM Microelectronic-Marin SA" }, @@ -2098,6 +2286,7 @@ const static atr_t AtrTable[] = { { "3B8F8001805A08030400020024E279788290000C", "Paris Navigo card 14443 B' (Innovatron - Calypso)" }, { "3B8F80018066B007010107............9000..", "Gemalto Santander Optelio TUI R7 with WG10 customized using Contactless interface" }, { "3B8F80018073CC91CBF9A0000003080000100029", "NIST demo PIV card (eID)" }, + { "3B8F8001809100318065B08405002583019000CD", "Contactless IDCore3230 build 6.8, test APDU applet (JavaCard)" }, { "3B8F80018091E1318065B0831100AC83009000B7", "TOP DM GX4 Cards [TOP DM GX4 - contact interface]\nGemCombiXpresso R4 72K (contactless interface)" }, { "3B8F80018091E1318065B0831111AC83009000A6", "TOP DM GX4 Cards [TOP DM GX4 on Omnikey]\nGEMALTO WM GX4 72 DHS TSA (contactless interface)" }, { "3B8F80018091E1318065B0831111E583009000EF", "TOP DL V2 Cards" }, @@ -2115,6 +2304,7 @@ const static atr_t AtrTable[] = { { "3B90958011FE6A", "JC30M48CR JavaCard (JavaCard)" }, { "3B9095801FC359", "Dai Nippon Printing Co., DNP Standard-J T3.1" }, { "3B90968111FE68", "Xirka (eID)" }, + { "3B90969181B1FE551FC7D4", "iClass SE Processor (Other)\nhttps://www.hidglobal.com/products/embedded-modules/iclass-se/sio-processor" }, { "3B9194801F0323BA", "China black(COS) SIM, does not support clock stop" }, { "3B931100003200", "01-3936b2013 (Pay TV)\nhttp://www.lripl.com" }, { "3B941881B1807D1F0319C80050DC", "GoldKey Security PIV Token" }, @@ -2140,19 +2330,22 @@ const static atr_t AtrTable[] = { { "3B959680B1FE551FC7477261636513", "IClass SE Processor (Other)\nhttps://www.hidglobal.com/products/embedded-modules/iclass-se/sio-processor" }, { "3B9596C0F01FC20F100A0A16", "viettel (Telecommunication)" }, { "3B959740F01A160A1941", "SG50 (Samsung Chip) (Telecommunication)" }, + { "3B96004121920000622433339000", "Ukrainian Telecommunications Operator Kyivstar (old simcard) (Telecommunication)\nhttps://kyivstar.ua/uk/mm" }, { "3B961880018051006110309F006110309E", "Atmel/Athena T0 PC/SC Compliance Test Card No. 1 (warm reset)" }, + { "3B9694801FC6D0019FCB1000CE", "jawwal (Telecommunication)" }, { "3B9695801FC3D007830254005D", "au IC-card ver.001 (for CDMA2000) (Telecommunication)\nhttps://ja.wikipedia.org/wiki/Au_IC%E3%82%AB%E3%83%BC%E3%83%89" }, { "3B97110002020422003F03", "China Unicom (Telecommunication)" }, { "3B9711801F418031A073BE2100A6", "Comprion UT3 simulator SIM (Other)" }, { "3B9711801F428031A073BE2100A6", "ETSI 102 230 Test case 5.2.5.3. Comprion IT3 SIM emulator (Telecommunication)" }, - { "3B9711C0FFB1FE351F83A505010102A3015F", "digital chronotachygraphe card: conducteur/driver, entreprise, controleur/controler et atelier/workshop, 2006-2010\nmanufactured by Imprimerie Nationale, distributed by Chronoservices" }, - { "3B9713C0FFB1FE351F83A505010102A3015D", "digital chronotachygraphe card: conducteur/driver, entreprise, controleur/controler et atelier/workshop, 2005-2006\nmanufactured by Imprimerie Nationale, distributed by Chronoservices" }, + { "3B9711C0FFB1FE351F83A505010102A3015F", "digital chronotachygraphe card: conducteur/driver, entreprise, controleur/controller et atelier/workshop, 2006-2010\nmanufactured by Imprimerie Nationale, distributed by Chronoservices" }, + { "3B9713C0FFB1FE351F83A505010102A3015D", "digital chronotachygraphe card: conducteur/driver, entreprise, controleur/controller et atelier/workshop, 2005-2006\nmanufactured by Imprimerie Nationale, distributed by Chronoservices" }, { "3B9794801F438031E073FE211B39", "Telenor SIM card (Hungary) (Telecommunication)\nhttps://www.telenor.hu" }, { "3B9794803F44908031A073BE210095", "Comprion Simulated card that indicate Low Impedance support: TB(3) = 0x90 (Telecommunication)" }, { "3B9795801F438031E073FE211B38", "JIO (Telecommunication)" }, { "3B9795801F478031E073FE211B3C", "iFree MOGO SIM Card for test (Telecommunication)" }, { "3B9795801FC78031A073B6211BB4", "DNP Local5G (Telecommunication)" }, - { "3B9795C02A31FE35D000480105A3113C", "digital chronotachygraphe card: conducteur/driver, entreprise, controleur/controler et atelier/workshop, 2010-2015\nmanufactured by Imprimerie Nationale, distributed by Chronoservices" }, + { "3B9795C02A31FE35D000480105A3113C", "digital chronotachygraphe card: conducteur/driver, entreprise, controleur/controller et atelier/workshop, 2010-2015\nmanufactured by Imprimerie Nationale, distributed by Chronoservices" }, + { "3B97978171FE24007743534D01020300", "Infineon CIPURSE SAM SLF 9630 (Other)" }, { "3B9811000205013242030500", "Sino 3G Nano-sim ordered off Alie Express (Telecommunication)\nhttp://goo.gl/rSEi4N" }, { "3B9813400AA503010101AD1311", "Belgium Electronic ID card (eID)" }, { "3B981801524D4D2076312E32A8", "Ericsson Mini-Link RYS 110 243/1 (Other)" }, @@ -2176,6 +2369,7 @@ const static atr_t AtrTable[] = { { "3B999400910891060001060600", "GSM-SIM Orange-UK (1800)" }, { "3B999400911691080001250100", "GSM SIM E-plus, Germany (Telecommunication)" }, { "3B999400919993120001160200", "ORGA test systems - GSM Phase 2+ Test SIM" }, + { "3B999500001506030105040100", "Skylink CDMA R-UIM card (Telecommunication)\nhttps://en.wikipedia.org/wiki/Sky_Link_(Russia)" }, { "3B9A180082627593110001020200", "Supersim 6 in 1 (Telecommunication)" }, { "3B9A18801FC731425243442E312E3538C0", "HP StorageWorks (Other)\nhttps://hpe.com" }, { "3B9A940091010017000123100096", "GSM-SIM Victorvox D1 (900MHz)" }, @@ -2200,22 +2394,28 @@ const static atr_t AtrTable[] = { { "3B9C110068868D0C86980256408B0500", "China Mobile (Telecommunication)" }, { "3B9C131181647265616D6372797074000408", "XPlusTV & INXCT Access Card-9 (FIRECrypt)" }, { "3B9C131181647265616D6372797074900599", "FireCrypt, access card 9 (Pay TV)" }, + { "3B9C188121455A43332E333420524556204467", "MS-Protect safecard for access system (eID)" }, { "3B9C940068868D0A86980256C2000500", "G3 & GSM & Blank SIM card: to be programmed for OpenBTS with pySim-prog (Telecommunication)" }, { "3B9C940068868D0C86980245A1000500", "China Mobile (Telecommunication)" }, { "3B9C940068868D0C86980256408B0500", "mobiledit (Telecommunication)" }, { "3B9C948011405275746F6B656E4543507363C3", "Aktiv Rutoken ECP SC T1\nhttps://www.rutoken.ru/products/all/rutoken-ecp-sc/" }, + { "3B9C94801F478031E073FE211B545015740152", "VI india (Telecommunication)" }, + { "3B9C94801F478031E073FE211B545015745003", "SIM Card (Telecommunication)" }, { "3B9C94801F478031E073FE211B5450845450B2", "cambodia (Telecommunication)\nhttps://www.smart.com.kh/" }, + { "3B9C94801F478031E073FE211B545085745291", "Airtel india (Telecommunication)" }, { "3B9C94801F478031E073FE211B54538974509C", "China Unicom 128K M2M Card (Telecommunication)" }, { "3B9C94801F478031E073FE211B545983795091", "Vodafone Ukraine (Telecommunication)" }, { "3B9C95801FC78031E073FE211B6457444946CF", "MTC (Moscow) phone SIM card (Telecommunication)\nhttps://moskva.mts.ru/personal" }, { "3B9C9580811F039067464A01005404F272FE00C0", "Feitian Technologies Java Card A22CR (JavaCard)\nhttps://www.javacardos.com/store/javacard-a22cr.php" }, { "3B9C9580811F039067464A01011706F2727E0000", "A40CR (JavaCard)" }, + { "3B9C958131FE9F9067464A010253050172FE00FB", "Feitian Biopass K27 (PKI)\nhttps://www.ftsafe.com/Products/FIDO/Bio" }, { "3B9C96005275746F6B656E4543507363", "Aktiv Rutoken ECP SC T0\nhttps://www.rutoken.ru/products/all/rutoken-ecp-sc/" }, { "3B9C960058442403020020010A009005", "Ticket Restaurant Card (Other)\nhttp://www.edenred.it/buoni-pasto-welfare-benefit/ticket-restaurant-card/" }, { "3B9C978011405275746F6B656E4543507363C0", "Aktiv Rutoken ECP 3.0 NFC (PKI)\nhttps://www.rutoken.ru/products/all/rutoken-ecp-nfc/" }, { "3B9D114023006810114D696F434F53009000", "MioCOS 1.0" }, { "3B9D13813160378031C0694D54434F537302020440", "DPI Card Guatemala (eID)\nhttp://www.masktech.de/" }, { "3B9D13813160378031C0694D54434F537302020541", "MTCOS (eID)\nhttp://www.masktech.com/Products/MTCOS-Professional/11/en" }, + { "3B9D188131FC358031C0694D54434F5373020505D3", "Lithuanian e-ID Card (eID)\nhttps://www.nsc.vrm.lt/default_en.htm" }, { "3B9D944023006820014D696F434F53009000", "Miotec smartcard running Miocos 2.0 on an Atmel AT90SC646\nhttp://www.miotec.fi" }, { "3B9D95801FC38031E0524B5462110373FE211B8F", "KT WiBro UICC (2.3 GHz mobile WiMAX in South Korea)" }, { "3B9D95801FC38031E073FE211B65D00057026230", "Gemalto NFC enabled (acquired through the Simagine contest)" }, @@ -2228,16 +2428,21 @@ const static atr_t AtrTable[] = { { "3B9D95801FC780731A211B63AF09A9830F9000F3", "Estonian GSM operator TELE2 (WPKI eID support)" }, { "3B9D95803FC7A08031A073BE21135105830590007C", "NTT docomo Xi(LTE) DN05(DNP) Pink SIM (Telecommunication)" }, { "3B9D960053492303030020000400F59000", "shell (Transport)" }, + { "3B9D96801FC78031E073FE2113654C0404020096", "China umion 5G SIM (Telecommunication)" }, + { "3B9D96813160378031C0694D54434F5373020204C5", "Mozambique ID Card (eID)" }, { "3B9E94801F4280310073BE211066545953044C25CF", "MCI (Mobile Communication Company of Iran) SIM" }, + { "3B9E94801F478031A073BE21106686880212204027", "americamobile (Telecommunication)" }, { "3B9E94801F478031A073BE21136686880210421014", "Airspan USIM (Telecommunication)" }, { "3B9E94801F478031A073BE21136686880210731025", "module (JavaCard)" }, { "3B9E94801F478031E073BE211366868882183942F5", "China Unicom 128K Mini USIM (Telecommunication)" }, + { "3B9E94801F478031E073FE21136686880212653213", "MTS Moscow (Russia) SIM card (Telecommunication)\nhttps://moskva.mts.ru/personal" }, { "3B9E94801FC38031E073FE211B66D00017B40000A5", "Vodafone Ireland SIM card" }, { "3B9E94801FC78031E073FE211366425454423031DB", "XLB.5G CTC Test Card (Telecommunication)\nhttps://xielibo.com" }, { "3B9E94801FC78031E073FE211B66D0006C025F0033", "Vivo Brasil SIM Card" }, { "3B9E94801FC78031E073FE211B66D0006C0634005C", "SIM card SFR 250 128ko" }, { "3B9E94801FC78031E073FE211B66D0007A00000078", "GaduAIR (Poland) - Subscriber Identity Module (SIM)" }, { "3B9E94801FC78031E073FE211B66D0016DE80C008A", "Mobile TeleSystems (MTS) GSM SIM\nhttp://www.mts.ru/" }, + { "3B9E94801FC78031E073FE211B66D001A16B0F00C6", "Proximus (Belgium) SIM, unactivated (Telecommunication)" }, { "3B9E94801FC78031E073FE211B66D001A18D0F0020", "StarHub Happy Prepaid SIM (Telecommunication)\nhttp://www.starhub.com/personal/mobile/mobile-phones-plans/prepaid-cards.html" }, { "3B9E94801FC78031E073FE211B66D00217F71300F3", "VIETTEL Telecom 4G SIM 128KB (Vietnam) (Telecommunication)\nhttp://vietteltelecom.vn/" }, { "3B9E94801FC78031E073FE211B66D002195C130056", "SIM Card of the French mobile carrier 'La Poste Mobile' (Telecommunication)" }, @@ -2273,6 +2478,7 @@ const static atr_t AtrTable[] = { { "3B9E95801FC78031E073FE211B66D001A0C3120073", "3G MTN IRANCELL Sim Card. (Telecommunication)" }, { "3B9E95801FC78031E073FE211B66D001A1141100A6", "Globe (Telecommunication)" }, { "3B9E95801FC78031E073FE211B66D001A1721000C1", "Vodafone Hungary SIM Card (Telecommunication)\nhttp://vodafone.hu" }, + { "3B9E95801FC78031E073FE211B66D001A17C0F00D0", "Cricket SIM card (Telecommunication)" }, { "3B9E95801FC78031E073FE211B66D001A18C12003D", "Telkomsel SIM card (Telecommunication)\nhttps://www.telkomsel.com/en/kartu-as" }, { "3B9E95801FC78031E073FE211B66D001A1B810000B", "abc mobile prepaid sim card (serviced by CSL) (Telecommunication)\nhttps://www.hkcsl.com/en/abc-Mobile-Prepaid-SIM-Cards/" }, { "3B9E95801FC78031E073FE211B66D0021702130007", "AT&T prepaid nano iphone/android sim card (Telecommunication)" }, @@ -2336,12 +2542,16 @@ const static atr_t AtrTable[] = { { "3B9E96801FC78031E073FE211B66D001A0DD12006E", "USIM (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D001A0EC11005C", "Boost Mobile Prepaid Micro SIM Card (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D001A1121000A2", "OpenAirInerface (Telecommunication)" }, + { "3B9E96801FC78031E073FE211B66D001A1181100A9", "WinEMP NRI License Card (Other)" }, + { "3B9E96801FC78031E073FE211B66D001A122110093", "Lebara (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D001A1581100E9", "Vodafone CZ: SIMPLUS V128 LTE (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D001A1680F00C7", "Free Mobile SIM card (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D001A1721000C2", "Vodafone (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D001A1731000C3", "Prepaid public telephone card from Lidl Connect, Germany (Telecommunication)\nhttps://www.lidl.de/de/lidl-connect/s7373597" }, + { "3B9E96801FC78031E073FE211B66D001A1771000C7", "SIM Card Model X1 for Ting Mobile Carrier (Telecommunication)\nhttps://tingmobile.com/" }, { "3B9E96801FC78031E073FE211B66D001A1A70F0008", "Spanish Movistar Mobile phone SIM card (Telecommunication)\nhttp://www.movistar.es/" }, { "3B9E96801FC78031E073FE211B66D001A1E60F0049", "SIM O2 CZ (Telecommunication)" }, + { "3B9E96801FC78031E073FE211B66D002170912000E", "SIM/USIM (SPAIN) - ORANGE ESPAGNE VIRTUAL, S.A.U. (Orange / Jazztel / SIMYO) (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D0021759140058", "USIM card of of Ukrainian Telecommunications Operator Kyivstar, emitted after 2016 (Kyivstar GSM) (GSM/UMTS/LTE services) (Telecommunication) (Telecommunication)\nhttps://kyivstar.ua/uk/4g" }, { "3B9E96801FC78031E073FE211B66D002175B12005C", "Cellcom Israel USIM (micro FF) (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D0021760130066", "Vodafone spain barcelona (Telecommunication)" }, @@ -2353,12 +2563,20 @@ const static atr_t AtrTable[] = { { "3B9E96801FC78031E073FE211B66D00217D91200DE", "telenor (swedish mobile provider) SIM card (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D00217F41200F3", "SIM card for Swedish operator Vimla! (Telecommunication)\nhttps://www.vimla.se" }, { "3B9E96801FC78031E073FE211B66D002194B120042", "halebop (swedish mobile provider) SIM card (Telecommunication)" }, + { "3B9E96801FC78031E073FE211B66D0022436140004", "SIM (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D0022A72130049", "SIM Card OI (Brazil) (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D0022A861300BD", "Mobile Vikings SIM Card (Telecommunication)\nhttps://mobilevikings.com" }, + { "3B9E96801FC78031E073FE211B66D0022A8F1400B3", "Telefonica USIM (Telecommunication)" }, { "3B9E96801FC78031E073FE211B66D0022AD31300E8", "sim card from Mobilcom Debitel Telefonica (Telecommunication)\nhttps://md.de" }, { "3B9E96801FC78031E073FE211B66D0022AD91300E2", "sim (Telecommunication)" }, + { "3B9E96801FC78031E073FE211B66D0022AE81300D3", "Twilio Super SIM card (Telecommunication)\nhttps://www.twilio.com/iot/super-sim-card" }, + { "3B9E96801FC78031E073FE211B66D0022AF21400CE", "Tello (Telecommunication)\nhttps://tello.com/" }, { "3B9E96801FC78031E073FE211B66D00233AD140088", "4G-LTE (Telecommunication)" }, { "3B9E96803FC3A08031E073FE211B630801140F9000D3", "KT Olleh LTE Warp SA-L 1670 (Telecommunication)" }, + { "3B9E97801FC68031E073FE211B66D0019F7A1200F6", "Spectrun USA Sim Card (Telecommunication)" }, + { "3B9E97801FC68031E073FE211B66D002401D15004A", "Telia Sim card for IoT (Telecommunication)" }, + { "3B9E97801FC68031E073FE211B66D0024027150070", "verymobile wind 3 (Telecommunication)\nhttps://verymobile.it/" }, + { "3B9E97801FC68031E073FE211B66D0025E7315003A", "Twilio Super SIM (Telecommunication)\nhttps://www.twilio.com/iot/super-sim-card" }, { "3B9E97801FC78031E073FE211B66D0006B951100EE", "TracFone SIM Verizon Wireless LTE supported (Telecommunication)\nhttps://www.tracfone.com" }, { "3B9E97801FC78031E073FE211B66D0022AB3130089", "SIM T-MObile (Telecommunication)" }, { "3B9F..801FC300681.4405014649534531C8..9000..", "Setec SetCOS 4.4.1" }, @@ -2406,6 +2624,7 @@ const static atr_t AtrTable[] = { { "3B9F94401E0067114346495345105266FF819000", "Setec / FINEID\nSETEC Instant EID" }, { "3B9F94401E0067164346495345105266FF819000", "RSA SecurID 3100 or Utimaco Safeware Smartcard\nSetCOS 4.3.1 Revision Unknown" }, { "3B9F94801FC30068104405014649534531C807900018", "SetCOS 4.3.0 32K RSA\nInstant EID IP2\nSETEC SetCard 32K PKI Evaluated SetCOS 4.4.1a2" }, + { "3B9F94801FC38031A07320210805500940095E010274", "Yemen Mobile SIM Card Yemen (YE) (Telecommunication)" }, { "3B9F94801FC38031A073B6A10067CF3251CC9E6EC015", "OYEITIMES 2G GSM Blank SIM Card (Other)\nhttps://www.aliexpress.com/item/32972705510.html?spm=a2g0s.9042311.0.0.5a564c4daKCdcQ" }, { "3B9F94801FC38031E073FE21136301030283079000CE", "Programmable SIM card as one of the requirement for free5GC testing procedure (Telecommunication)" }, { "3B9F94801FC78031E073FE2100644090610082900069", "softsim (Telecommunication)" }, @@ -2420,6 +2639,7 @@ const static atr_t AtrTable[] = { { "3B9F94801FC78031E073FE21135749050C86986018CC", "China Unicom USIM 128K 6131H" }, { "3B9F94801FC78031E073FE21135786810586984018AE", "China Unicom USIM Card (Telecommunication)" }, { "3B9F94801FC78031E073FE211357868107869862188E", "OYEITIMES MCR3516 SIM Card (Telecommunication)" }, + { "3B9F94801FC78031E073FE2113578681098698621880", "Oyeitimes 5G ISIM R16 (Telecommunication)\nhttps://www.oyeitimes.com/detail.php?id=535&ids=565&idt=&ide=&dd=1410" }, { "3B9F94801FC78031E073FE21135786850686984218AB", "4G LTE blank USIM Green Card (Telecommunication)\nhttp://grcard.en.alibaba.com/product/60076835567-209365843/4G_LTE_blank_usim_card_for_4G_network.html" }, { "3B9F94801FC78031E073FE21136321150683079000F8", "Maroc Telecom 4G+ (Telecommunication)" }, { "3B9F94801FC78031E073FE21136761210D10000070F7", "Celcom XPAX (Telecommunication)\nhttps://www.celcom.com.my/personal/prepaid" }, @@ -2427,6 +2647,7 @@ const static atr_t AtrTable[] = { { "3B9F94801FC78031E073FE2119573C8660CFBA02A0ED", "Gotanet DK USIM (Telecommunication)" }, { "3B9F94801FC78031E073FE211B573786609B3289B2A1", "China Unicom Travel SIM (Telecommunication)\nhttps://www.cuniq.com/hk/data-card/asia/asia-12days.html" }, { "3B9F94801FC78031E073FE211B573786609BA182109B", "U Mobile POWER Prepaid (Telecommunication)\nhttp://www.u.com.my/prepaid" }, + { "3B9F94801FC78031E073FE211B573C8660CDA1001246", "Beeline SIM card (RUS) (Telecommunication)\nhttps://beeline.ru" }, { "3B9F94801FC78031E073FE211B573F86604D03000075", "Prepaid SIM card MOCHE (Portugal) (Telecommunication)" }, { "3B9F94801FC78031E073FE211B573F866083020000BA", "GSM-SIM Beeline RU (Telecommunication)\nhttp://beeline.ru" }, { "3B9F94801FC78031E073FE211B573F866096A100000C", "Lycamobile UICC/SIM card. (Telecommunication)\nhttps://www.lycamobile.com.au" }, @@ -2436,6 +2657,7 @@ const static atr_t AtrTable[] = { { "3B9F94801FC78031E073FE211B640681010082900045", "Mobicarte Orange" }, { "3B9F94801FC78031E073FE211B6407564200829000D0", "SIM mobi orange" }, { "3B9F94801FC78031E073FE211B649F4F002082900033", "USIM (3G DF) Orange (French Mobile Network) (Telecommunication)" }, + { "3B9F94801FC78031E073FE211B674B004A5503060083", "CU esim thd89 (Telecommunication)" }, { "3B9F95801F038031A073B6A10067CF97F9E063689957", "Telestial OneRate International SIM card (Telecommunication)\nhttp://www.amazon.com/gp/product/B004GV13VY/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1" }, { "3B9F95801F438031E073362113574A330E09314100A9", "GSM-SIM Elisa (Estonia, WPKI eID support)" }, { "3B9F95801F438031E073362113574A330E0C314100AC", "Vodafone SIM (mobile phone)" }, @@ -2449,6 +2671,7 @@ const static atr_t AtrTable[] = { { "3B9F95801FC38031A073BE21005302E232830590003C", "NTT docomo FOMA(W-CDMA) GE02(Japan Gemplus) Green SIM (Telecommunication)\nhttps://ja.wikipedia.org/wiki/%E3%83%89%E3%82%B3%E3%83%A2UIM%E3%82%AB%E3%83%BC%E3%83%89" }, { "3B9F95801FC38031A073BE2113674701030102000099", "T-Mobile (UK) SIM\nFresh Mobile (UK) SIM" }, { "3B9F95801FC38031A073BE2113674701050104000099", "T-Mobile Nederlands\nhttp://www.tmobile.nl" }, + { "3B9F95801FC38031A073BE2113674701050904000091", "SIM card (Telecommunication)" }, { "3B9F95801FC38031A073BE2113674701090901000098", "German SIM card (T-Mobile) (Telecommunication)" }, { "3B9F95801FC38031A073BE211367D002030901000006", "GSM, T-Mobile (Germany)" }, { "3B9F95801FC38031A073BE211367D002031901000016", "GSM SIM card from congstar (a no-frills service provider of Deutsche Telekom)" }, @@ -2464,11 +2687,14 @@ const static atr_t AtrTable[] = { { "3B9F95801FC38031E073FE211B649B4D011182900000", "Singular (now AT&T) 3G GSM SIM Card" }, { "3B9F95801FC38031E073FE211BB3E20174830F900088", "Gemplus GemXplore 3G USIM" }, { "3B9F95801FC78031A073B6A10067CF1713C41D2D3649", "Idemia card (Telecommunication)" }, - { "3B9F95801FC78031A073B6A10067CF1794AA28993F28", "Glaier Programable LTE USIM Card (Telecommunication)" }, + { "3B9F95801FC78031A073B6A10067CF1794AA28993F28", "Glaier Programmable LTE USIM Card (Telecommunication)" }, { "3B9F95801FC78031A073B6A10067CF3211B252C679F3", "open5gs (Telecommunication)" }, { "3B9F95801FC78031A073B6A10067CF3215A98FD70950", "LTE Card (Telecommunication)" }, + { "3B9F95801FC78031A073B6A10067CF3215CA9CD70920", "Gialer LTE USIM (Telecommunication)\nhttps://www.gialer.com/collections/writable-sim-card/products/gialer-writable-programmable-sim-card-4g-lte-wcdma-gsm-nano-micro-2ff-3ff-4ff-blank-usim-card-for-telecom-operator?variant=40982030090394" }, + { "3B9F95801FC78031A073B6A10067CF3216C3F1484998", "LTE USIM as used for Private LTE Networks. Manufacturer 'Huahong' in China (Telecommunication)" }, { "3B9F95801FC78031A073BE21005304D08083059000BE", "NTT_DoCoMo (Telecommunication)" }, { "3B9F95801FC78031A073BE211367D002040901000005", "T-Mobile SIM card issued in Germany 2012" }, + { "3B9F95801FC78031E073F62100000086538300900061", "Zong (Telecommunication)" }, { "3B9F95801FC78031E073F62113674D451500390102F4", "Vivo 4G LTE SIM Card (Telecommunication)" }, { "3B9F95801FC78031E073F62113674D4516004301008F", "VALID USIM (Telecommunication)" }, { "3B9F95801FC78031E073FE21135712291102010000C2", "sysmocom sysmoUSIM-GR1\nhttp://sysmocom.de/" }, @@ -2481,11 +2707,13 @@ const static atr_t AtrTable[] = { { "3B9F95801FC78031E073FE2113574A330E1932330084", "WIND Mobile SIM Card" }, { "3B9F95801FC78031E073FE2113574A330E1A32330087", "Rohde and Schwarz CMW-Z04. Mini-UICC Test Card (Telecommunication)" }, { "3B9F95801FC78031E073FE2113574A330E1A32360082", "TELUS 3G SIM Card" }, + { "3B9F95801FC78031E073FE2113574A330E1E32360086", "SIM Enreach (Telecommunication)" }, { "3B9F95801FC78031E073FE2113635510888307900006", "SHOW or UPlus USIM (Telecommunication)" }, { "3B9F95801FC78031E073FE2113635510AA8307900024", "2degrees NFC (Telecommunication)\nhttp://www.2degreesmobile.co.nz/home" }, { "3B9F95801FC78031E073FE2113672228004001000191", "Lycamobile Prepaid SIM-Card (Telecommunication)\nhttp://lycamobile.at" }, { "3B9F95801FC78031E073FE211367940311000002035C", "AT&T (US) GSM SIM" }, { "3B9F95801FC78031E073FE211B573C8660BEB7002010", "Kyivstar SIM (Telecommunication)\nhttps://kyivstar.ua/" }, + { "3B9F95801FC78031E073FE211B573F866096AE000002", "Kazakhstan 'Beeline' 4G SIM card (Telecommunication)\nhttps://beeline.kz" }, { "3B9F95801FC78031E073FE211B63E20394830F9000BE", "Telenet N.V. Walk & Talk SIM Card Belgium" }, { "3B9F95801FC78031E073FE211B63E204A5830F900088", "Cingular '64Ksmartchip' GSM SIM\nTelia GSM/3G (Swedish operator)" }, { "3B9F95801FC78031E073FE211B63E206A6830F900089", "TracFone (US) Net10 GSM SIM card\nSimyo (Germany) GSM SIM card\nH3G (Italy) UMTS USIM card" }, @@ -2498,6 +2726,7 @@ const static atr_t AtrTable[] = { { "3B9F95801FC78031E073FE211B640752930282900006", "AT&T GO PHONE 2G (Telecommunication)\nhttps://www.att.com/shop/wireless/gophone.html" }, { "3B9F95801FC78031E073FE211B6407536301829000F4", "AT&T UICC with USIM and ISIM (Telecommunication)" }, { "3B9F95801FC78031E073FE211B6440614100829000A2", "SIM card (Telecommunication)" }, + { "3B9F95801FC78031E073FE211B644067620082900087", "ATT SIM card (Telecommunication)" }, { "3B9F95801FC78031E073FE211B644112010082900090", "MTS SIM card (Russia) (Telecommunication)\nhttp://www.mts.ru/" }, { "3B9F95801FC78031E073FE211B6441132100829000B1", "AT&T SIM card (Telecommunication)" }, { "3B9F95801FC78031E073FE211B644132310082900080", "Telefonica | Vivo Brazil M2M SIM Card (Telecommunication)" }, @@ -2505,6 +2734,8 @@ const static atr_t AtrTable[] = { { "3B9F95801FC78031E073FE211B659F010902048105C4", "2degrees mobile SIM card\nhttp://www.2degreesmobile.co.nz/" }, { "3B9F95801FC78031E073FE211B65B4010E01028105ED", "USIM Card by Maroc Telecom Morocco (Telecommunication)" }, { "3B9F95801FC78031E073FE211B675348434F5F01019B", "baicells sim card (Telecommunication)\nhttp://www.baicells.com/" }, + { "3B9F95801FC78031E073FE211B675744534C45393794", "SIM card MTS Russia (Telecommunication)\nhttps://moskva.mts.ru/personal" }, + { "3B9F95801FC78031E073FEA11F6441805100829000D6", "AT&T SIM Card (Telecommunication)" }, { "3B9F95803FC3A08031E073FE2113638D434283F0900034", "Taisys Java Csrd (Telecommunication)" }, { "3B9F95803FC7A08031A073BE211B5305D0808305900024", "NTT docomo Xi(LTE) AX05(Gemalto) Pink SIM (Telecommunication)\nhttps://ja.wikipedia.org/wiki/%E3%83%89%E3%82%B3%E3%83%A2UIM%E3%82%AB%E3%83%BC%E3%83%89" }, { "3B9F95803FC7A08031E073FE211363554022830790007C", "Ubivelox (JavaCard)" }, @@ -2515,6 +2746,8 @@ const static atr_t AtrTable[] = { { "3B9F958131FE9F006646530510043171DF000000000026", "ePass2003 (PKI)" }, { "3B9F958131FE9F006646530510043171DF000006000020", "FEITIAN ePASS 2003 Auto (PKI)" }, { "3B9F958131FE9F006646530510043171DF00003900001F", "Feitian ePass2003 (PKI)" }, + { "3B9F958131FE9F006646530510063171DF000000000024", "FT ePass2003Auto USB Token (PKI)" }, + { "3B9F958131FE9F006646530510323871DF00000600001F", "token (PKI)" }, { "3B9F958131FE9F006646530520032571DF000000000005", "Feitian ePass2003 token" }, { "3B9F958131FE9F006646530520032571DF000003900096", "Feitian ePass2003 token (PKI)" }, { "3B9F958131FE9F006646530523002571C39F0000000086", "Feitian ePass2003 token" }, @@ -2522,6 +2755,10 @@ const static atr_t AtrTable[] = { { "3B9F958131FE9F006646530523002571DF000003900096", "Feitian USB Cryptographic token (FIPS 140-2 Level 3) (PKI)\nhttp://www.ftsafe.com/product/epass/epass2003" }, { "3B9F958131FE9F006646530532022571DF000006000010", "ePass 3003 Auto (PKI)\nhttps://www.ftsafe.com/products/PKI/Standard/Specification" }, { "3B9F958131FE9F006646530534002571DF0000036A82F9", "Feitian ePass2003Auto (PKI)\nhttps://www.ftsafe.com/Products/PKI/Standard/Specification" }, + { "3B9F958131FE9F006646530551003371DF000000000061", "FT ePass2003Auto 00 00 (PKI)" }, + { "3B9F958131FE9F006646530551003371DF0000036A828A", "Feitian epass2003 Auto (PKI)" }, + { "3B9F958131FE9F006646530551003371DF0000039000F2", "HyperPKI USB Token (PKI)\nhttps://www.hypersecu.com/hyperpki" }, + { "3B9F958131FE9F006646530551003371DF000006000067", "Epass2003 (PKI)" }, { "3B9F95C00A1F078031E073FE211B63F100AD830F90001D", "EMT WPKI USIM (2014, Estonia, JavaCard) (Telecommunication)" }, { "3B9F95C00A1FC78031E073FE211B63F100AD830F9000DD", "Telenor SIM card (Norway)" }, { "3B9F96400A8031E06B0420050258555555555555", "BuyPass identification card. It can also possibly be used to hold e-currency." }, @@ -2532,31 +2769,40 @@ const static atr_t AtrTable[] = { { "3B9F96801F438031E073362113574A330E0C314100AF", "GSM, Vodafone (Germany)" }, { "3B9F96801F478031E073362113574A330E0C314100AB", "NATEL SIM-Card swisscom\nVodafone Germany Micro-SIM from 2010" }, { "3B9F96801F478031E073FE2113574A330E253332003B", "SMART prepaid card, Estonia (Telecommunication)" }, + { "3B9F96801F878031A073BE2111630000018305900089", "jio sim card (Telecommunication)" }, { "3B9F96801F878031E073FE2119674A555473300948DB", "nano sim/usim card (Telecommunication)" }, { "3B9F96801F878031E073FE2119674A555475300662F8", "SIM Card (Telecommunication)" }, { "3B9F96801F878031E073FE2119674A557330310746BE", "Hologram Developer Global IoT SIM Card (Telecommunication)\nhttps://hologram.io/store/global-iot-sim-card/17" }, { "3B9F96801F878031E073FE211B674A4C5275310451D5", "Test card provided with 4G/5G network from Amarisoft (Telecommunication)" }, { "3B9F96801F878031E073FE211B674A4C7530300248A9", "Cardcentrics (Telecommunication)" }, - { "3B9F96801F878031E073FE211B674A4C753034054BA9", "Test Card (Telecommunication)" }, + { "3B9F96801F878031E073FE211B674A4C753034054BA9", "sysmoISIM-SJA2 (Telecommunication)\nhttps://osmocom.org/projects/cellular-infrastructure/wiki/SysmoISIM-SJA2" }, + { "3B9F96801F878031E073FE211B674A55527531054BD7", "Softbank (C2) USIM card (Telecommunication)" }, + { "3B9F96801F878031E073FE211B674A55733031094BBF", "NB-IoT SIM (Telecommunication)" }, { "3B9F96801FC30068104405014649534531C80790001A", "SETEC SetCard 32K PKI Evaluated SetCOS 4.4.1" }, { "3B9F96801FC38031E073FA21006331602383109000BE", "TAISYS SIMoME JAR (JavaCard)\nhttp://www.taisys.com/p-detail?id=39beTne-hf4u2Y5DnWghweplyFR-dUUf1-xpy55cWQ" }, + { "3B9F96801FC38031E073FE2100671101674006007789", "Beni's UICC 4G LTE (Telecommunication)\nhttps://cslgroup.co.id/" }, { "3B9F96801FC38031E073FE211BB3E2027E830F900082", "Vodafone SIM Card (D2, 1800Mhz, Germany, Twincard, possibly others too?), manufactured by Gemplus (See stamp on the chip)\nMobileOne (Singaporean 3G/GSM operator) SIM card 'II(3G-64) M1 3G '" }, { "3B9F96801FC68031E073F62113674D45220079020080", "TMobile (Telecommunication)" }, { "3B9F96801FC68031E073F62113674D4522008001007A", "ORANGE SPAIN GSM 4G SIM (Telecommunication)" }, { "3B9F96801FC68031E073F62113675602220080010127", "giffgaff USIM (Telecommunication)" }, { "3B9F96801FC68031E073F62113675603220121010087", "Rain 4G 5G Internet Service provider (Telecommunication)\nhttps://www.rain.co.za" }, + { "3B9F96801FC68031E073F62113675603220121020084", "T-Mobile Sim Card (Telecommunication)" }, { "3B9F96801FC68031E073FE2111633F011183079000E4", "VR-Bank VRNetworld HBCI Card (Bank)" }, { "3B9F96801FC68031E073FE2113574A330577333300E2", "USIM issued by Moldcell mobile operator in Moldova (Telecommunication)\nhttp://www.moldcell.md/" }, + { "3B9F96801FC68031E073FE211B6300850083819000C2", "Vodafone IoT USIM (Telecommunication)" }, { "3B9F96801FC68031E073FE211B6441024100829000C2", "Empire Bank ltd (Bank)\nFinnish Telia SIM-card (Telecommunication)" }, { "3B9F96801FC68031E073FE211B644104810082900004", "SAP Leonardo IoT Connect 365 SIM card (Telecommunication)\nhttps://www.sap.com/uk/products/enterprise-iot-connect.html" }, { "3B9F96801FC68031E073FE211B644115010082900095", "Telia LT prepaid Ezys USIM (Telecommunication)\nhttps://www.ezys.lt" }, { "3B9F96801FC68031E073FE211B6441177300829000E5", "Prixtel SIM card over OrangeF network (Telecommunication)\nhttps://www.prixtel.com" }, { "3B9F96801FC68031E073FE211B6441193100829000A9", "Taiwan Star Telecom Corporation Limited (Telecommunication)\nhttps://www.tstartel.com/CWS/" }, + { "3B9F96801FC68031E073FE211B6441247100829000D4", "RWG Mobile SIM Card (Telecommunication)\nhttps://www.rwgmobile.wales/rates-plans-eng-per/" }, { "3B9F96801FC68031E073FE211B644124910082900034", "Fido Canada (Telecommunication)" }, { "3B9F96801FC68031E073FE211B6441255100829000F5", "R&S CMW-Z06 Multi Test SIM (Telecommunication)" }, { "3B9F96801FC68031E073FE211B644130320082900083", "SFR (Telecommunication)" }, { "3B9F96801FC68031E073FE211B6441346100829000D4", "Ting X1 GSM SIM Card (4G, T-Mobile network) (Telecommunication)\nhttps://ting.com/shop/gsmSIM" }, + { "3B9F96801FC68031E073FE211B65CA010E0209810599", "Liquid Telecom Zambia (Telecommunication)\nhttps://zm.liquidhome.tech/" }, { "3B9F96801FC68031E073FE211B66D00206131218031E", "SIM card (Telecommunication)" }, + { "3B9F96801FC68031E073FE211B66D002061312180419", "T-Mobile NL SIM only (Telecommunication)" }, { "3B9F96801FC68031E073FE211B66D00206E20F1801F0", "Telekom Sim card (Telecommunication)" }, { "3B9F96801FC68031E073FE211B66D00206E20F1803F2", "Vulcan 0502 T-Mobile SIM (Telecommunication)" }, { "3B9F96801FC68031E073FE211B66D00206E20F1804F5", "T-Mobile Nederlands (Telecommunication)\nhttps://t-mobile.nl/" }, @@ -2565,6 +2811,7 @@ const static atr_t AtrTable[] = { { "3B9F96801FC68031E073FE211B66D00221AB11180180", "Telekom Germany Triple SIM issued in 2018 (Telecommunication)" }, { "3B9F96801FC68031E073FE211B66D00221AB11180786", "telekom HU nano sim card (Telecommunication)\nhttps://www.telekom.hu" }, { "3B9F96801FC68031E073FE211C6441193100829000AE", "SORACOM SIM (plan unknown) (Telecommunication)" }, + { "3B9F96801FC78031A073BE21136742470111000001CC", "Bank of Hawai'i (Bank)\nhttps://www.boh.com/" }, { "3B9F96801FC78031A073BE2113674320071800000100", "sysmoUSIM-SJS1 (Telecommunication) (Telecommunication)\nhttp://www.sysmocom.de/products/sysmousim-sjs1-sim-usim" }, { "3B9F96801FC78031A073BE21136743200718000001A5", "sysmoUSIM-SJS1 (Telecommunication)\nhttp://www.sysmocom.de/products/sysmousim-sjs1-sim-usim" }, { "3B9F96801FC78031A073BE21136744220610000001A9", "Fairwaves test SIM card (Telecommunication)\nhttp://fairwaves.co" }, @@ -2576,6 +2823,9 @@ const static atr_t AtrTable[] = { { "3B9F96801FC78031E073F62113675603270089010228", "TMobile Prepaid USIM (Telecommunication)" }, { "3B9F96801FC78031E073F621136756032701010203A3", "USIM LTE MOVISTAR (Telecommunication)" }, { "3B9F96801FC78031E073F621136756032701020100A0", "vivo (Other)" }, + { "3B9F96801FC78031E073F62113675603270120020081", "VALID brand SIM card from T-Mobile (Telecommunication)" }, + { "3B9F96801FC78031E073F6211367560346014901008A", "T-Mobile Poland pre-paid SIM card (Telecommunication)" }, + { "3B9F96801FC78031E073F6A157574A4D020B6110005B", "G+D Mobile Security for private 5G USIM (Telecommunication)\nhttps://www.gi-de.com/en/connectivity/mobile-network-operator/5g#5g-sim" }, { "3B9F96801FC78031E073FE21..63......83..9000..", "TIM (Italy) 128KB GSM SIM\nH3G (Italy) UMTS USIM\nVodafone (UK) SIM" }, { "3B9F96801FC78031E073FE211163407262830790009A", "GSM SIM / LTE UICC card issued by Omnitel, Lithuania (Telecomunications)" }, { "3B9F96801FC78031E073FE2111634082918307900099", "Chunghwa Telecom (Taiwan) 3G/4G PrePaid card\nhttps://www.twgate.net/prepaidcard/product_en.html" }, @@ -2591,6 +2841,8 @@ const static atr_t AtrTable[] = { { "3B9F96801FC78031E073FE2113574A330E25333200BB", "Sintel hi! Tourist prepaid (Telecommunication)\nhttp://www1.singtel.com/personal/phones-plans/mobile/prepaid/hitouristsimcards.html" }, { "3B9F96801FC78031E073FE2113574A330E26333200B8", "Vodafone sim card (Telecommunication)" }, { "3B9F96801FC78031E073FE2113574A330E3F333400A7", "SIM Card (Telecommunication)" }, + { "3B9F96801FC78031E073FE2113574A338101330017", "Telefonica M2M Global SIM (Telecommunication)" }, + { "3B9F96801FC78031E073FE2113574A33810433330014", "PureTalk SIM Card (Telecommunication)" }, { "3B9F96801FC78031E073FE2113679118020406060651", "USIM (3G PF) Orange" }, { "3B9F96801FC78031E073FE211367931801010401095F", "Telstra 128K Universal Orange SIM Card (Telecommunication)" }, { "3B9F96801FC78031E073FE2113679319010401010750", "Telefonica m2m simcard, Movistar o2 vivo (Telecommunication)" }, @@ -2600,6 +2852,7 @@ const static atr_t AtrTable[] = { { "3B9F96801FC78031E073FE211367933001030301047F", "T-Mobile US SIM card (Telecommunication)" }, { "3B9F96801FC78031E073FE211367933001030403027C", "Comprion test U(SIM): model 128K/J LTE Test (U)SIM - Mini-UICC, product number Prod. No.: 10432006 (Telecommunication)\nhttp://www.comprion.com/en/products/test__u_sims/3g_test_usim_cards" }, { "3B9F96801FC78031E073FE211367933001060201027D", "Morpho USIM (Telecommunication)" }, + { "3B9F96801FC78031E073FE2113679330010802010273", "Bouygues Telecom SIM (Telecommunication)" }, { "3B9F96801FC78031E073FE211367933001110201026A", "R&S CMW-Z04 Mini-UICC Test Card (Telecommunication)\nhttp://www.rhode-schwartz.com" }, { "3B9F96801FC78031E073FE2113679331010801010172", "Morpho (Telecommunication)" }, { "3B9F96801FC78031E073FE2113679403030A02020244", "Digi mobil Romania (old sim card version) (Telecommunication)" }, @@ -2609,6 +2862,7 @@ const static atr_t AtrTable[] = { { "3B9F96801FC78031E073FE211367940401070202024C", "Orange Mobicarte (France)" }, { "3B9F96801FC78031E073FE211367940404030505054A", "Claro operator SIM" }, { "3B9F96801FC78031E073FE211367941602070502025A", "CSL Mobile / PCCW SIM Card (Telecommunication)\nhttp://www.hkcsl.com/" }, + { "3B9F96801FC78031E073FE211367941602120101014B", "Airtel India Sim Card (Telecommunication)" }, { "3B9F96801FC78031E073FE2113679801010202030142", "Telenor SIM card (Hungary) (Telecommunication)\nhttps://www.telenor.hu" }, { "3B9F96801FC78031E073FE2113679801010402030247", "ReadySIM / T-Mobile USA USIM (2013) (Telecommunication)\nhttp://www.readysim.com/" }, { "3B9F96801FC78031E073FE2113679801010803010349", "Yesss! SIM card (Austria) (Telecommunication)\nhttps://www.yesss.at" }, @@ -2629,8 +2883,11 @@ const static atr_t AtrTable[] = { { "3B9F96801FC78031E073FE2115574A330E3B333400A5", "O2 Spain phone SIM (Telecommunication)\nhttps://o2online.es/" }, { "3B9F96801FC78031E073FE2115574A330E3F333500A0", "Telefonica (Germany) SIM Card (Telecommunication)" }, { "3B9F96801FC78031E073FE2117574A330E3F333400A3", "Telecommunication (SIM or USIM card) T-Mobile Communications (Telecommunication)" }, + { "3B9F96801FC78031E073FE2117574A330E3F333500A2", "Megafon (RUS) SIM Card (Telecommunication)\nhttps://megafon.ru" }, { "3B9F96801FC78031E073FE2117574A330E3F333600A1", "Bell Mobility MULTI SIM (Telecommunication)\nhttps://bell.ca" }, { "3B9F96801FC78031E073FE2117574A33810433360015", "HoT Austria SIM Card (Telecommunication)\nhttps://hot.at/" }, + { "3B9F96801FC78031E073FE2117574A3382033339001E", "Sm@rtSIM Zeta (Giesecke & Devrient SIM) (Telecommunication)" }, + { "3B9F96801FC78031E073FE2117574A33820433390019", "NB-IoT SIM (Telecommunication)" }, { "3B9F96801FC78031E073FE211B57318660B21A0C0C9F", "SIM CARD (JavaCard)" }, { "3B9F96801FC78031E073FE211B630057008381900011", "3 (3g microUSIM) Italian subsidiary H3G" }, { "3B9F96801FC78031E073FE211B634041918307900050", "giffgaff UK 3G SIM\nnetzclub sponsored mobile\no2 Loop GSM SIM Germany (PREPAID) from 2013" }, @@ -2655,7 +2912,10 @@ const static atr_t AtrTable[] = { { "3B9F96801FC78031E073FE211B6441447300829000B7", "Bouygues Telecom (French Mobile Provider SIM card) (Telecommunication)\nhttps://www.bouyguestelecom.fr" }, { "3B9F96801FC78031E073FE211B6441503100829000E1", "telcel sim card (Telecommunication)" }, { "3B9F96801FC78031E073FE211B6441725100829000A3", "Free Mobile (French wireless service provider) SIM card (mini-SIM with micro-SIM cutout) received in 2020-09 (Telecommunication)\nhttps://mobile.free.fr/" }, + { "3B9F96801FC78031E073FE211B6441725200829000A0", "Woolworths Mobile Prepaid SIM (Telecommunication)\nhttps://mobile.woolworths.com.au/" }, { "3B9F96801FC78031E073FE211B6441763200829000C4", "T-Mobile SIM card issued April 2021 (Telecommunication)" }, + { "3B9F96801FC78031E073FE211B6450040100826A82EC", "SIM (Telecommunication)" }, + { "3B9F96801FC78031E073FE211B6450055100829000C5", "Sim card Team Telecom Armenia (Telecommunication)\nhttps://www.telecomarmenia.am/hy/" }, { "3B9F96801FC78031E073FE211B65240109010081057B", "Lycamobile (UK) GSM SIM card" }, { "3B9F96801FC78031E073FE211B65260109000781057F", "EMT WPKI 2015 (ECC) subscription (Telecommunication)\nhttps://www.emt.ee/en/pakkumised/mobiil-id" }, { "3B9F96801FC78031E073FE211B65270109010381057B", "slarmy (Telecommunication)" }, @@ -2663,8 +2923,12 @@ const static atr_t AtrTable[] = { { "3B9F96801FC78031E073FE211B652A010A0102810574", "Thailand AIS SIM Card (Telecommunication)" }, { "3B9F96801FC78031E073FE211B652A010E0201810570", "gsm (Telecommunication)" }, { "3B9F96801FC78031E073FE211B652D010C0400810572", "Tri Indonesia Bima+ SIM Card (Telecommunication)\nhttps://beta.tri.co.id/3digiworld/Bimaplus" }, + { "3B9F96801FC78031E073FE211B652F0109020A810579", "cellcom israel sim (Telecommunication)" }, { "3B9F96801FC78031E073FE211B652F010A0301810570", "SMART Prepaid SIM (Telecommunication)" }, + { "3B9F96801FC78031E073FE211B652F010A0304810575", "Smart Telecom (PH) (Telecommunication)\nhttps://smart.com.ph/Prepaid/sim-and-phones/lte-prepaid-sim" }, + { "3B9F96801FC78031E073FE211B652F010D0100810574", "vodacom_sim (Pay TV)" }, { "3B9F96801FC78031E073FE211B6556544C017481056D", "Viettel LTE SIM (Telecommunication)" }, + { "3B9F96801FC78031E073FE211B6556544C017681056F", "Viettel Telecom (Telecommunication)" }, { "3B9F96801FC78031E073FE211B65630109020181053E", "2degrees Mobile SIM Card New Zealand (Telecommunication)\nhttp://2degreesmobile.co.nz" }, { "3B9F96801FC78031E073FE211B65BA010904048100E1", "Blank SIM (Telecommunication)" }, { "3B9F96801FC78031E073FE211B66D0016B820E1801FE", "Telekom Deutschland GmbH - Xtra Data Karte (3G SIM)" }, @@ -2678,11 +2942,17 @@ const static atr_t AtrTable[] = { { "3B9F96803FC7008031E073FE211F6441262100829000A3", "Smartjac SMAOT100A234FF (Telecommunication)\nhttps://smartjac.com" }, { "3B9F96803FC7828031E073F62157574A330581053000CE", "COMPRION M2M eUICC (Telecommunication)" }, { "3B9F96803FC7828031E073F62157574A4D020B60010069", "eSIM GSMA Card (Telecommunication)\nhttps://www.gsma.com/newsroom/wp-content/uploads/SGP.22_v2.2.pdf" }, + { "3B9F96803FC7828031E073F62157574A4D020B60610009", "ting (Telecommunication)" }, + { "3B9F96803FC7828031E073FE211B57AA8660F0010011EE", "eSIM.me pluggable eSIM (Telecommunication)\nhttps://esim.me/" }, + { "3B9F96803FC7828031E073FE211B633A204E8300900031", "eSIM (Telecommunication)" }, + { "3B9F96803FC7828031E075F62157210355020B60500019", "st33g1m2 (Telecommunication)\nhttps://www.st.com/en/secure-mcus/st33g1m2.html" }, + { "3B9F96803FC7A08031E073F62116574A4D020233456377", "ISIS-Ready T-Mobile Sim Card (Telecommunication)" }, { "3B9F96803FC7A08031E073F62156574A4D020B3444005B", "Norwegian telenor (Telecommunication)\nhttp://www.telenor.no" }, { "3B9F96803FC7A08031E073F62157574A4D020B34546329", "Orange FR - opa (Telecommunication)" }, { "3B9F96803FC7A08031E073FE211B63F100E8830090005E", "UICC CARD (Telecommunication)" }, { "3B9F96803FC7A08031E073FE211B6407689A00829000B4", "Orange SIM Card (Telecommunication)" }, { "3B9F96803FC7A08031E073FE211B64080503008290004F", "NFC-enabled SIM card of MTS Russia. (Telecommunication)" }, + { "3B9F96803FC7A08031E073FE211F6300690083819000AB", "GSM file system and SWP sample supplied with STMicro development kit (Other)" }, { "3B9F96803FC7A08031E073FE211F6441269100829000B3", "LTE Lab SIM Ver 1.3 (Telecommunication)" }, { "3B9F968131FE458065544312210831C073F6218081059A", "Scientific and Technological Research Council of Turkey (test card) (eID)" }, { "3B9F968131FE45806755454B41451212318073B3A180EA", "AKiS v1.2 on nxp chip" }, @@ -2691,10 +2961,12 @@ const static atr_t AtrTable[] = { { "3B9F968131FE45806755454B41451292318073B3A1806A", "AKiS v1.2.2 on infineon chip" }, { "3B9F968131FE45806755454B41451293318073B3A1806B", "AKiS v1.3 on infineon chip" }, { "3B9F968131FE5D00640428010231C073F701D000900065", "German eTicketing SAM (Transport)\nhttps://www.eticket-deutschland.de/" }, + { "3B9F968131FE6D00640428010231C073F701D000900055", "VDV-KA Secure Access Module (German Public Transport) (Transport)\nhttps://www.eticket-deutschland.de/" }, { "3B9F968131FE9D006405A0030431C073F701D000900028", "Deutsche Telekom AG, TeleSec PKS ECC Signature Card (PKI)\nhttps://www.telesec.de/en/signaturecard" }, { "3B9F9681B1FE451F070064051EB20031B0739621DB0590005C", "SignTrust (www.signtrust.de)\nInfinion SLE66CX680PE with Starcos 3.2\nhttp://www.deutschepost.de/dpag?xmlFile=link1015459_49595" }, { "3B9F9681B1FE451F070064051EB20331B0739621C005900044", "German Dentist ID (eID)" }, { "3B9F96C00A1FC38031E073FE211B63F100AD830F9000DA", "SIM SFR Pro (French Mobile Operator)" }, + { "3B9F96C00A1FC68031E073FE211F65D00233131B810FFA", "Tinkoff SIM card (Telecommunication)" }, { "3B9F96C00A1FC78031E073FE211B63F100AD830F9000DE", "H3G (Italy) UMTS USIM card" }, { "3B9F96C00A1FC78031E073FE211B65D0011009228100F3", "Verizon 4G LTE SIM Card (Telecommunication)\nhttp://www.verizonwireless.com/support/information/4gsim.html" }, { "3B9F96C00A1FC78031E073FE211B65D0018E0E3281007A", "Rogers 3G SIM card" }, @@ -2702,6 +2974,7 @@ const static atr_t AtrTable[] = { { "3B9F96C00A1FC78031E073FE211F65D0020B11A4810F7E", "Telia Finland Oyj, network operator LTE (Telecommunication)" }, { "3B9F96C00A1FC78031E073FE211F65D013370F3B810FD2", "Gemalto Security Element (PKI)" }, { "3B9F96C00A31FE45435431690B010001000000000000000D", "EU smart tachograph card (driver/company/control/workshop)\nhttps://dtc.jrc.ec.europa.eu/" }, + { "3B9F96C00A31FE45754A6176656C696E2D4F5320312E3051", "Vietnam ID Card (eID)" }, { "3B9F96C00A3FC6A08031E073FE211B65D001740EEB810FD7", "Verizon '4G LTE' USIM (Telecommunication)" }, { "3B9F96C00A3FC6A08031E073FE211B65D001740F50810F6D", "5G (Telecommunication)" }, { "3B9F96C00A3FC6A08031E073FE211F65D001900F3B810FE6", "Verizon US USIM card (Telecommunication)" }, @@ -2715,6 +2988,7 @@ const static atr_t AtrTable[] = { { "3B9F97801FC68031E073FE211B6441442100829000E5", "SAKURA Internet SIM (Telecommunication)\nhttps://www.sakura.ad.jp/services/sim/" }, { "3B9F97801FC68031E073FE211B65CA010E060B81059E", "rain Networks - R15 4G Sim Card (Telecommunication)\nhttp://www.rain.co.za" }, { "3B9F97801FC78031E073FE211367980801120401045B", "Tmobile Sim card (Telecommunication)" }, + { "3B9F97801FC78031E073FE2113679814010202010257", "Orange SIM from Egypt (Telecommunication)" }, { "3B9F97803FC7828031E073FE211F640856210082900019", "eSIM card (Telecommunication)" }, { "3B9F97803FC7828031E073FE211F6409069200829000FB", "Ubigi Transatel esim (Telecommunication)" }, { "3B9F978131FE458065544312210831C073F621808105", "Republic of Turkey Identity Card (eID)\nhttps://bilgem.tubitak.gov.tr/en/icerik/national-identity-card-tr-nc-identity-card" }, @@ -2761,6 +3035,7 @@ const static atr_t AtrTable[] = { { "3BB7110081319043A5..............", "Siemens CardOS/M V1.4 (SLE44C80S)" }, { "3BB7110081319043C517B09D19221E1F", "CryptoTech blank access/authentication card (Other)\nhttp://www.cryptotech.com.pl/" }, { "3BB7110081319053B5..............", "CardOS EM/V1.4 (SLE44CR80S)" }, + { "3BB711008131FE432025854702202866", "Research Institute of Applied Information Technologies (Other)\nhttp://dodatok.osvita.net/" }, { "3BB711008131FE4320283FB50320313B", "Research Institute of Applied Information Technologies (Other)\nhttp://dodatok.osvita.net/" }, { "3BB718008131704310434E5452563253", "Avtor SecureToken (PKI)" }, { "3BB718008131FE6553504B323490005A", "Giesecke & Devrient Starcos 2.4" }, @@ -2770,6 +3045,8 @@ const static atr_t AtrTable[] = { { "3BB794008131FE6553504B32339000D1", "Giesecke & Devrient Starcos 2.3\nDeutsche Bank WebSign (RSA-Card)\nG&D StarSign Token\nOsakidetza ONA (eID)\nhttp://www.osakidetza.euskadi.eus/r85-ckserv01/es/contenidos/nota_prensa/ruedasanidad35/es_rs/ruedasanidad35_c.html" }, { "3BB813008131205D0057696E4361726402", "SmartCard for Windows 1.1" }, { "3BB813008131FA524348544D4F494341A5", "citizen digital certificate (PKI)\nhttp://moica.nat.gov.tw/" }, + { "3BB897008131FE45FFFF148230502300F1", "UAE Emirates ID (eID)\nhttps://www.icp.gov.ae" }, + { "3BB89700C00831FE45FFFF148230502300B8", "Infineon SECORA ID X (JavaCard)" }, { "3BB918008131FE9E8073FF614083000000DF", "Serbian Identity Card\nThis is the new Serbian biometric identity card (every adult cityzen\nmust have). The chip contains owners picture, name, date and place\nof birth, current address, unique ID number and fingerprint." }, { "3BB9940040144747334D4838353330", "T D1 GSM card (Telecommunication)" }, { "3BB9940040144747334E4838363430", "GSM-SIM card of the Austrian mobile phone provider One\nhttp://www.one.at\nProximus SIM - Belgium (SetCOS?)\no2 GSM-SIM card Germany 2003" }, @@ -2790,6 +3067,7 @@ const static atr_t AtrTable[] = { { "3BBA96008131865D0064056002033180900066", "Telesec TCOS 2 (SLE66P)\nTCOS 2.0 (on CX320P)\nTeleSec Netkey Card" }, { "3BBA96008131865D00640560020331809000667001040530C9", "TeleSec Netkey E4 Card" }, { "3BBA96008131865D0064057B0203318090007D", "TeleSec NetKey Card\nDeutsche Post card (tcos)" }, + { "3BBB18008131FE4580670518B1020184008105E0", "STARCOS Smart Card (Other)\nhttps://www.gi-de.com/de/identities/unternehmenssicherheit/signaturkarte" }, { "3BBB1800C01031FE4580670412B003030000810138", "Giesecke & Devrient Star Sign Card, STARCOS 3.0 DI, 72 KB, RSA2048 bit\nGiesecke & Devrient Smartc@fe Expert 32K v2.0" }, { "3BBB1800C01031FE4580670412B00303000081053C", "Philips Smart MX\nSzczecin University of Technology in Poland student identity card (Elektroniczna Legitymacja Studencka = student identity card)\nCSOB bank, Czech Republic\nCATCert (Agencia Catalana de Certificacio) catalan government workers identity card" }, { "3BBB1800C03E31FE654726442054534D20312E30B7", "Italian Tachograph Driver Card" }, @@ -2873,9 +3151,9 @@ const static atr_t AtrTable[] = { { "3BD0A8FF81F1FB24001FC3F4", "Philips DESFire SAM" }, { "3BD218008131FE450101C1", "Dutch License Plate Card (RDW)\nhttps://commons.wikimedia.org/wiki/File:Kentekencard_voorzijde_1_december_2013.jpg" }, { "3BD218008131FE58C90114", "Atos CardOS5 (PKI)\nhttp://atos.net/NR/rdonlyres/17C7BDD0-225B-4A58-B9A4-438EA3F3238A/0/74743_20120830_160149_cardos_v5_0__datenblatt_en.pdf" }, - { "3BD218008131FE58C90217", "WVDP (West Valley Demonstration Project?) (PKI)" }, + { "3BD218008131FE58C90217", "Atos CardOS 5.3 (PKI)\nhttp://www.atos.net/cardos" }, { "3BD218008131FE58C90316", "Austrian 'RKS-Card' issued by GlobalTrust (PKI)\nhttps://secure.globaltrust.eu/info-rksv.html" }, - { "3BD218008131FE58C90411", "Identity Card in Slovakia with security chip and e-signature issued after 2021-06-21 (eID)" }, + { "3BD218008131FE58C90411", "Identity Card in Slovakia with security chip and e-signature issued after 2021-06-21 (eID)\nD-TRUST Card 4.1 Standard, qualified signature card" }, { "3BD218008131FE58CA6076", "CardOS IoT V5.4 (PKI)\nhttps://atos.net/wp-content/uploads/2018/11/ct_181127_lpm_cardos_iot_v5-4_fs_en4_web.pdf" }, { "3BD21802C10A31FE58C80D51", "Siemens Card CardOS M4.4" }, { "3BD396FF81B1FE451F078081052D", "German public health insurance card (Elektronische Gesundheitskarte eGK), 2nd generation (G2) (HealthCare)" }, @@ -2886,6 +3164,7 @@ const static atr_t AtrTable[] = { { "3BD518FF8191FE1FC38073C8211309", "Athena IDProtect Key (v2)\nhttp://www.athena-scs.com/product.asp?pid=33" }, { "3BD5950400AE01020101", "Axalto Cyberflex Access 64K v2b SM 1.1" }, { "3BD595FF8091FE1FC38073C8211385", "Athena IDProtect - Cryptographic Java Card\nhttp://www.athena-scs.com/product.asp?pid=32" }, + { "3BD596028031FE654F734549441F", "AVR128DA32 microcontroller based open source EID smartcard with RSA and ECC. (eID)\nhttps://oseid.sourceforge.io/" }, { "3BD596FF8191FE1FC34332333030CC", "HID Global - Crescendo C2300 (PKI)\nhttps://www.hidglobal.com/products/cards-and-credentials/crescendo/c2300" }, { "3BD6180080B1806D1F038051006110309E", "Atmel/Athena T0 PC/SC Compliance Test Card No. 1" }, { "3BD618008131FE7D415350204F5383", "ASP FIXED CHAL1, 2, 3 and 4 (Other)" }, @@ -2893,14 +3172,17 @@ const static atr_t AtrTable[] = { { "3BD6960081B1FE451F078031C1521118F8", "smart card from NASA, 2019 (PKI)" }, { "3BD6960081B1FE451F878031C152211949", "DHS CAC card (PKI)" }, { "3BD6960081B1FE451F878031C152411A2A", "Identiv SCR3310 v2.0 (eID)" }, - { "3BD6970081B1FE451F078031C1521118F9", "NASA Personal Identity Verification (PIV) card (eID)" }, + { "3BD6970081B1FE451F078031C1521118F9", "NASA Personal Identity Verification (PIV) card (eID)\nIDEMIA Cosmo V8.0 with a PIV applet" }, { "3BD6970081B1FE451F078031C1521119F8", "Secure badge (PKI)" }, { "3BD6970081B1FE451F878031C152211948", "DOS PIV (PKI)" }, { "3BD6970081B1FE451F878031C152211A4B", "ID-One PIV 2.4 (P/N 1501381) from IDEMIA (Other)" }, - { "3BD6970081B1FE451F878031C152411A2B", "Oberthur Technologies ID-One PIV/CIV on V8 Device (eID)\nhttps://csrc.nist.gov/csrc/media/projects/cryptographic-module-validation-program/documents/security-policies/140sp2986.pdf" }, + { "3BD6970081B1FE451F878031C152411A2B", "Oberthur Technologies ID-One PIV/CIV on V8 Device (eID)\nhttps://csrc.nist.gov/csrc/media/projects/cryptographic-module-validation-program/documents/security-policies/140sp2986.pdf\nIDEMIA Cosmo V8.1 with a PIV applet" }, + { "3BD81800801F078031C1640806920F", "US Government CAC (PKI) / IDEMIA Cosmo v8 (PKI)\nhttps://www.idemia.com/id-one-piv-card" }, + { "3BD81800801F078031C1640806920FDF", "US DoD Common Access Card (IDEMIA Cosmo v8) (PKI)" }, { "3BD8180080B1FE451F078031C1640806920FD5", "Oberthur Cosmo v8 (PKI)" }, { "3BD818FF8131FE458064041BB42A8105D5", "Schweizerische Krankenversicherungskarte KVG (HealthCare)" }, { "3BD818FF81B1FE451F038064041AB403810561", "D-Trust multicard advanced 3.1\nGerman public health insurance card ('Gesundheitskarte'), issuer SBK 'Siemens Betriebskrankenkasse'" }, + { "3BD896008031FE4400531200840F90001F", "Cape Verde National Identity Card (CNI) (eID)\nhttps://sniac.cv/cartao-nacional-de-identificacao/" }, { "3BD8960081B1FE451F0743485447504B494ADD", "Citizen Digital Certificate, Taiwan (PKI)\nhttp://moica.nat.gov.tw/" }, { "3BD896FF8131FE458064041BB42A81055B", "Swiss LAMal health insurance card" }, { "3BD911008131FE8D0000464F4D53312E3132", "TFOMS (eID)\nhttp://www.samtfoms.ru" }, @@ -2919,13 +3201,17 @@ const static atr_t AtrTable[] = { { "3BDA13FF8131FB468012392F31C173C601C03B", "My Number Card (The Social Security and Tax Number System in JAPAN) (eID)\nhttp://www.cas.go.jp/jp/seisaku/bangoseido/english.html" }, { "3BDA1802C10A31FE584B53776973735369676EA9", "SuisseID Post - ATOS CardOS 4.x (eID)\nhttps://postsuisseid.ch/" }, { "3BDA18FF8191FE1FC350564A434F503353494472", "J3H145 (P6 SecID) purchased from FUTAKO Ltd., Taiwan (JavaCard)\nhttp://www.javacardsdk.com" }, + { "3BDA18FF8191FE1FC380641211111073C0C1801B", "Belarus national identity card (passport)\nhttps://eng.belta.by/infographica/view/id-cards-in-belarus-7095/" }, { "3BDA18FF81B1FE451FC3546963546F6B20322E3068", "TikTok 2.0 (PKI)" }, { "3BDA18FF81B1FE451FC3546963546F6B20332E3069", "TicTok 3.0 (PKI) (PKI)\nhttps://en.cryptoshop.com/products/cryptas-tictok-v3-basisartikel.html" }, { "3BDA18FF81B1FE751F030031C573C001400090000C", "OpenPGP Card V2" }, { "3BDA18FF81B1FE751F030031F573C001600090001C", "OpenPGP Card V3" }, { "3BDA9400004D4D41524A2B33399000", "SIM card from Vodafone Spain" }, { "3BDA9500400A2508004053434F535441", "Card used for issuing commodity to benificiary for rice, wheat and more (Other)" }, + { "3BDA96FF8031FE454D696E694C6F61646572AB", "iClass SE Processor (Miniloader Mode) (Other)\nhttps://www.hidglobal.com/products/embedded-modules/iclass-se/sio-processor" }, + { "3BDA96FF8031FE45536E6D704C6F61646572A8", "iClass SE Processor (SNMP Loader Mode) (Other)\nhttps://www.hidglobal.com/products/embedded-modules/iclass-se/sio-processor" }, { "3BDA96FF8131FE45805631B85349434181057B", "STARCOS 3.5 ID ECC C1R (PKI)\nhttps://www.gi-de.com/fileadmin/user_upload/MS/Certificates/STARCOS35_ID_ECC_TABLES.pdf" }, + { "3BDA96FF8191FE1FC343323330302D46495053E2", "Crescendo 2300 FIPS (JavaCard)" }, { "3BDA96FF81B1FE451F0780584943412056322E30E9", "Starcos chip card from Giesecke & Devrient (PKI)\nhttps://ica.cz/functionality-smart-card" }, { "3BDB11FF5000FF0000000000000007921603", "NEC V-WAY64 v2.1" }, { "3BDB1800801F030031C06477E303008290004F", "Oberthur ID-One Cosmo 64K V5.2" }, @@ -2948,9 +3234,10 @@ const static atr_t AtrTable[] = { { "3BDB960080B1FE451F830031C064102301000F900063", "Extremenian Health Service target (HealthCare)\nhttps://saludextremadura.ses.es/web/preguntas-frecuentes" }, { "3BDB960080B1FE451F830031C0641A1801000790005A", "Ercom CRYPTOSMART\nhttp://www.ssi.gouv.fr/entreprise/qualification/gamme-cryptosmart-pour-la-securisation-des-smartphones-et-des-tablettes/" }, { "3BDB960080B1FE451F830031C0641A1801000F900052", "Serbian Car registration ID card\nhttp://blog.goranrakic.com/archives/2011/07/citanje_saobracajne_dozvole_sa_cipom.html" }, - { "3BDB960080B1FE451F830031C0641A71010007900033", "ChamberSign Gemalto USB Shell Token V2 - Certificat Audacio ** (eID)\nhttp://www.chambersign.fr/certificat-rgs-audacio/" }, + { "3BDB960080B1FE451F830031C0641A71010007900033", "ChamberSign Gemalto USB Shell Token V2 - Certificate Audacio ** (eID)\nhttp://www.chambersign.fr/certificat-rgs-audacio/" }, { "3BDB960080B1FE451F830031C064B0FC100007900005", "Oberthur Cosmo V7 debug card (SDK)" }, { "3BDB960080B1FE451F830031C064B0FC10000F90000D", "ID-One PIV (that's the only non-numeric identifying mark) (PKI)" }, + { "3BDB960080B1FE451F830031C064BAFC10000790000F", "Oberthur ID-One Cosmo v7.0 80K (eID)\nhttps://www.ssi.gouv.fr/uploads/IMG/certificat/ANSSI-CC-cible_2011-64en.pdf" }, { "3BDB960080B1FE451F830031C064BE1B0100019000FB", "Bank card" }, { "3BDB960080B1FE451F830031C064C30801000F90009B", "SIM Aruba (Italian provider)" }, { "3BDB960080B1FE451F830031C064C7FC100001900074", "Oberthur Cosmo (eID)\nhttp://www.stampit.org" }, @@ -2962,7 +3249,8 @@ const static atr_t AtrTable[] = { { "3BDB960081B1FE451F0380F9A0000003080000100018", "Oberthur CS PIV End Point v1.08 FIPS201 Certified" }, { "3BDB960081B1FE451F0380F9A0000003480000000149", "Fly Clear card" }, { "3BDB960081B1FE451F8380F9A0000003080000100098", "Oberthur Cosmo v7 128K with PIV applet\nhttp://www.smartcardfocus.com/shop/ilp/id~410/p/index.shtml" }, - { "3BDB96FF80B1FE451F870031C164093772130F9000F4", "French ID Card 2021 (eID)\nhttps://ants.gouv.fr/Les-titres/Carte-nationale-d-identite/La-puce-de-la-nouvelle-carte-nationale-d-identite" }, + { "3BDB96FF80B1FE451F870031C164093364490F9000BC", "cnie Carte Nationale d'Identite Electronique (eID)" }, + { "3BDB96FF80B1FE451F870031C164093772130F9000F4", "French ID Card 2021 (eID)\nhttps://ants.gouv.fr/nos-missions/les-titres-produits-par-l-ants/les-documents-d-identite/la-puce-de-la-nouvelle-carte-nationale-didentite" }, { "3BDB96FF8131FE4580670534B50201064081051B", "SINA STARCOS 3.5 BX-CombiCard+HSB (Other)" }, { "3BDB96FFC01031FE4580671501B403000900810521", "Digital Tachograph Card for Professional Driver\nolish driver card for digital tachograph" }, { "3BDC1802C10A31FE588031A873B0019B2460071320AA", "Public Services Card | Ireland (Other)\nhttps://psc.gov.ie/" }, @@ -2972,6 +3260,7 @@ const static atr_t AtrTable[] = { { "3BDC18FF8111C18073C821136605036351000233", "GoTrust Idem Key (Other)\nhttps://www.gotrustid.com/idem-key" }, { "3BDC18FF8111FE8073C82113660106013080018D", "Aladdin R.D. JaCarta LT (eID)" }, { "3BDC18FF8191FE1FC3060A2B06010401E910050203D1", "Caregiver card for Dutch Medical System called UZI (Unieke Zorgverlener Identificatie, Caring Unique Identification) (HealthCare)\nhttps://www.uziregister.nl/" }, + { "3BDC18FF8191FE1FC3060A2B06010401E910050204D6", "UZI (HealthCare)" }, { "3BDC18FF8191FE1FC38073C821136601060130040155", "Athena IDProtect Key Laser" }, { "3BDC18FF8191FE1FC38073C821136601061159000128", "JaCarta (PKI)\nhttp://www.aladdin-rd.ru" }, { "3BDC18FF8191FE1FC38073C8211366010B0352000538", "Athena IDProtect Smart Card Logon Card" }, @@ -2979,10 +3268,14 @@ const static atr_t AtrTable[] = { { "3BDC18FF8191FE1FC38073C821136605036057000255", "NXP IDProtect (X) (JavaCard)" }, { "3BDC18FF8191FE1FC38073C821136605036351000250", "JCOP3 SecID P60 CS (JavaCard)" }, { "3BDC96FF8111FE8031C8544356300573FFA1C03B", "NXP Javacard with Athena SCS OS (JavaCard)" }, + { "3BDC96FF8111FE8031C8544356350773FFA1C03C", "NXP JCOP 4, J3R200P0X3U/0ZA16CP NXD6.2 (JavaCard)" }, { "3BDC96FF81B1FE431FC30B46415245474F53414D5632CC", "Multismartcard SAM (used in proprietary Scheidt&Bachmann Smartcard Reader v2)" }, { "3BDD18008131FE4580F9A0000000770100700A90008B", "National ID Card of Peru issued by RENIEC from Oberthur" }, { "3BDD18008131FE4580F9A000000077010800079000FE", "Oberthur Cosmo v7 IAS ECC\nBrazilian 'e-CNPJ' card, issued by Certisign (Oberthur)" }, { "3BDD18008131FE45904C41545649412D65494490008C", "Identity card (eID) Republic of Latvia\nhttp://www.pmlp.gov.lv/lv/pakalpojumi/passes/eid.html" }, + { "3BDD18008191FE1FC3006646530803003671DF00008097", "Feitian K9Plus - ePass FIDO-NFC with PIV (Other)\nhttps://ftsafe.com/products/FIDO/NFC" }, + { "3BDD18FF8191FE1FC3006646530803003671DF00008068", "Feitian FIDO NFC Plus K9 Security Key (Other)\nhttps://www.ftsafe.com/products/FIDO/NFC" }, + { "3BDD18FF8191FE1FC3FF4F70656E506879736963616CF6", "Open Physical PIV-Compatible NXP SECID P60 (eID)\nhttps://openphysical.org/" }, { "3BDD18FFC080B1FE451FC30068D276000028040411009000C9", "Russian Federation driver card for the digital tachograph\nPolish driver card for digital tachograph" }, { "3BDD18FFC080B1FE451FC30068D276000028040971009000A4", "Worktime/driving style monitoring card (Transport)\nhttp://www.paetronics.fi/en/" }, { "3BDD96008010FE8031806301FFC073B3211B8105", "BIFIT iBank 2 USB Key (Bank)\nhttp://bifit.ua" }, @@ -3012,10 +3305,11 @@ const static atr_t AtrTable[] = { { "3BDF18008131FE588031B05202046405C903AC73B7B1D422", "Austrian 'e-Card' (=Health Card) of the 4th generation. (HealthCare)" }, { "3BDF18008131FE58AC31B05202046405C903AC73B7B1D422", "e-Card Austria (HealthCare)" }, { "3BDF18008131FE67005C49434DD49147D276000038330058", "Infineon SICRYPT Card Module D4 PC/SC Compliance Test Card" }, - { "3BDF18008131FE7D006B020C0182011101434E53103180FC", "Italian healtcare card (TS) National Service Card (CNS) (HealthCare)" }, - { "3BDF18008131FE7D006B040C0184011101434E53103180FC", "Italian healthcare card (TS) National Service Card (CNS) (HealthCare)\nhttp://www.regione.toscana.it/cartasanitaria" }, + { "3BDF18008131FE7D006B020C0182011101434E53103180FC", "Italian healthcare card (TS) National Service Card (CNS) (HealthCare)" }, + { "3BDF18008131FE7D006B040C0184011101434E53103180FC", "Italian healthcare card (TS) National Service Card (CNS) (HealthCare)\nhttp://www.regione.toscana.it/cartasanitaria\nhttps://www.agid.gov.it/it/piattaforme/carta-nazionale-servizi" }, { "3BDF18008131FE7D006B150C0180011101434E53103180E9", "Provider: Actalis S.p.A.\ncode: AT00006181\nhttp://www.actalis.it" }, { "3BDF18008131FE7D006B150C0181011101434E53103180E8", "Italian healthcare card (TS) National Service Card (CNS)\nCarta Regionale dei Servizi - Regione Lombardia\nTuscany TS-CNS\nhttp://www.regione.toscana.it/cartasanitaria" }, + { "3BDF18FF8091FE1FC3003138644790ECC273140150829000BB", "Ministry of Interior - France 'Agent Card' (Other)" }, { "3BDF18FF8131FE4580590180484944433730307300011B33", "Crescendo C700 + MiFare 4K\nhttp://www.smartcardfocus.com/shop/ilp/id~265/p/index.shtml" }, { "3BDF18FF8191FE1FC3003138644790ECC273140150829000BA", "Card store authentication and signature keys (JavaCard)\nhttps://ants.gouv.fr/Les-titres/Cartes-Agents/Adhesion/Telechargement-et-support" }, { "3BDF18FF8191FE1FC30031B8640000EC0073940000829000FE", "NXP Jcop3 P60 ChipDoc v7b4 (JavaCard)\nhttps://www.javacardos.com/store/products/10029" }, @@ -3025,6 +3319,7 @@ const static atr_t AtrTable[] = { { "3BDF18FF81F1FE43003F03834D494641524520506C75732053414D3B", "NXP SAM AV2 module" }, { "3BDF18FF81F1FE43003F03834D4946506C75732053414D3B53414D3B", "Mifare SAM -AV2 (PKI)" }, { "3BDF18FF81F1FE43003F07834D49464152452053414D204156333011", "NXP SAM AV3 module" }, + { "3BDF18FF910131FE4680319052410264050200AC73D622C099", "Acos-ID (AUSTRIACARD's Operating System) (Other)\nhttps://www.austriacard.com/digital-security/solutions/card-solutions/acos-id/" }, { "3BDF94FFC080B1FE451F03006AD2760000280415FA10040090006B", "UK Digital Tacho card (Other)" }, { "3BDF94FFC080B1FE451F03006AD2760000280415FA40040090003B", "DVLA Company Card (Transport)" }, { "3BDF9500801F878031A073FF21006345B105830F900060", "FUTURE CARD Normal ISO SIM (Telecommunication)" }, @@ -3038,11 +3333,14 @@ const static atr_t AtrTable[] = { { "3BDF960080B1FE451F838073BC9180F9A00000007780080201A4", "Latvian eSignature card (eID)\nhttps://www.lvrtc.lv/e-signature.html" }, { "3BDF960080B1FE451F870031C16408923201738421E0059000C5", "Company Card for Transport companies (Transport)" }, { "3BDF96008131FE4541434F532D4944303032382E3031366F", "Sri Lankan driving license [ web: motortraffic.gov.lk ] (eID)\nhttp://www.motortraffic.gov.lk/web/index.php?option=com_content&view=article&id=83&Itemid=140&lang=en" }, + { "3BDF96008131FE588031B05202056405A100AC73D622C020", "Austrian health insurance card 'e-card' (HealthCare)\nhttps://de.wikipedia.org/wiki/E-card_(Chipkarte)" }, { "3BDF960081B1FE451F838073CC91CBF9A0000003080000100079", "Test PIV Cards available for sale from NIST\nhttp://csrc.nist.gov/groups/SNS/piv/testcards.html" }, { "3BDF96FF8131FE455A018048494443313158587300011B09", "HID Crescendo iCLASS Px G8H" }, { "3BDF96FF8131FE4580590180504956434C41537300011BDE", "HID Global pivCLASS v1.0 (PKI)\nhttp://www.hidglobal.com/products/cards-and-credentials/pivclass/pivclass-smart-card" }, { "3BDF96FF8131FE45805B44452E42415F53433335328105B5", "Employee ID card from the Federal Employment Agency (Germany) (PKI)\nhttps://www.pki.arbeitsagentur.de/" }, { "3BDF96FF8131FE45805B44452E424E4F544B3130308105A0", "BeA - Certification Card for German Solicitors (Other)\nhttps://bea.bnotk.de/" }, + { "3BDF96FF81B1FE451F870031B96409377213738401E000000000", "National Identity Card of Slovakia (eID) (eID)\nhttps://en.wikipedia.org/wiki/Slovak_identity_card" }, + { "3BDF96FF910131FE4680319052410264050200AC73D622C017", "Acos-ID (AUSTRIACARD's Operating System) (Other)\nhttps://www.austriacard.com/digital-security/solutions/card-solutions/acos-id/" }, { "3BDF97008131FE588031B05202056405A100AC73D622C021", "Austrian healthcare insurance identification card (HealthCare)\nhttps://www.chipkarte.at" }, { "3BDF970081B1FE451F838073CC91CBF9A0000003080000100078", "NASA PIV Card (Other)" }, { "3BE000008131204030", "SmarTEC" }, @@ -3056,6 +3354,7 @@ const static atr_t AtrTable[] = { { "3BE500008121459C100100800D", "BIN 470132 -- BANK OF AMERICA VISA DEBIT -- GEMALTO MGY 0 U1090788B - 12/14 F8 00 89 (Bank)" }, { "3BE500008131FE45D00037008089", "ATM card for Standard Chartered, Taiwan" }, { "3BE500FF8131FE458073C601082D", "MUFG (.jp) (Bank)" }, + { "3BE6000080318066B1A30401110B83", "Java Jcop J2A040 (JavaCard)" }, { "3BE6000080318066B1A30401110B83009000", "VISA Credit Card (Bank)" }, { "3BE60000812145324B010101017A", "Axalto Cyberflex Palmera V5" }, { "3BE600FF8131FE4544492030324D70", "Alior Sync (Poland) - MasterCard Debit Card with PayPass (Bank)\nMasterCard Contactless Debit Card issued by Raiffeisen Bank in Czech Republic\nDebit MasterCard with paypass issued by Bank Zachodni WBK (Poland)\nDebit MasterCard with paypass issued by AliorSync" }, @@ -3075,6 +3374,7 @@ const static atr_t AtrTable[] = { { "3BE700FF8131FE458031C073C62148BE", "Japanese ETC (Electronic Toll Collection System) card (Transport) and Credit card (Issuer: Toyota) (Transport)" }, { "3BE700FF81B1FE451F018031C073C6214820", "Japanese ETC (Electronic Toll Collection System) card (Transport)" }, { "3BE8000040FA0073C84011009000", "KEBTechnology KONA USB SmartCard (Other)" }, + { "3BE800008031FE450073C8401300907DE7", "National Health System of Spain - Consejeria de Sanidad y Servicios Sociales - JUNTA DE EXTREMADURA (HealthCare)\nhttps://www.juntaex.es/es/lajunta/consejo-de-gobierno/vicepresidencia-segunda-y-consejeria-de-sanidad-y-servicios-sociales/servicio-extremeno-de-salud" }, { "3BE80000813120450073C8400000900056", "Visa credit card for Standard Chartered, Taiwan" }, { "3BE800008131FE00506572736F53696DAA", "Simulated virtual smartcard, from project PersoSim (eID)\nhttps://persosim.de/?q=node/33" }, { "3BE800008131FE450073C8400000900088", "VISA Card (Skandinaviska Enskilda Banken) with Swedish BankID\nVISA card (Chinatrust Bank (Taiwan), dual-interface card with a Taipei Metro e-purse function)" }, @@ -3102,7 +3402,7 @@ const static atr_t AtrTable[] = { { "3BE900FFC11031FE55C80120504E34303132AD", "Siemens CardOS/M 3.0 (SLE66CX160S)" }, { "3BEA0000813120438065A2........72D6....", "IDClassic 3XX Cards (with MPCOS Applet)" }, { "3BEA0000813120438065A20101013D72D643A5", "GemXpresso Pro R3 32PK (MPCOS, T=1) (warn reset)" }, - { "3BEA00008131FE450031C173C840000090007A", "Nigerian eID Card (cold reset)\nChip is NXP JCOP 2.4.1R3" }, + { "3BEA00008131FE450031C173C840000090007A", "Nigerian eID Card (cold reset)\nChip is NXP JCOP 2.4.1R3\nDual BCR Signum Mastercard (bank) + Digital Signature Costa Rica (eID)\nhttps://bancobcr.com/wps/portal/bcr/bancobcr/personas/tarjetas/signum_firma_digital/" }, { "3BEA00008131FE45436F6D624F5320494900FE", "UBS VISA Gold Card\nMasterCard from lhv.ee\nNordea Bank Finland PLC Estonian Branch (ABnote)" }, { "3BEA00008131FE454A434F5033315632333290", "NAB VISA Debit card" }, { "3BEA00008131FE454A434F5034315632323195", "HID Crescendo C700\nhttps://www.hidglobal.com/products/cards-and-credentials/crescendo/c700" }, @@ -3173,6 +3473,7 @@ const static atr_t AtrTable[] = { { "3BEF00FF813166456563202049424D20332E3120202020", "IBM eCash" }, { "3BEF00FF813166456563202049424D20332E3120202020CF", "IBM eCash" }, { "3BEF00FF8131864549424D204D4643343030303038333143", "ComCard MFC 4.1" }, + { "3BEF00FF8131FE4141434F532046696F6E6131204C633666", "EUROBANK GR (Bank)\nNBG BANK (Bank)" }, { "3BEF00FF8131FE4541434F53204449616E6131204C63364E", "comdirect VISA card (Bank)\nhttps://www.comdirect.de/konto/karten.html#Visa-Karte" }, { "3BEF00FF8131FE4541434F53204449616E6132204C63364D", "Alior Bank SA (Bank)\nhttps://www.aliorbank.pl/" }, { "3BEF00FF8131FE4565630D12810156001F00006686080122", "Commerzbank signature card SECCOS (6 or 7) providing RAH security profile (Bank)\nhttps://www.chipkartenleser-shop.de/commerzbank/electronic-banking-chipkarten/commerzbank-signaturkarte-2710050006" }, @@ -3219,11 +3520,12 @@ const static atr_t AtrTable[] = { { "3BEF00FF8131FE458031C06B49424D204A65745A204D3239", "UBS Internet Card (IBM JetZ M2)" }, { "3BEF00FF8131FE458031E06B042105026B55555555555568", "MasterCard credit card for Mega International Commercial Bank, Taiwan (Bank)\nhttps://www.megabank.com.tw/creditcard/index.asp" }, { "3BEF00FF8131FF6549424D204D4643393232393238393017", "IBM MFC 4.22 (University of Cambridge smartchip card)" }, + { "3BF01100FF01", "Not a physical smart card. But a JavaCard simulator ATR with default configuration. (JavaCard)" }, { "3BF01200FF9181B17C451F019B", "Japanese Chijou Digital B-CAS Card (pay TV) (Pay TV)" }, { "3BF01200FF9181B17C451F0399", "Japanese Chijou Digital B-CAS Card (pay TV)" }, { "3BF01200FF9181B1EF451F030A", "Japanese Digital CATV C-CAS card" }, { "3BF01300001000", "MasterCard ETEC InterOp 27. This is an dual-app Maestro/MasterCard Credit EMV test card" }, - { "3BF01300008131FE45E8", "Healt care card Romania (HealthCare)\nhttp://www.cnas.ro/casmb/national-page/cardul-national-de-asigurari-de-sanatate-2.html" }, + { "3BF01300008131FE45E8", "Healthcare card Romania (HealthCare)\nhttp://www.cnas.ro/casmb/national-page/cardul-national-de-asigurari-de-sanatate-2.html" }, { "3BF01300FF9181B1FE461F0319", "Japan BS/CS 4K Satellite Broadcasting A-CAS Card (Pay TV)\nhttp://www.acas.or.jp/index.html" }, { "3BF2180000C10A31FE55C80675", "HID iCLASS P16K C4H\nproximity card used for both door locks and keystore" }, { "3BF2180002C10A31FE55C80776", "Siemens CardOS V4.3" }, @@ -3278,6 +3580,7 @@ const static atr_t AtrTable[] = { { "3BF711000140967071090E6CB6D6", "Carte pour decodeur tele de Neuf Telecom TV" }, { "3BF71300008131FE45464F4D534F4D53A9", "Health card Russian Federation" }, { "3BF71300008131FE454A434F503234....", "NXP JCOP v2.4.x (see hist bytes for more info)" }, + { "3BF71300008131FE4580654A5030310415", "Nichizeiren Denshi-shomei (eID)\nhttps://www.nichizeiren.or.jp/taxaccount/auth/fifth/" }, { "3BF71800008031FE45736674652D6E66C4", "SmartCafe Expert 3.2 72K" }, { "3BF71800008031FE45FE42475265494424", "Bulgarian eID PKI card pilot on IFX SLE78 jTOP (PKI)" }, { "3BF71800008131FE458055433776706B28", "Only labeled 'J35110', dual interface (JavaCard)" }, @@ -3292,13 +3595,15 @@ const static atr_t AtrTable[] = { { "3BF81300008131FE15597562696B657934D4", "Yubico Yubikey 4 OTP+CCID" }, { "3BF81300008131FE4546494445534D4F318E", "Fidesmo Card with Dual Interface (JavaCard)\nhttp://shop.fidesmo.com/product/fidesmo-card-dual-interface" }, { "3BF81300008131FE454A434F50763234....", "NXP JCOP v2.4.x (see hist bytes for more info)" }, - { "3BF81300008131FE454A434F5076323431B7", "Nigerian eID Card (blank card)\nChip is NXP JCOP 2.4.1R3" }, + { "3BF81300008131FE454A434F5076323431B7", "Nigerian eID Card (blank card)\nChip is NXP JCOP 2.4.1R3\nBank of Hawaii (Bank)\nhttps://www.boh.com/\nLA BANQUE POSTALE (Bank)\nhttps://www.labanquepostale.fr/\nbnpparibas (Bank)\nhttp://www.bnpparibas.com/\nJcop040 (JavaCard)\nJcop21 (JavaCard)\nVisa debit classic (Bank)\nhttp://www.jpmorganchase.com/\nJPMorgan Chase (Bank)\nVisa (Bank)\nhttps://unitedfcu.com/" }, { "3BF81300008131FE454A4F5076323431B7", "Nigerian eID card (eID)" }, { "3BF81300008131FE455049564B45593730FF", "PIVKey CP70 (PKI)\nhttps://pivkey.com/" }, { "3BF81300008131FE455241414B43327635CB", "Raak C2 Smart Card (PKI)\nhttp://www.raaktechnologies.com/software-downloads-documentation/" }, { "3BF81300008131FE45534B555001000000FC", "Silesian Card of Public Services (Transport)\nhttps://portal.kartaskup.pl/" }, { "3BF81300008131FE45536D617274417070F8", "national Lithuania ID card" }, { "3BF81300008131FE45FF4A32413034300012", "MIDAS Card Diversification Key JavaCard (J2A040) (Bank)\nhttps://github.com/kategray/midas" }, + { "3BF81300FF108053430663010F900000", "Affinity CUIA Debit (JavaCard)\nhttps://www.affinitycuia.org" }, + { "3BF81300FF910131FE41534C4A01305023100D", "Walden Mutual Bank (Bank)\nhttps://www.waldenmutual.com/sustainable-bank-for-individuals#footnote-s0-4" }, { "3BF81800008031FE450073C8401300900092", "G&D StarSign Token" }, { "3BF81800008131FE450073C8400000900080", "NXP JCOP 31 V2.2 36K - S/C I/F" }, { "3BF81800008131FE450073C8401300900093", "Giesecke & Devrient Sm@rtCafe Expert 3.0" }, @@ -3306,6 +3611,7 @@ const static atr_t AtrTable[] = { { "3BF81800008131FE454A434F5076323431BC", "NXP J2A080 JavaCard" }, { "3BF81800FF8131FE450073C840000090007F", "NXP JCOP 10\nNXP JCOP 31 (contact interface)" }, { "3BF81800FF8131FE454A434F507632343143", "VIVOtech SAM\nNXP JCOP V241\nNXP J3A081 JavaCard (contact interface)" }, + { "3BF89600008031FE470073C840000090000D", "Italian driver tachograph smartcard (Transport)\nhttps://www.to.camcom.it/cartatachigrafica" }, { "3BF89600008131FE4400739401C00F9000DD", "fourth-generation Hong Kong permanent identity card (Other)\nhttps://en.wikipedia.org/wiki/Hong_Kong_identity_card" }, { "3BF89600008131FE454A434F507632343132", "NXP JCOP 2.4.1 (JavaCard)" }, { "3BF91100008131FE45436F6D624F53205600AA", "VISA Card (Bank)" }, @@ -3334,6 +3640,9 @@ const static atr_t AtrTable[] = { { "3BF99600008031FE4553434537200000202027", "G&D SmartCafe Expert 7 (JavaCard)" }, { "3BF99600008031FE4553434537200300204642", "ActivIdentity Activkey Sim (PKI)\nhttps://www.hidglobal.com/products/cards-and-credentials/activid/usb-tokens" }, { "3BF99600008031FE4553434537200F0020464E", "Giesecke & Devrient (DoD Alternate Token) G+D Sm@rtCafe Expert v7.0 144K DI #3 (PKI)" }, + { "3BF99600008031FE4553434537202000202007", "Serbian Identity Card (eID) (eID)" }, + { "3BF99600008031FE45534345372047434E335E", "Serbian Identity Card (eID)" }, + { "3BF99600008031FE455343453720474E335E", "Serbian Identity Card (eID)" }, { "3BF99600008131FE45454F4E43617264563173", "eONCard V1 (PKI)" }, { "3BF99600008131FE4553434537200E00202028", "Giesecke & Devrient GmbH StarSign CUT S" }, { "3BF99600008131FE45535049564B4559373028", "Taglio PIVKey C980 (PKI)\nhttps://www.pivkey.com" }, @@ -3348,25 +3657,32 @@ const static atr_t AtrTable[] = { { "3BFA1300008131FE450031C173C8400000900079", "Nigerian eID Card (warm reset)\nChip is NXP JCOP 2.4.1R3" }, { "3BFA1300008131FE454465786120434620763198", "Dexa Systems Crossfire Card (PKI)\nhttp://www.dexasystems.com/products-services/products/dexa-smartcards-credential-tokens-peripherals" }, { "3BFA1300008131FE454A434F503.3.56323332..", "JCOPxx/yy v2.3.2 (see hist bytes for more info)" }, + { "3BFA1300008131FE454A434F50323156323331", "J2A040 JCOP (JavaCard)" }, { "3BFA1300008131FE454A434F5032315632333191", "NXP JCOP 21 V2.3.1 36K" }, { "3BFA1300008131FE454A434F5032315632343196", "NXP JCOP 2.1 V 2.4.1 (JavaCard)" }, { "3BFA1300008131FE454A434F50343156", "JCOP41 V221" }, { "3BFA1300008131FE454A434F5034315632333197", "JCOP41 /72K (eID)" }, { "3BFA1300008131FE454A434F50763234........", "NXP JCOP v2.4.x (see hist bytes for more info)" }, + { "3BFA1300008131FE54A434F503233191", "Jcop (JavaCard)" }, { "3BFA1300FF813180450031C173C00100009000B1", "OpenPGP" }, { "3BFA1800008031FE45FE654944202F20504B4903", "Estonian Identity Card (EstEID v3.5 (10.2014) cold) (eID)\nhttp://id.ee/" }, { "3BFA1800008131FE4506082A841001876E0805BC", "Dutch Rijkspas (eID)" }, - { "3BFA1800008131FE4506082A841001876E0807BE", "Rijkspas (identification card dutch government employees) (eID)\nhttps://nl.wikipedia.org/wiki/Rijkspas\nDutch goverment multifunctional smartcard (Other)\nhttps://nl.wikipedia.org/wiki/Rijkspas" }, - { "3BFA1800008131FE45060860841001876F0602FE", "Card used by the Dutch health insurers to give medical personell access to patient insurance information" }, + { "3BFA1800008131FE4506082A841001876E0807BE", "Rijkspas (identification card dutch government employees) (eID)\nhttps://nl.wikipedia.org/wiki/Rijkspas\nDutch government multifunctional smartcard (Other)\nhttps://nl.wikipedia.org/wiki/Rijkspas" }, + { "3BFA1800008131FE45060860841001876F0602FE", "Card used by the Dutch health insurers to give medical personnel access to patient insurance information" }, + { "3BFA1800008131FE4546534A434F503453494480", "NXP Java Card JCOP4 P71 GP2.3 JC3.0.5 (JavaCard)\nhttps://www.javacardsdk.com/product/j3r180sim/" }, { "3BFA1800008131FE454A33413034305632343184", "NXP J3A 40K\nJava Card v2.2.2 - Global Platform v2.2.1\nDual-interface functionality (features 1K Mifare emulation)" }, { "3BFA1800008131FE454A33413038315632343189", "NXP JCOP CJ3A081\nhttp://www.usmartcards.com/media/downloads/492/NXP%20P5CX012%2002X%2040%2073%2080%20144%20%20%202011.pdf" }, + { "3BFA1800008131FE454A3344303831563234328F", "AustriaCard Dual Interface Unpersonalized EMV Cards (Bank)\nhttps://www.austriacard.com" }, { "3BFA1800008131FE454A434F503431563232319D", "NXP JCOP 41 v2.2.1 72k SmartCard I/F" }, { "3BFA1800008131FE454A546178436F72655631B2", "Taxpayer Portal Authentication for Fiji Revenue & Customs Service taxpayer portal (PKI)" }, { "3BFA1800008131FE454D4F54494F4E0000900760", "SIM card (Telecommunication)" }, { "3BFA1800008131FE4550564A434F5033454D5694", "NXP JCOP3 J3H082 Java Card 3.0.4 Dual-Interface (JavaCard)\nhttps://www.cardlogix.com/product/nxp-jcop3-j3h082-java-card-3-0-4-j3h081-dual-interface/" }, + { "3BFA1800008131FE4550564A434F503453494493", "National Health Insurance (Taiwan) (HealthCare)" }, { "3BFA180000910131FE4550564A434F503453494482", "Supposed P71 SecID purchased from a Chinese manufacturer (JavaCard)" }, + { "3BFA180000910131FE456BD1936AC2F28547E164CC", "J3R180, NXP JCOP4 JC3.0.5 Classic, GP2.3, SECID (JavaCard)\nhttps://www.cardlogix.com/product/nxp-jcop-4-java-card-3-0-5-classic/" }, { "3BFA180002C10A31FE584B53776973735369676E89", "SuisseId card (used for qualified signatures)\nhttp://postsuisseid.ch/de/suisseid\nhttp://www.suisseid.ch/" }, { "3BFA1800FF10004A546178436F72655631", "NXP JCOP4 J3R200 P71 (JavaCard)" }, + { "3BFA1800FF8031FE450031807394410000900090", "Kazakhstan Identity Card 2022 (eID)" }, { "3BFA1800FF8131FE454A434F5032315632333165", "TrubDemax healthcare card\nJCOP 21 / 72k" }, { "3BFA1800FF8131FE454A434F5034314332303074", "HID Crescendo C200\nhttps://www.hidglobal.com/sites/hidglobal.com/files/resource_files/crescendo-c200-c700-smart-card-ds-en.pdf" }, { "3BFA1800FF8131FE454A434F5034315632323162", "JCOP41\nHID Crescendo C700\nhttp://www.hidcorp.com/\nShould be compatible to RAAK\nhttp://www.raaktechnologies.com/\nMarx CrypToken MX2048-JCOP USB Token" }, @@ -3385,6 +3701,9 @@ const static atr_t AtrTable[] = { { "3BFB1300FF10800031C164086032060F9000", "Stripe Issuing Card (Bank)" }, { "3BFB1300FF10800031C164086032100F9000", "Varo (Bank)" }, { "3BFB1300FF10800031C164089862210F9000", "Visa Debit (Bank)" }, + { "3BFB1300FF10800031C164089862290F9000", "Bank Card (Bank)" }, + { "3BFB1300FF10800031C1640924331E0F9000", "TransferWise Debit Card (Bank)\nhttps://wise.com/" }, + { "3BFB1300FF10800031C164096441360F9000", "Truist Business Debit (Bank)" }, { "3BFB1300FF813180755A43352E3520524556204763", "ZeitControl BasicCard 5.5" }, { "3BFB1300FF813180755A43352E3620524556204D6A", "ZeitControl BasicCard ZC5.6 user-programmable smart card\nhttp://www.basiccard.com/index.html?overview.htm" }, { "3BFB1300FF813180755A43362E3520524556204364", "ZeitControl BasicCard 6.5, multiapplication with 30 kByte EEPROM" }, @@ -3423,7 +3742,9 @@ const static atr_t AtrTable[] = { { "3BFD1300008131FE4541373030364347203234325231D6", "YubiKey NEO (token)" }, { "3BFD1300008131FE454A434F50323176323331474454E1", "National Health Insurance Card, Taiwan" }, { "3BFD1300008131FE45543D314A323133364B56323331DC", "ic Card (JavaCard)" }, + { "3BFD1300008131FE4580318153534431738421C0810730", "Personal Info Card (eID)" }, { "3BFD1300FF10000031C173C8400052A1C5009000", "IBKR Prepaid MasterCard, Issued by Peoples Trust Company (Bank)\nhttps://www.interactivebrokers.com/en/index.php?f=26451" }, + { "3BFD1300FF10000031C173C8400052A1D5009000", "PayPal Business Debit Mastercard (Bank)\nhttps://www.paypal.com/merchantapps/appcenter/makepayments/bdmc" }, { "3BFD1800008031FE45003180718E6452D904008190005B", "Oberthur Card Systems, authentIC" }, { "3BFD1800008031FE4553434536302D43443038312D46C4", "Panama Electronic Signature (JavaCard)" }, { "3BFD1800008031FE45736674652063643134342D6E66D8", "SmartCafe Expert 3.2 144K Dual is a contact and contactless technology Java card from G&D with 144K on-board EEPROM for application and data storage. Certified to FIPS 140-2 Level 3 and Common Criteria EAL 5+. Supports specifications ISO 14443A T=CL and ISO 7816 T=1/0. (PKI)\nhttp://www.smartcardfocus.us/shop/ilp/id~523/smartcafe-expert-3-2-144k-dual/p/index.shtml" }, @@ -3449,7 +3770,10 @@ const static atr_t AtrTable[] = { { "3BFD9600008131FE4500000152332980000000000000A9", "DPI Guatemala (eID)\nhttp://www.renap.gob.gt/" }, { "3BFD9600008131FE450000015233672000000000000047", "DPI Guatemala (eID)\nhttps://www.renap.gob.gt/servicios/que-es-el-dpi" }, { "3BFD9600008131FE4500000161638620000000000000C5", "Renap Guatemala (eID)" }, + { "3BFD9600008131FE450000016687038000000000000003", "DPI (Documento Personal de Identificacion) Guatemala (eID)" }, { "3BFD9600008131FE45534C4A353247444C313238435257", "Universal JCard (Contact) with Infineon SLE78 (JavaCard)\nhttp://www.usmartcards.co.uk/cards/universal-jcard-contact-with-infineon-sle78-white-gloss-pvc-card.html" }, + { "3BFD9600008131FE45534C4A35324778787979797A5224", "J3R180 (JavaCard)" }, + { "3BFE130000108080318066B0840C016E0183009000", "Sberbank of Russia MIR debit card (Bank)" }, { "3BFE1300008131FE454A434F5076323431204C4F542057B1", "LOT test card (JavaCard)\nwww.lotgroup.eu" }, { "3BFE1800008031FE454573744549442076657220312E30A8", "Estonian Identity Card (EstEID 3.0 'JavaCard' cold)" }, { "3BFE1800008031FE4553434536302D43443038312D6E46A9", "G&D Sm@rtCafe Expert 6.0 (JavaCard)\nhttp://www.smartcardfocus.com/shop/ilp/id~684/smartcafe-expert-6-0-80k-dual-/p/index.shtml" }, @@ -3484,7 +3808,8 @@ const static atr_t AtrTable[] = { { "3BFF1100008171404200002101314252000[05]63........9000.*", "Smart Card 'The Smart Way to Login'\nUsed on Acer TravelMate to secure boot" }, { "3BFF11000240648069A2070103570000FF0083009000", "Gemplus GemXpresso" }, { "3BFF1100FF8131FE9580F9D2760000255444010083000000A0", "GiroCard Haspa Hamburger Sparkasse (Bank)\nhttps://www.haspa.de/privatkunden/ihr-online-banking/unser-angebot/haspa-digital-services-96198/" }, - { "3BFF13000010003101F1564011001900000000000000", "BVG Guthabenkarte (Prepaid Payment Card for Berlin/Brandenburg Public Transport) (Transport)\nhttps://www.bvg.de/de/service-und-kontakt/guthabenkarte" }, + { "3BFF13000010003100DE525001001500000000000000", "wisely debit (Bank)\nhttps://www.mywisely.com/" }, + { "3BFF13000010003101F1564011001900000000000000", "BVG Guthabenkarte (Prepaid Payment Card for Berlin/Brandenburg Public Transport) (Transport)\nhttps://www.bvg.de/de/service-und-kontakt/guthabenkarte\nRevolut Visa Glow-in-the-dark\nhttps://revolut.com/\nMasterCard debit - PayCenter - Corporate Benefit 'Sachbezugskarte' (Bank)\nhttps://paycenter.de/sachbezugskarte/" }, { "3BFF13000010003101F1564011001D00000000000000", "albo (Bank)\nhttps://www.albo.mx/" }, { "3BFF1300008131FE450031B9640404ECC17394018082900052", "AKD kID (eID)\nhttps://www.id.hr" }, { "3BFF1300008131FE450031B9640444ECC17394018082900012", "Croation personal ID card (eID)\nhttp://eid.hr/" }, @@ -3492,13 +3817,23 @@ const static atr_t AtrTable[] = { { "3BFF1300008131FE45434433690940000020202020202000F3", "VISA credit card (LBBW/Payback VISA) (Bank)" }, { "3BFF1300008131FE454F574F4B31302D4A................", "OWOK (One Web, One Key) login card\nhttp://www.reiner-sct.com/owok/\nReiner SCT loginCard\nhttps://cardlogin.reiner-sct.com/" }, { "3BFF1300008131FE4D8025A00000005657444B3333300600D2", "Datakey DCOS model 330 (DKCCOS 6.0 token)" }, + { "3BFF1300FF10000031C1738211064414D33470779000", "Visa Debit (Bank)\nhttps://www.chase.com/" }, { "3BFF1300FF10000031C173C821106441443533079000", "BRADESCO-CONTA SALARIO (Bank)" }, { "3BFF1300FF10000031C173C8211064414D3130079000", "Tangerine MasterCard (Bank)\nhttps://www.tangerine.ca/en/products/spending/creditcard/money-back/" }, + { "3BFF1300FF10000031C173C8211064414D3137079000", "PayPal Business Debit mastercard (Bank)\nhttps://www.paypal.com/merchantapps/appcenter/makepayments/bdmc" }, { "3BFF1300FF10000031C173C8211064414D3330079000", "VISA card issued by ING-DiBa AG (Germany) (Bank)" }, + { "3BFF1300FF10000031C173C8211064414D3331079000", "NAB VISA Debit (contact interface) (Bank)\nhttps://www.nab.com.au/" }, { "3BFF1300FF10000031C173C8211064414D3337079000", "VISA Credit Card (Postbank), Germany (Bank)" }, { "3BFF1300FF10000031C173C8211064414D3341079000", "BBVA debit card Uruguay. MIFRE Plus compatible. (Bank)\nScotiabank Passport Visa Infinite credit card (Bank)\nhttps://www.scotiabank.com/ca/en/personal/credit-cards/visa/passport-infinite-card.html" }, + { "3BFF1300FF10000031C173C8211064414D3343079000", "MasterCard issued by President's Choice Bank (Canada) (Bank)\nhttp://pcfinancial.ca/mastercard" }, { "3BFF1300FF10000031C173C8211064414D3347079000", "Chase Visa Debit Card (Bank)\nhttps://www.chase.com/bankinghelp" }, { "3BFF1300FF10000031C173C8211064414D3348079000", "BBVA blue VISA Debit Card (Bank)\nhttps://www.bbva.es/en/personas/productos/tarjetas/tarjeta-joven-ahora.html\nDesjardins Bonus Visa credit card (Bank)\nhttps://www.desjardins.com/ca/personal/loans-credit/credit-cards/bonus-visa/index.jsp" }, + { "3BFF1300FF10000031C173C8211064414D3430079000", "PNC BUSINESS VISA DEBIT (Bank)\nhttps://www.pnc.com/en/small-business/payments-and-processing/payment-cards/pnc-bank-visa-business-debit-card.html" }, + { "3BFF1300FF10000031C173C82110644930424E079000", "National Bank Debit Card with expiration date and cvv code (Bank)" }, + { "3BFF1300FF10000031C173C82110644932424E079000", "Interact, Visa Debit Bank of Novia Scotia (Bank)\nhttps://www.scotiabank.com/global/en/credit-card-terms-and-conditions.html" }, + { "3BFF1300FF10000031C173C82110644D30424E079000", "Debit payment card (Rabobank NL) (Bank)\nhttps://www.rabobank.nl/en/business/making-and-receiving-payments/payments/paying-with-your-bank-card" }, + { "3BFF1300FF10000031C173C82110645631424E079000", "Portuguese 'BancoCTT' Bank Card (Bank)\nhttps://www.bancoctt.pt/o-seu-dia-a-dia/cartao-de-credito-banco-ctt" }, + { "3BFF1300FF10000031C173C82110645631434E079000", "Chase Freedom Unlimited Credit Card (Bank)" }, { "3BFF1300FF10808031E06B04310502AF555555555555", "USAA EMV Visa Debit Card (Bank)" }, { "3BFF1300FF10808031E06B071405028A555555555555", "Tangerine Debit Card (Bank)\nhttps://www.tangerine.ca" }, { "3BFF1300FF10808031E06B08240502B5555555555555", "Tangerine Canada Interac debit card (Bank)\nhttps://www.tangerine.ca/" }, @@ -3508,7 +3843,9 @@ const static atr_t AtrTable[] = { { "3BFF1300FF8131FE45656311045002800008390004020502E9", "German 'Geldkarte' supplied by the Deutsche Bank in Karlsruhe,\nBaden-Wurttemberg, Germany." }, { "3BFF1300FF8131FE45656311045002800008540004230502A5", "Maestrocard/Geldkarte (Stadtsparkasse Haltern, Germany)" }, { "3BFF1300FF8131FE5D8025A00000005657444B33323005003F", "Datakey DCOS model 320" }, - { "3BFF1300FF918131FE4541434F53204449616E6132204C6336DF", "Alior Bank MasterCard debit (Bank)" }, + { "3BFF1300FF910131FE210031C173C82110644D30434E07900094", "AirPlus MasterCard Commercial (Bank)\nhttps://www.airplus.com/us/en/products-solutions/products/corporate-cards/corporate-cards.html" }, + { "3BFF1300FF918131FE4141434F532046696F6E6131204C6336F4", "Deutsche Kreditbank Debit (Bank)" }, + { "3BFF1300FF918131FE4541434F53204449616E6132204C6336DF", "Alior Bank MasterCard debit (Bank)\nComdirect (Deutsch Bank) debit VISA (AUSTRIACARD 56015/001) (Bank)" }, { "3BFF1400FF8131FE458025A000000056575343363530010039", "SafeNet SC650 (PKI)\nhttp://www.safenet-inc.com/data-protection/authentication/smartcard-650/" }, { "3BFF1400FF8131FE458025A000000056575343363530030239", "SafeNet SC650 v3.2 (PKI)\nhttp://www.safenetat.com/products-solutions/high-assurance-authentication/sc650/" }, { "3BFF1400FF8131FE458025A00000005657534336353004003C", "SafeNet AT SC650 V4.0 02/2018 (PKI)\nhttps://www.safenetat.com/Solutions/Enterprise-Security/high-assurance-authentication/sc650/" }, @@ -3518,6 +3855,8 @@ const static atr_t AtrTable[] = { { "3BFF1800008131FE45006B04050100012101434E5310318059", "CNS - Carta Nazionale dei Servizi (Italia)\nPA emittente: Regione Autonoma della Sardegna\nCarta del Servizio Sanitario Regionale - Emilia Romagna" }, { "3BFF1800008131FE45006B05051017012101434E531031805E", "Regional Card - Regione Liguria, Veneto - Italy (eID)\nTessera Sanitaria - Carta Regionale dei Servizi" }, { "3BFF1800008131FE45006B05052000012101434E5310318079", "health card (HealthCare)\nhttps://tscns.regione.sardegna.it/" }, + { "3BFF1800008131FE45006B0505200001F101434E53103180A9", "national health service card (HealthCare)\nhttps://ca.arubapec.it/downloads/MU_LINUX.zip" }, + { "3BFF1800008131FE45006B0505912001F101434E5310318038", "Italian Health Card (TS) and Citizen's Card (CNS) based on IDEMIA ID-One CNS v2 on Cosmo 9.1 (HealthCare)" }, { "3BFF1800008131FE45006B11050700011101434E531131807B", "Italian National Fire Corps -special identification card (eID)" }, { "3BFF1800008131FE45006B11050700012101434E531031804A", "Oberthur ID-One Cosmo V7-n it's a java card 2.2.2\nIzenpe Certificado Ciudadano (eID)\nhttps://www.izenpe.eus/informacion/certificado-ciudadano/s15-content/es/" }, { "3BFF1800008131FE4D8025A00000005657444B3430300600DD", "DataKey 400 (DK400)" }, @@ -3525,7 +3864,9 @@ const static atr_t AtrTable[] = { { "3BFF1800008131FE55006B0209040301010144534410318068", "ACA (Lawyer Identifier Card) (eID)" }, { "3BFF1800008131FE55006B02090503010101434E5310318064", "Bit4id J-SIGN 2048 (L) (PKI)\nhttps://www.bit4id.com/en/j-sign/" }, { "3BFF1800008131FE55006B02090603010101434E5310318067", "ST microelettronics JSign3 (HealthCare)" }, + { "3BFF1800008131FE55006B02090703010101434E5310318066", "Aruba digital signing card (eID)\nhttps://www.aruba.it" }, { "3BFF1800008131FE55006B02091403010101434E5310318075", "Smart Card INFOCERT digital key CNS from CST PADOVA (eID)" }, + { "3BFF1800008131FE55006B02091717010101434E5310318062", "Carta Nazionale dei Servizi (CNS) Centro Servizi Territoriali (CST) (PKI)\nhttp://cst.provincia.padova.it/category/faq/firma-digitale" }, { "3BFF1800FF8031FE45534653452D43583332322D561803087C", "Giesecke & Devrient Sm@rtCafe Expert 2.0" }, { "3BFF1800FF8031FE45536D4072744361666545787065727465", "Giesecke & Devrient SmartCafe 32K v1" }, { "3BFF1800FF8131..456563............................", "Geldkarte (generic ATR)" }, @@ -3539,7 +3880,9 @@ const static atr_t AtrTable[] = { { "3BFF1800FF81313C4565630D0231025000109055700004100A", "EC-Card from DKB (Deutsche Kreditbank AG)" }, { "3BFF1800FF81313C4565630D02310280001224300020041059", "Geldkarte (Germany)" }, { "3BFF1800FF813150456563............................", "GeldKarte v3 (Germany)" }, + { "3BFF1800FF8131FE4165630608710156000FB85073204712D8", "Commerzbank maestro (Bank)\nhttps://www.commerzbank.de/konten-zahlungsverkehr/produkte/girokonten/kostenloses-girokonto/" }, { "3BFF1800FF8131FE4165630608710156000FB8602AA0471231", "Debit card (Germany): Postbank - GeldKarte (EUR), girocard, V-PAY (Bank)\nhttps://www.postbank.de/" }, + { "3BFF1800FF8131FE4165631116710156000F0902904E5711AC", "German Bank Card IDEMIA 9 Maestro/Girocard (Sparkasse S-Payment TPY 1974693D) (Bank)" }, { "3BFF1800FF8131FE450031C573C00180547615020105900074", "SIGILANCE NFC OpenPGP Smart Card (JavaCard)\nhttps://www.sigilance.com/" }, { "3BFF1800FF8131FE455448434331305445434F4744484E3224", "National Health Insurance Card, Taiwan" }, { "3BFF1800FF8131FE455448434331305445434F4744494E3126", "National Health Insurance Card, Taiwan" }, @@ -3593,6 +3936,7 @@ const static atr_t AtrTable[] = { { "3BFF1800FF8131FE55006B02091303010101434E531031808D", "Aruba Digital Signature (Other)\nhttps://www.pec.it/offerta-firma-digitale.aspx" }, { "3BFF1800FF8131FE55006B02091303011101434E531131809C", "Politecnico di Torino Student Card (eID)\nhttp://www.polito.it/" }, { "3BFF1800FF8131FE55006B02091617011101434E531131808D", "Carta Regionale dei Servizi - Regione Autonoma Friuli Venezia Giulia (HealthCare)\nhttps://www.regione.fvg.it/rafvg/cms/RAFVG/GEN/carta-regionale-servizi/" }, + { "3BFF1800FF8131FE55006B02091717011101434E531131808C", "european health insurance card and Regional (ItalY - Provincia Autonoma di Trento) Service Card (CPS) (eID)\nhttps://www.provincia.tn.it/Servizi/Attivare-la-Carta-Provinciale-dei-Servizi-CPS#cos_e" }, { "3BFF1800FF8131FE55006B42495434494420312E3000900091", "Touch&Sign 2048 (PKI)" }, { "3BFF1800FF8131FE55006B42495434494420322E3000900092", "Izenpe Green Card (Citizen Certificate) (eID)\nhttp://www.izenpe.com/s15-12020/en/contenidos/informacion/ciudadano/en_def/index.shtml" }, { "3BFF1800FFC10A31FE55006B0508C805011101434E531031800C", "Carta Regionale dei Servizi - Regione Lombardia" }, @@ -3622,6 +3966,7 @@ const static atr_t AtrTable[] = { { "3BFF9500008031FE4380318067B0850201F3A3138301900057", "Driver's Card (Tachograf card) issued by pwpw Poland (Transport)\nhttps://www.pwpw.pl/en/Products/Cards/Cards.html" }, { "3BFF9500008031FE4380318067B0850201F3A3138301F83BFF", "UK Drivers Tachograph Card (Transport)" }, { "3BFF950000C00A1F438031E073362113574A330E0231410088", "'BASE' SIM card; BASE is a german mobile phone operator, which is a brand of E-Plus, Germany." }, + { "3BFF95000150801C444E41535034323020526576533430", "Nagra card Canal+ (Polish TV provider) (Pay TV)\nhttps://pl.canalplus.com/" }, { "3BFF95000150801C444E41535034323020526576533430F1", "NC+ Polland (Pay TV)\nhttp://www.flysat.com/ncplus.php" }, { "3BFF95000150801C444E41535034323020526576533430F15D", "NC+ Polland (Pay TV)\nhttp://www.flysat.com/ncplus.php" }, { "3BFF95000150801C444E41535034323020526576533441", "Platforma Canal+ Polska, cayman card (Pay TV)\nhttps://www.flysat.com/canalplus-pl.php" }, @@ -3633,6 +3978,7 @@ const static atr_t AtrTable[] = { { "3BFF9500FF50801C444E41535034303020526576493441", "Pay TV - NC+ in Poland (Pay TV)\nhttp://ncplus.pl/" }, { "3BFF9500FF50801C444E41535034303020526576493447", "Platforma Canal+ Polska, cameleon card (Pay TV)\nhttps://www.flysat.com/canalplus-pl.php" }, { "3BFF9500FF50801C444E41535034303020526576493548", "Canal+ France Nagra3 (Pay TV)\nhttps://www.canalplus.com/" }, + { "3BFF9500FF50801C444E41535034383220526576523038", "CANALSAT, mediaguard key (Pay TV)" }, { "3BFF9500FFC00A1F438031E073362113574A3320073341411F", "Swisscom 3G SIM card" }, { "3BFF9500FFC00A1F438031E073F62113574A334857314141E5", "MTNL 3G USIM (India)" }, { "3BFF9500FFC00A1F438031E073F62113574A334861324147D6", "GSM SIM (issued by e-plus, Germany)" }, @@ -3646,10 +3992,20 @@ const static atr_t AtrTable[] = { { "3BFF9600008131FE4380318065B0845651101201788290006A", "SafeNet eToken 5300 (PKI)" }, { "3BFF9600008131FE4380318065B08456511012021082900001", "Nedap NexS N:Secure (eID)\nhttps://www.nsecure.nl/nl/" }, { "3BFF9600008131FE4380318065B0846160FB120FFD8290000C", "IDPrime 930 FIPS Level 2 (T=1 CT=96) (BAI3.1) (PKI)" }, + { "3BFF9600008131FE4380318065B0846566FB120FFC8290000F", "SmartID 3930 FIDO Contact and Contactless card (PKI)\nhttps://www.smartcardfocus.com/shop/ilp/id~962/safenet-idprime-3930-fido-dual-interface-fips-l2/p/index.shtml" }, + { "3BFF9600008131FE4380318065B0846669FB12FFFE829000F1", "IDCore3230 build 6.8, test APDU applet (JavaCard)" }, { "3BFF9600008131FE4380318065B085040011120FFF829000E0", "Pakistan National identity card (eID)" }, { "3BFF9600008131FE4380318065B085040120120FFF829000D0", "Portuguese National Identity Card (eID) (eID)\nhttps://www.autenticacao.gov.pt/o-cartao-de-cidadao" }, + { "3BFF9600008131FE4380318065B0855956FB120FFC82900002", "THALES SafeNet IDPrime 3940 Fido (PKI)\nhttps://cpl.thalesgroup.com/fr/resources/access-management/idprime-3940-product-brief" }, { "3BFF9600008131FE4580F9A0000003080000100053454E54AC", "cac (eID)" }, { "3BFF9600008131FE55006B02090403010101434E53103180EB", "Aruba PEC SpA digital signature card made by Incard (eID)\nhttps://www.pec.it/download-software-driver.aspx" }, + { "3BFF960000C00A31FE4380318065B085040011120FFF829000AB", "French National Identity Card (eID) (eID)\nhttps://www.interieur.gouv.fr/actualites/actu-du-ministere/nouvelle-carte-nationale-didentite" }, + { "3BFF9600FF8131FE406563111562025000100A0190A90730BF", "girocard Sparkasse Ansbach, Germany BLZ 76550000 (Bank)" }, + { "3BFF9600FF8131FE4065631D02840156001F190850E10200EF", "Raiffeiesenbank Girocard Maestro (Bank)" }, + { "3BFF9600FF8131FE4065631D0284025000230308C0B702000A", "German Debitcard from Sparkasse (Bank)" }, + { "3BFF9600FF8131FE4065631D0284025000230709E0F9020061", "Sparkasse Ingolstadt (Bank)" }, + { "3BFF9600FF8131FE4065631D028402500023140710B80200CD", "Sparkasse Aachen - german Maestro/Girocard (S-Payment TGI 50380969) (Bank)" }, + { "3BFF9600FF8131FE4065631D028402500023160BB0C102001A", "debit card (Bank)" }, { "3BFF9600FF8131FE4565630D09710764000D00035450070181", "Commerzbank ServiceCard / Maestro / GeldKarte / Cirrus / girocard / CashGroup / electronic cash" }, { "3BFF9600FF8131FE4565631901500280000F002B0046501172", "Sparkasse Bremen Germany HBCI DDV" }, { "3BFF9600FF8131FE4565631901500280000F002F0025501115", "German Postbank Giro card with electronic cash, Maestro, GeldKarte features" }, @@ -3659,6 +4015,7 @@ const static atr_t AtrTable[] = { { "3BFF9600FFC00A1F438031E073362113574A43491C3130321E", "Giesecke & Devrient - UniverSIM Pegasus" }, { "3BFF9600FFC00A31FE4D8031E06B04310502A85555555555557E", "Multos (Other)" }, { "3BFF9700008131FE4380318065B0846160FB120FFD8290000D", "IDPrime 3930 FIPS Level 3 (T=1 CT=97) (BAI6) (PKI)" }, + { "3BFF9700008131FE4380318065B08466693912FFFE82900032", "IDCore3230 build 6.8, test APDU applet (JavaCard)" }, { "3F05DC20FC0001", "DigiCash Facility Card" }, { "3F28000011140003689000", "SIMEMU - a DIY GSM SIM card\nhttp://simemu.cjb.net/" }, { "3F2D0027A051827D00000052000C9000", "Porta Moedas Multibanco (Portugeese electronic purse)" }, @@ -3710,6 +4067,7 @@ const static atr_t AtrTable[] = { { "3F672F0011140003689000", "D2MAC/Eurocrypt (Pay TV)" }, { "3F672F0411200000689000", "BULL HN ITALIA 06/92 - 100.000 - 64MP\nLa Sapienza - Universita' di Roma" }, { "3F69000024AF01700101FF9000", "French GSM SIM card (900MHz)" }, + { "3F69000025AF01700103FF9000", "French Gift Card (Loyalty)" }, { "3F6A000000640150010C820101A9", "Credit Card cafe Selecta" }, { "3F6B150002A007906F4D59000C9000", "Sky Viewing Card (Gen 1) from 1990s (Pay TV)" }, { "3F6C000024A03000FF00000100049000", "Gemplus MCOS 16K DES Sample Card" }, @@ -3721,6 +4079,7 @@ const static atr_t AtrTable[] = { { "3F6C00003DA030BE4100370100049000", "Sberbank (Bank)" }, { "3F6D000080318065B00501025E83009000", "Gemplus GemXpresso 211PK or 211PK-IS" }, { "3F6D000080318065B00501025E92009000", "Gemplus GemXpresso 32K" }, + { "3F7613250421B0114A5003", "DSS/DTV F (P1; first generation access card) (Pay TV)" }, { "3F77130000C11400A2689000", "Boxer DTV Sweden (Pay TV)\nhttp://www.boxer.se" }, { "3F77180000C11400A2689000", "Viacess card HRT (Hrvatska Radio Televizija)" }, { "3F77180000C11401A2689000", "VIA 2.6 XXX (Pay TV)" }, @@ -3730,7 +4089,7 @@ const static atr_t AtrTable[] = { { "3F77180000C27A4202689000", "SCT (Via Access)" }, { "3F77180000C27A4302689000", "DORCEL (Via Access)" }, { "3F77180000C27A4402689000", "XXX Redlight_HD (Viaccess)" }, - { "3F77180000C2EB41026C9000", "Elite HD10+ (Pay TV)\nSattelite cryptoworks card - Smart card Viaccess (Telesat - belgium) (Pay TV)" }, + { "3F77180000C2EB41026C9000", "Elite HD10+ (Pay TV)\nSatellite cryptoworks card - Smart card Viaccess (Telesat - belgium) (Pay TV)" }, { "3F77180000C2EB45026C9000", "facetv (Other)" }, { "3F77180000D38A4001649000", "Skylink Viaccess 5.0 (Pay TV)\nhttp://www.skylink.sk/" }, { "3F77180000D38A4201649000", "Satellite decoder card for TV Vlaanderen (Other)\nhttps://www.tv-vlaanderen.be" }, @@ -3765,12 +4124,14 @@ const static atr_t AtrTable[] = { { "3FFD11250250000333B01569FF4A50F080034B4C03", "Kabel Deutschland G02 (Pay TV)" }, { "3FFD11250250800F41B00A69FF4A507080005A4503", "Buypass smart card (Bank)\nhttps://www.buypass.no/bruker/buypass-id/buypass-smartkort" }, { "3FFD11250250800F41B00D69FF4A50F08000565403", "Viasat (Pay TV)" }, + { "3FFD11250250800F41B00F69FF4A50F080005A4A03", "Telekom Romania Communications (DVB-C) (Pay TV)\nhttps://www.telekom.ro/" }, { "3FFD13250250000F33B00F69FF4A50D00000535902", "Sky Digital (DSS satellite TV card) 2009 issue" }, { "3FFD13250250000F33B01669FF4A50D08000535903", "Sky TV Multiroom (Pay TV)" }, { "3FFD13250250800F..B0..69FF4A50D08000495403", "Sky (Italy) VideoGuard CAM card" }, { "3FFD13250250800F33B008FFFF4A50900000474C01", "Sky (Brasil) VideoGuard CAM card" }, { "3FFD13250250800F33B008FFFF4A50900000545601", "NDS Videoguard TV CAM card (Sky Mexico 0905) (Pay TV)\nhttps://en.wikipedia.org/wiki/VideoGuard" }, { "3FFD13250250800F41B00A69FF4A50F00000503103", "Sky Germany V14 NDS card (Pay TV)\nhttp://www.wikipedia.org/wiki/Sky_Deutschland" }, + { "3FFD13250250800F41B00F69FF4A50F080005A4A03", "Orange Romania (DVB-C) (Pay TV)\nhttps://www.orange.ro/" }, { "3FFD13250250800F55B00269FF4A50F08000503103", "SKY DE V15 (Pay TV)" }, { "3FFD14250150000F33B00BFFFF4A50800000475801", "DirecTV card" }, { "3FFD14250250800F41B00A69FF4A507080004E5A03", "Sky Network Televisiton Limited (New Zealand) card for new (2016) decoder. Reportedly, this is a Kaon NS1120-500 box. (Pay TV)\nhttp://www.sky.co.nz" }, @@ -3809,7 +4170,7 @@ const static atr_t AtrTable[] = { { "3FFF9500FF918171644700444E41535030303320526576333233FF", "Satellite TV Card 'Via Digital' (Nagra)" }, { "3FFF9500FF918171A04700444E4153503031302052657641323048", "DSS/DISH ROM10" }, { "3FFF9500FF918171A04700444E4153503031302052657641323149", "PayTV card for DishNetwork Sat receiver\nhttp://www.dishnetwork.com/" }, - { "3FFF9500FF918171A04700444E4153503031312052657642", "NTL digial TV card (Nagravision)" }, + { "3FFF9500FF918171A04700444E4153503031312052657642", "NTL digital TV card (Nagravision)" }, { "3FFF9500FF918171A04700444E415350303131205265764230364E", "Telewest Broadband (Nagravision)" }, { "3FFF9500FF918171A04700444E415350303131205265764230423A", "NagraVision card for StarHub Digital Cable DVB-C Singapore" }, { "3FFF9500FF918171A04700444E415350303131205265764230443C", "NagraVision card for Virgin Media in the UK" }, @@ -3822,7 +4183,7 @@ const static atr_t AtrTable[] = { { "3FFF9500FF918171FE4700444E4153503134322052657647303216", "Polsat Nagra3\nBrazil - Claro TV Nagra3 Red" }, { "3FFF9500FF918171FE4700444E4153503134322052657647303410", "Nagra 3 Card - Telefonica Brazil Green" }, { "3FFF9500FF918171FE4700444E4153503134322052657647303612", "UM02 card from German Unitymedia cable TV provider" }, - { "3FFF9500FF918171FE4700444E4153503134322052657647433463", "HD+ card used by the satelite company astra for decryption of the HDTV channels of RTL, VOX, Sat1 and ProSieben. Nagravision V3 is used for the encryption." }, + { "3FFF9500FF918171FE4700444E4153503134322052657647433463", "HD+ card used by the satellite company astra for decryption of the HDTV channels of RTL, VOX, Sat1 and ProSieben. Nagravision V3 is used for the encryption." }, { "3FFF9500FF918171FE4700444E415350313830204D65724A30320E", "Nagra 3 Digital Plus Spain" }, { "3FFF9500FF918171FE4700444E41535032343120447368", "DISH Network G3 (Pay TV)" }, { "3FFF9500FF918171FE4700444E415350323431204473684830390C", "Dish Network Smart Card (Pay TV)" }, @@ -3836,6 +4197,7 @@ const static atr_t AtrTable[] = { { "3FFF9500FF918171FE5700444E4153503431302052657651324260", "Nagravision Kudelski Generation 7 card Rom410 MerQ2B (Pay TV)" }, { "3FFF9500FF918171FE5700444E4153503431302052657651325371", "Slovak and Czech pay TV provider Slovak Telecom (Pay TV)\nhttp://www.flysat.com/novadigi-sk.php" }, { "3FFF9500FF918171FE5700444E4153503432302052657653363017", "HD+ HD04b Card (Pay TV)" }, + { "3FFF9500FF918171FE5700444E4153503432302052657653363413", "claro card honduras central america 'NAGRA' (Pay TV)" }, { "3FFF9500FF918171FE5700444E4153503432302052657653364265", "Nagra Kudelski / Canalsat Reunion (Pay TV)" }, { "3FFF9500FF918171FE5700444E4153503435302052657657363014", "HD+ HD05 Paytv smartcard (Pay TV)" }, { "3FFF9500FF918171FE5700444E415350343832205265765232361C", "Max Tv Croatia (Pay TV)\nhttps://www.lyngsat.com/packages/Max-TV.html" }, From 48b61c6438017dcaffd8ff29ce4337943c4151f6 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 30 Jul 2023 21:21:59 +0200 Subject: [PATCH 152/299] ATR from the flipper zero seader project --- client/src/atrs.h | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/atrs.h b/client/src/atrs.h index 18c1880c6..2a6bc7521 100644 --- a/client/src/atrs.h +++ b/client/src/atrs.h @@ -2328,6 +2328,7 @@ const static atr_t AtrTable[] = { { "3B959640F001130A0A1D", "xcrypt (Pay TV)" }, { "3B959640F00F100A096A", "Zain Usim Card (Telecommunication)\nwww.qariya.com" }, { "3B959680B1FE551FC7477261636513", "IClass SE Processor (Other)\nhttps://www.hidglobal.com/products/embedded-modules/iclass-se/sio-processor" }, + { "3B90969181B1FE551FC7D4", "IClass SE Processor (Other)\nhttps://www.hidglobal.com/products/embedded-modules/iclass-se/sio-processor"}, { "3B9596C0F01FC20F100A0A16", "viettel (Telecommunication)" }, { "3B959740F01A160A1941", "SG50 (Samsung Chip) (Telecommunication)" }, { "3B96004121920000622433339000", "Ukrainian Telecommunications Operator Kyivstar (old simcard) (Telecommunication)\nhttps://kyivstar.ua/uk/mm" }, From 9e8adce7a98b5f03c18887b68ab0dc3069232ebb Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 30 Jul 2023 21:22:52 +0200 Subject: [PATCH 153/299] updated ATR list --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c1f4e86c..5dd92a393 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Updated ATR list (@iceman1001) - Changed `mem load -m` - now correctly erase all allocated flash memory (@iceman1001) - Fixed emulator quick dump to handle MFC Ev1 extra sectors (@iceman100) - Removed some empty dump files (@iceman1001) From d9d03aaf1f2d292494415989361dffded5ffba78 Mon Sep 17 00:00:00 2001 From: kormax <3392860+kormax@users.noreply.github.com> Date: Mon, 31 Jul 2023 12:47:46 +0300 Subject: [PATCH 154/299] Add new DESFire command code Update file formatting --- include/protocols.h | 220 +++++++++++++++++++++++++++----------------- 1 file changed, 137 insertions(+), 83 deletions(-) diff --git a/include/protocols.h b/include/protocols.h index 772105c9d..58b992717 100644 --- a/include/protocols.h +++ b/include/protocols.h @@ -531,95 +531,149 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. // MIFARE DESFire command set: -#define MFDES_AUTHENTICATE 0x0A // AUTHENTICATE_NATIVE -#define MFDES_AUTHENTICATE_ISO 0x1A // AUTHENTICATE_STANDARD -#define MFDES_AUTHENTICATE_AES 0xAA +#define MFDES_AUTHENTICATE 0x0A // AUTHENTICATE_NATIVE +#define MFDES_AUTHENTICATE_ISO 0x1A // AUTHENTICATE_STANDARD +#define MFDES_AUTHENTICATE_AES 0xAA // Leakage Resilient Primitive (LRP) -#define MFDES_AUTHENTICATE_EV2F 0x71 // LRP, AuthenticateLRPFirst -#define MFDES_AUTHENTICATE_EV2NF 0x77 // LRP, AuthenticateLRPNonFirst +#define MFDES_AUTHENTICATE_EV2F 0x71 // LRP, AuthenticateLRPFirst +#define MFDES_AUTHENTICATE_EV2NF 0x77 // LRP, AuthenticateLRPNonFirst + +#define MFDES_CREDIT 0x0C +#define MFDES_LIMITED_CREDIT 0x1C +#define MFDES_WRITE_RECORD 0x3B +#define MFDES_READSIG 0x3C +#define MFDES_WRITE_DATA 0x3D +#define MFDES_GET_KEY_SETTINGS 0x45 +#define MFDES_GET_UID 0x51 +#define MFDES_CHANGE_KEY_SETTINGS 0x54 +#define MFDES_ROLL_KEY_SETTINGS 0x55 +#define MFDES_INIT_KEY_SETTINGS 0x56 +#define MFDES_FINALIZE_KEY_SETTINGS 0x57 +#define MFDES_SELECT_APPLICATION 0x5A +#define MFDES_CHANGE_CONFIGURATION 0x5C +#define MFDES_CHANGE_FILE_SETTINGS 0x5F +#define MFDES_GET_VERSION 0x60 +#define MFDES_GET_ISOFILE_IDS 0x61 +#define MFDES_GET_KEY_VERSION 0x64 +#define MFDES_GET_DELEGATE_INFO 0x69 +#define MFDES_GET_APPLICATION_IDS 0x6A +#define MFDES_GET_VALUE 0x6C +#define MFDES_GET_FREE_MEMORY 0x6E +#define MFDES_GET_DF_NAMES 0x6D +#define MFDES_GET_FILE_IDS 0x6F +#define MFDES_WRITE_RECORD2 0x8B +#define MFDES_WRITE_DATA2 0x8D +#define MFDES_ABORT_TRANSACTION 0xA7 +#define MFDES_READ_RECORDS2 0xAB +#define MFDES_READ_DATA2 0xAD +#define MFDES_ADDITIONAL_FRAME 0xAF +#define MFDES_UPDATE_RECORD2 0xBA +#define MFDES_READ_RECORDS 0xBB +#define MFDES_READ_DATA 0xBD +#define MFDES_CREATE_CYCLIC_RECORD_FILE 0xC0 +#define MFDES_CREATE_LINEAR_RECORD_FILE 0xC1 +#define MFDES_CHANGE_KEY 0xC4 +#define MFDES_CHANGE_KEY_EV2 0xC6 +#define MFDES_COMMIT_TRANSACTION 0xC7 +#define MFDES_COMMIT_READER_ID 0xC8 +#define MFDES_CREATE_DELEGATE_APP 0xC9 +#define MFDES_CREATE_APPLICATION 0xCA +#define MFDES_CREATE_BACKUP_DATA_FILE 0xCB +#define MFDES_CREATE_VALUE_FILE 0xCC +#define MFDES_CREATE_STD_DATA_FILE 0xCD +#define MFDES_CREATE_TRANS_MAC_FILE 0xCE +#define MFDES_DELETE_APPLICATION 0xDA +#define MFDES_UPDATE_RECORD 0xDB +#define MFDES_DEBIT 0xDC +#define MFDES_DELETE_FILE 0xDF +#define MFDES_CLEAR_RECORD_FILE 0xEB +#define MFDES_NOTIFY_TRANSACTION_SUCCESS 0xEE // New command. Used by Apple-ECP-compliant DESFire readers to signify successful transaction +#define MFDES_PREPARE_PC 0xF0 +#define MFDES_PROXIMITY_CHECK 0xF2 +#define MFDES_GET_FILE_SETTINGS 0xF5 +#define MFDES_FORMAT_PICC 0xFC +#define MFDES_VERIFY_PC 0xFD +#define MFDES_NATIVE_ISO7816_WRAP_CLA 0x90 -#define MFDES_CREDIT 0x0C -#define MFDES_LIMITED_CREDIT 0x1C -#define MFDES_WRITE_RECORD 0x3B -#define MFDES_READSIG 0x3C -#define MFDES_WRITE_DATA 0x3D -#define MFDES_GET_KEY_SETTINGS 0x45 -#define MFDES_GET_UID 0x51 -#define MFDES_CHANGE_KEY_SETTINGS 0x54 -#define MFDES_ROLL_KEY_SETTINGS 0x55 -#define MFDES_INIT_KEY_SETTINGS 0x56 -#define MFDES_FINALIZE_KEY_SETTINGS 0x57 -#define MFDES_SELECT_APPLICATION 0x5A -#define MFDES_CHANGE_CONFIGURATION 0x5C -#define MFDES_CHANGE_FILE_SETTINGS 0x5F -#define MFDES_GET_VERSION 0x60 -#define MFDES_GET_ISOFILE_IDS 0x61 -#define MFDES_GET_KEY_VERSION 0x64 -#define MFDES_GET_DELEGATE_INFO 0x69 -#define MFDES_GET_APPLICATION_IDS 0x6A -#define MFDES_GET_VALUE 0x6C -#define MFDES_GET_FREE_MEMORY 0x6E -#define MFDES_GET_DF_NAMES 0x6D -#define MFDES_GET_FILE_IDS 0x6F -#define MFDES_WRITE_RECORD2 0x8B -#define MFDES_WRITE_DATA2 0x8D -#define MFDES_ABORT_TRANSACTION 0xA7 -#define MFDES_READ_RECORDS2 0xAB -#define MFDES_READ_DATA2 0xAD -#define MFDES_ADDITIONAL_FRAME 0xAF -#define MFDES_UPDATE_RECORD2 0xBA -#define MFDES_READ_RECORDS 0xBB -#define MFDES_READ_DATA 0xBD -#define MFDES_CREATE_CYCLIC_RECORD_FILE 0xC0 -#define MFDES_CREATE_LINEAR_RECORD_FILE 0xC1 -#define MFDES_CHANGE_KEY 0xC4 -#define MFDES_CHANGE_KEY_EV2 0xC6 -#define MFDES_COMMIT_TRANSACTION 0xC7 -#define MFDES_COMMIT_READER_ID 0xC8 -#define MFDES_CREATE_DELEGATE_APP 0xC9 -#define MFDES_CREATE_APPLICATION 0xCA -#define MFDES_CREATE_BACKUP_DATA_FILE 0xCB -#define MFDES_CREATE_VALUE_FILE 0xCC -#define MFDES_CREATE_STD_DATA_FILE 0xCD -#define MFDES_CREATE_TRANS_MAC_FILE 0xCE -#define MFDES_DELETE_APPLICATION 0xDA -#define MFDES_UPDATE_RECORD 0xDB -#define MFDES_DEBIT 0xDC -#define MFDES_DELETE_FILE 0xDF -#define MFDES_CLEAR_RECORD_FILE 0xEB -#define MFDES_PREPARE_PC 0xF0 -#define MFDES_PROXIMITY_CHECK 0xF2 -#define MFDES_GET_FILE_SETTINGS 0xF5 -#define MFDES_FORMAT_PICC 0xFC -#define MFDES_VERIFY_PC 0xFD -#define MFDES_NATIVE_ISO7816_WRAP_CLA 0x90 // MIFARE DESFire status & error codes: -#define MFDES_S_OPERATION_OK 0x00 -#define MFDES_S_NO_CHANGES 0x0C -#define MFDES_S_SIGNATURE 0x90 -#define MFDES_S_ADDITIONAL_FRAME 0xAF +#define MFDES_S_OPERATION_OK 0x00 +#define MFDES_S_NO_CHANGES 0x0C +#define MFDES_S_SIGNATURE 0x90 +#define MFDES_S_ADDITIONAL_FRAME 0xAF -#define MFDES_E_OUT_OF_EEPROM 0x0E -#define MFDES_E_ILLEGAL_COMMAND_CODE 0x1C -#define MFDES_E_INTEGRITY_ERROR 0x1E -#define MFDES_E_NO_SUCH_KEY 0x40 -#define MFDES_E_LENGTH 0x7E -#define MFDES_E_PERMISSION_DENIED 0x9D -#define MFDES_E_PARAMETER_ERROR 0x9E -#define MFDES_E_APPLICATION_NOT_FOUND 0xA0 -#define MFDES_E_APPL_INTEGRITY 0xA1 -#define MFDES_E_AUTHENTICATION_ERROR 0xAE -#define MFDES_E_BOUNDARY 0xBE -#define MFDES_E_PICC_INTEGRITY 0xC1 -#define MFDES_E_COMMAND_ABORTED 0xCA -#define MFDES_E_PICC_DISABLED 0xCD -#define MFDES_E_COUNT 0xCE -#define MFDES_E_DUPLICATE 0xDE -#define MFDES_E_EEPROM 0xEE -#define MFDES_E_FILE_NOT_FOUND 0xF0 -#define MFDES_E_FILE_INTEGRITY 0xF1 +#define MFDES_E_OUT_OF_EEPROM 0x0E +#define MFDES_E_ILLEGAL_COMMAND_CODE 0x1C +#define MFDES_E_INTEGRITY_ERROR 0x1E +#define MFDES_E_NO_SUCH_KEY 0x40 +#define MFDES_E_LENGTH 0x7E +#define MFDES_E_PERMISSION_DENIED 0x9D +#define MFDES_E_PARAMETER_ERROR 0x9E +#define MFDES_E_APPLICATION_NOT_FOUND 0xA0 +#define MFDES_E_APPL_INTEGRITY 0xA1 +#define MFDES_E_AUTHENTICATION_ERROR 0xAE +#define MFDES_E_BOUNDARY 0xBE +#define MFDES_E_PICC_INTEGRITY 0xC1 +#define MFDES_E_COMMAND_ABORTED 0xCA +#define MFDES_E_PICC_DISABLED 0xCD +#define MFDES_E_COUNT 0xCE +#define MFDES_E_DUPLICATE 0xDE +#define MFDES_E_EEPROM 0xEE +#define MFDES_E_FILE_NOT_FOUND 0xF0 +#define MFDES_E_FILE_INTEGRITY 0xF1 + +// MIFARE PLus EV2 Command set +// source: https://www.nxp.com/docs/en/data-sheet/MF1P(H)x2.pdf in Look-Up Tables + +#define MFP_READ_SIG 0x3C // same as DESFIRE +#define MFP_WRITEPERSO 0xA8 +#define MFP_COMMITPERSO 0xAA + +#define MFP_AUTHENTICATEFIRST 0x70 +#define MFP_AUTHENTICATEFIRST_VARIANT 0x73 +#define MFP_AUTHENTICATENONFIRST 0x76 +#define MFP_AUTHENTICATECONTINUE 0x72 +#define MFP_AUTHENTICATESECTORSWITCH 0x7A +#define MFP_RESETAUTH 0x78 + +#define MFP_VCSUPPORTLASTISOL3 0x4B +#define MFP_ISOSELECT 0xA4 + +#define MFP_GETVERSION 0x60 // same as DESFIRE +#define MFP_ADDITIONALFRAME 0xAF +#define MFP_SETCONFIGSL1 0x44 +#define MFP_MF_PERSONALIZEUIDUSAGE 0x40 + +// read commands +#define MFP_READENCRYPTEDNOMAC_MACED 0X30 +#define MFP_READENCRYPTEDMAC_MACED 0x31 +#define MFP_READPLAINNOMAC_MACED 0x32 +#define MFP_READPLAINMAC_MACED 0x33 +#define MFP_READENCRYPTEDNOMAC_UNMACED 0x34 +#define MFP_READENCRYPTEDMAC_UNMACED 0X35 +#define MFP_READPLAINNOMAC_UNMACED 0x36 +#define MFP_READPLAINMAC_UNMACED 0x37 + +// write commands +#define MFP_WRITEENCRYPTEDNOMAC 0xA0 +#define MFP_WRITEENCRYPTEDMAC 0xA1 +#define MFP_WRITEPLAINNOMAC 0xA2 +#define MFP_WRITEPLAINMAC 0xA3 + +// value commands +#define MFP_INCREMENTNOMAC 0xB0 +#define MFP_INCREMENTMAC 0xB1 +#define MFP_DECREMENTNOMAC 0xB2 +#define MFP_DECREMENTMAC 0xB3 +#define MFP_TRANSFERNOMAC 0xB4 +#define MFP_TRANSFERMAC 0xB5 +#define MFP_INCREMENTTRANSFERNOMAC 0xB6 +#define MFP_INCREMENTTRANSFERMAC 0xB7 +#define MFP_DECREMENTTRANSFERNOMAC 0xB8 +#define MFP_DECREMENTTRANSFERMAC 0xB9 +#define MFP_RESTORENOMAC 0xC2 +#define MFP_RESTOREMAC 0xC3 // MIFARE PLus EV2 Command set // source: https://www.nxp.com/docs/en/data-sheet/MF1P(H)x2.pdf in Look-Up Tables From ef79fb91ebfe4c5ea1051a70132ea7ae240c9164 Mon Sep 17 00:00:00 2001 From: kormax <3392860+kormax@users.noreply.github.com> Date: Mon, 31 Jul 2023 12:48:17 +0300 Subject: [PATCH 155/299] Add annotation for new DESFire command code --- client/src/cmdhflist.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index cf848d090..8e605b91f 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -1023,6 +1023,9 @@ void annotateMfDesfire(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { snprintf(exp, size, "CLEAR RECORD FILE"); } break; + case MFDES_NOTIFY_TRANSACTION_SUCCESS: + snprintf(exp, size, "NOTIFY TRANSACTION SUCCESS (ECP)"); + break; case MFDES_COMMIT_TRANSACTION: snprintf(exp, size, "COMMIT TRANSACTION"); break; From d522a46fca981331fddac3117047030b5dcf5c83 Mon Sep 17 00:00:00 2001 From: "Rick Farina (Zero_Chaos)" Date: Mon, 31 Jul 2023 15:46:20 -0400 Subject: [PATCH 156/299] fix lto-type-mismatch in guidummy.cpp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit link time optimization requires all functions named the same to actually operate the same. I am pretty sure this fixes it without breaking anything. Fixes: https://github.com/RfidResearchGroup/proxmark3/issues/2058 src/proxgui.h:35:6: error: type of ‘ShowPictureWindow’ does not match original declaration [-Werror=lto-type-mismatch] 35 | void ShowPictureWindow(uint8_t *data, int len); | ^ src/guidummy.cpp:33:17: note: type mismatch in parameter 2 33 | extern "C" void ShowPictureWindow(char *fn) { | ^ src/guidummy.cpp:33:17: note: type ‘void’ should match type ‘int’ src/guidummy.cpp:33:17: note: ‘ShowPictureWindow’ was previously declared here --- client/src/guidummy.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/guidummy.cpp b/client/src/guidummy.cpp index e54c1d94e..2882fd41d 100644 --- a/client/src/guidummy.cpp +++ b/client/src/guidummy.cpp @@ -30,7 +30,7 @@ extern "C" void ShowGraphWindow(void) { extern "C" void HideGraphWindow(void) {} extern "C" void RepaintGraphWindow(void) {} -extern "C" void ShowPictureWindow(char *fn) { +extern "C" void ShowPictureWindow(char *fn, int len) { static int warned = 0; if (!warned) { From 6b648396e700db8e9753725e092a41040d8b9a5c Mon Sep 17 00:00:00 2001 From: "Rick Farina (Zero_Chaos)" Date: Mon, 31 Jul 2023 23:33:36 -0400 Subject: [PATCH 157/299] fix -Wstringop-overread error We are reading this 26 bytes into a 32 byte buffer, is this even any worse? Fixes: https://github.com/RfidResearchGroup/proxmark3/issues/2060 --- client/src/mifare/mifarehost.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index a05456bcd..76c392490 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -787,7 +787,7 @@ int mfStaticNested(uint8_t blockNo, uint8_t keyType, uint8_t *key, uint8_t trgBl p_keyblock = mem; } - uint8_t fn[26] = "static_nested_000.bin"; + uint8_t fn[32] = "static_nested_000.bin"; uint64_t start_time = msclock(); for (uint32_t i = 0; i < keycnt; i += max_keys_chunk) { From f451be58775c5ac6e9b48d404afc33456d237df0 Mon Sep 17 00:00:00 2001 From: "Rick Farina (Zero_Chaos)" Date: Wed, 2 Aug 2023 11:22:03 -0400 Subject: [PATCH 158/299] proxguiqt.cpp needs ui_overlays.h to build Fixes: https://github.com/RfidResearchGroup/proxmark3/issues/2062 --- client/Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/Makefile b/client/Makefile index bb15a9944..f934eaed7 100644 --- a/client/Makefile +++ b/client/Makefile @@ -781,6 +781,8 @@ proxmark3: $(OBJS) $(STATICLIBS) lualibs/pm3_cmd.lua lualibs/mfc_default_keys.lu src/proxgui.cpp: src/ui/ui_overlays.h src/ui/ui_image.h +src/proxguiqt.cpp: src/ui/ui_overlays.h + src/proxguiqt.moc.cpp: src/proxguiqt.h $(info [-] MOC $@) $(Q)$(MOC) -o$@ $^ From 0b70a1014561a19f8772052ebda4cbc0b9e23d30 Mon Sep 17 00:00:00 2001 From: "Rick Farina (Zero_Chaos)" Date: Wed, 2 Aug 2023 11:30:18 -0400 Subject: [PATCH 159/299] proxguiqt.cpp also needs ui_image.h to build This fixes the next parallel build failure in the current shuffle seed. --- client/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/Makefile b/client/Makefile index f934eaed7..b79d248bb 100644 --- a/client/Makefile +++ b/client/Makefile @@ -781,7 +781,7 @@ proxmark3: $(OBJS) $(STATICLIBS) lualibs/pm3_cmd.lua lualibs/mfc_default_keys.lu src/proxgui.cpp: src/ui/ui_overlays.h src/ui/ui_image.h -src/proxguiqt.cpp: src/ui/ui_overlays.h +src/proxguiqt.cpp: src/ui/ui_overlays.h src/ui/ui_image.h src/proxguiqt.moc.cpp: src/proxguiqt.h $(info [-] MOC $@) From 4ee7b78a07cde4dc1e3c9c2061d23ba5d1f8d02d Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 2 Aug 2023 17:36:50 +0200 Subject: [PATCH 160/299] always make sure resp is initialized --- client/src/comms.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/src/comms.c b/client/src/comms.c index 298db88e7..59c1cd1cf 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -820,7 +820,6 @@ bool WaitForResponse(uint32_t cmd, PacketResponseNG *response) { bool GetFromDevice(DeviceMemType_t memtype, uint8_t *dest, uint32_t bytes, uint32_t start_index, uint8_t *data, uint32_t datalen, PacketResponseNG *response, size_t ms_timeout, bool show_warning) { if (dest == NULL) return false; - if (bytes == 0) return true; PacketResponseNG resp; if (response == NULL) { @@ -839,6 +838,9 @@ bool GetFromDevice(DeviceMemType_t memtype, uint8_t *dest, uint32_t bytes, uint3 resp.oldarg[2] = 0; memset(resp.data.asBytes, 0, PM3_CMD_DATA_SIZE); + if (bytes == 0) return true; + + // clear clearCommandBuffer(); From 602daa7fdd30a77bba0a7b618891868489e9adcc Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 2 Aug 2023 17:40:55 +0200 Subject: [PATCH 161/299] missing inits --- client/src/cmdanalyse.c | 81 +++++++++++++++++++++++--------------- client/src/cmddata.c | 2 +- client/src/cmdhfthinfilm.c | 4 +- common/generator.c | 2 +- 4 files changed, 53 insertions(+), 36 deletions(-) diff --git a/client/src/cmdanalyse.c b/client/src/cmdanalyse.c index a2ebf9d23..3713befb5 100644 --- a/client/src/cmdanalyse.c +++ b/client/src/cmdanalyse.c @@ -311,7 +311,7 @@ static int CmdAnalyseCRC(const char *Cmd) { PrintAndLogEx(INFO, " reflect8(0x80) is %02X == 0x01", reflect8(0x80)); PrintAndLogEx(INFO, " reflect16(0x8000) is %04X == 0x0001", reflect16(0xc6c6)); - uint8_t b1, b2; + uint8_t b1 = 0, b2 = 0; // ISO14443 crc B compute_crc(CRC_14443_B, data, (size_t)dlen, &b1, &b2); uint16_t crcBB_1 = (uint16_t)(b1 << 8 | b2); @@ -1079,71 +1079,88 @@ static int CmdAnalyseUnits(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "analyse units", "experiments of unit conversions found in HF. ETU (1/13.56mhz), US or SSP_CLK (1/3.39MHz)", - "analyse uints --etu 10" - "analyse uints --us 100" + "analyse uints --etu 10\n" + "analyse uints --us 100\n" ); void *argtable[] = { arg_param_begin, arg_int0(NULL, "etu", "", "number in ETU"), arg_int0(NULL, "us", "", "number in micro seconds (us)"), + arg_lit0("t", "selftest", "self tests"), arg_param_end }; - CLIExecWithReturn(ctx, Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, true); int etu = arg_get_int_def(ctx, 1, -1); int us = arg_get_int_def(ctx, 2, -1); + bool selftest = arg_get_lit(ctx, 3); CLIParserFree(ctx); - if (etu == -1 && us == -1) { + if (selftest) { PrintAndLogEx(INFO, "US to ETU conversions"); - PrintAndLogEx(INFO, " 9 US = %u ETU (expect 1) " _GREEN_("ok"), US_TO_ETU(9)); - PrintAndLogEx(INFO, " 10 US = %u ETU (expect 1) " _GREEN_("ok"), US_TO_ETU(10)); - PrintAndLogEx(INFO, " 94 US = %u ETU (expect 10) " _GREEN_("ok"), US_TO_ETU(94)); - PrintAndLogEx(INFO, " 95 US = %u ETU (expect 10) " _GREEN_("ok"), US_TO_ETU(95)); - PrintAndLogEx(INFO, " 302 US = %u ETU (expect 32) " _GREEN_("ok"), US_TO_ETU(302)); + + int32_t test = US_TO_ETU(9); + PrintAndLogEx(INFO, " 9 US = %i ETU (expect 1) %s", test, (test == 1) ? _GREEN_("ok") : _RED_("fail")); + + test = US_TO_ETU(10); + PrintAndLogEx(INFO, " 10 US = %i ETU (expect 1) %s", test, (test == 1) ? _GREEN_("ok") : _RED_("fail")); + + test = US_TO_ETU(94); + PrintAndLogEx(INFO, " 94 US = %i ETU (expect 10) %s", test, (test == 10) ? _GREEN_("ok") : _RED_("fail")); + + test = US_TO_ETU(95); + PrintAndLogEx(INFO, " 95 US = %i ETU (expect 10) %s", test, (test == 10) ? _GREEN_("ok") : _RED_("fail")); + + test = US_TO_ETU(302); + PrintAndLogEx(INFO, " 302 US = %i ETU (expect 32) %s", test, (test == 10) ? _GREEN_("ok") : _RED_("fail")); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "ETU to US conversions"); - PrintAndLogEx(INFO, " 1 ETU = %u US (expect 9.43) " _GREEN_("ok"), ETU_TO_US(1)); - PrintAndLogEx(INFO, " 10 ETU = %u US (expect 94.39) " _GREEN_("ok"), ETU_TO_US(10)); - PrintAndLogEx(INFO, " 32 ETU = %u US (expect 302) " _GREEN_("ok"), ETU_TO_US(32)); + float test_us = ETU_TO_US(1); + PrintAndLogEx(INFO, " 1 ETU = %3.2f US (expect 9.44) %s", test_us, (test_us == 9.44) ? _GREEN_("ok") : _RED_("fail")); + test_us = ETU_TO_US(10); + PrintAndLogEx(INFO, " 10 ETU = %4.2f US (expect 94.40) %s", test_us, (test_us == 94.40) ? _GREEN_("ok") : _RED_("fail")); + test_us = ETU_TO_US(32); + PrintAndLogEx(INFO, " 32 ETU = %5.2f US (expect 302.06) %s", test_us, (test_us == 320.06) ? _GREEN_("ok") : _RED_("fail")); + + PrintAndLogEx(INFO, "ETU in %f us", ONE_ETU_IN_US); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "US to SSP CLK 3.39MHz conversions"); - PrintAndLogEx(INFO, " 9 US = %u SSP (expect 32) ", US_TO_SSP(9)); - PrintAndLogEx(INFO, " 10 US = %u SSP (expect 32 or 48) ", US_TO_SSP(10)); - PrintAndLogEx(INFO, " 94 US = %u SSP (expect 320) ", US_TO_SSP(94)); - PrintAndLogEx(INFO, " 95 US = %u SSP (expect 320 or 336) ", US_TO_SSP(95)); - PrintAndLogEx(INFO, " 302 US = %u SSP (expect 1024) ", US_TO_SSP(302)); + PrintAndLogEx(INFO, " 9 US = %i SSP (expect 32) ", US_TO_SSP(9)); + PrintAndLogEx(INFO, " 10 US = %i SSP (expect 32 or 48) ", US_TO_SSP(10)); + PrintAndLogEx(INFO, " 94 US = %i SSP (expect 320) ", US_TO_SSP(94)); + PrintAndLogEx(INFO, " 95 US = %i SSP (expect 320 or 336) ", US_TO_SSP(95)); + PrintAndLogEx(INFO, " 302 US = %i SSP (expect 1024) ", US_TO_SSP(302)); - PrintAndLogEx(INFO, " 4949000 US = %u SSP ", US_TO_SSP(4949000)); + PrintAndLogEx(INFO, " 4949000 US = %i SSP ", US_TO_SSP(4949000)); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "SSP CLK 3.39MHz to US conversions"); - PrintAndLogEx(INFO, " 32 SSP = %u US (expect 9 or 10) " _GREEN_("ok"), SSP_TO_US(32)); - PrintAndLogEx(INFO, " 320 SSP = %u US (expect 94 or 95) " _GREEN_("ok"), SSP_TO_US(320)); - PrintAndLogEx(INFO, "1024 SSP = %u US (expect 302) " _GREEN_("ok"), SSP_TO_US(1024)); + PrintAndLogEx(INFO, " 32 SSP = %i US (expect 9 or 10) " _GREEN_("ok"), SSP_TO_US(32)); + PrintAndLogEx(INFO, " 320 SSP = %i US (expect 94 or 95) " _GREEN_("ok"), SSP_TO_US(320)); + PrintAndLogEx(INFO, "1024 SSP = %i US (expect 302) " _GREEN_("ok"), SSP_TO_US(1024)); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "ETU to SSP CLK 3.39MHz conversions"); - PrintAndLogEx(INFO, " 1 ETU = %u SSP (expect 32) " _GREEN_("ok"), ETU_TO_SSP(1)); - PrintAndLogEx(INFO, " 10 ETU = %u SSP (expect 320) " _GREEN_("ok"), ETU_TO_SSP(10)); - PrintAndLogEx(INFO, " 32 ETU = %u SSP (expect 1024) " _GREEN_("ok"), ETU_TO_SSP(32)); + PrintAndLogEx(INFO, " 1 ETU = %i SSP (expect 32) " _GREEN_("ok"), ETU_TO_SSP(1)); + PrintAndLogEx(INFO, " 10 ETU = %i SSP (expect 320) " _GREEN_("ok"), ETU_TO_SSP(10)); + PrintAndLogEx(INFO, " 32 ETU = %i SSP (expect 1024) " _GREEN_("ok"), ETU_TO_SSP(32)); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "SSP CLK 3.39MHz to ETU conversions"); - PrintAndLogEx(INFO, "1024 SSP = %u ETU (expect 32) " _GREEN_("ok"), SSP_TO_ETU(1024)); - PrintAndLogEx(INFO, " 320 SSP = %u ETU (expect 10) " _GREEN_("ok"), SSP_TO_ETU(320)); - PrintAndLogEx(INFO, " 32 SSP = %u ETU (expect 1) " _GREEN_("ok"), SSP_TO_ETU(32)); + PrintAndLogEx(INFO, "1024 SSP = %i ETU (expect 32) " _GREEN_("ok"), SSP_TO_ETU(1024)); + PrintAndLogEx(INFO, " 320 SSP = %i ETU (expect 10) " _GREEN_("ok"), SSP_TO_ETU(320)); + PrintAndLogEx(INFO, " 32 SSP = %i ETU (expect 1) " _GREEN_("ok"), SSP_TO_ETU(32)); } else if (etu) { - PrintAndLogEx(INFO, " %d ETU = %u us ", ETU_TO_US(etu), 0); - PrintAndLogEx(INFO, " %d ETU = %u SSP ", ETU_TO_SSP(etu), 0); + PrintAndLogEx(INFO, " %i ETU = %u us ", ETU_TO_US(etu), 0); + PrintAndLogEx(INFO, " %i ETU = %u SSP ", ETU_TO_SSP(etu), 0); } else if (us) { - PrintAndLogEx(INFO, " %d us = %u ETU ", US_TO_ETU(us), 0); - PrintAndLogEx(INFO, " %d us = %u SSP ", US_TO_SSP(us), 0); + PrintAndLogEx(INFO, " %i us = %u ETU ", US_TO_ETU(us), 0); + PrintAndLogEx(INFO, " %i us = %u SSP ", US_TO_SSP(us), 0); } return PM3_SUCCESS; diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 2208a34d4..38ffba69c 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -1759,7 +1759,7 @@ int getSamplesEx(uint32_t start, uint32_t end, bool verbose, bool ignore_lf_conf PrintAndLogEx(INFO, "Reading " _YELLOW_("%u") " bytes from device memory", n); PacketResponseNG resp; - if (!GetFromDevice(BIG_BUF, got, n, start, NULL, 0, &resp, 10000, true)) { + if (GetFromDevice(BIG_BUF, got, n, start, NULL, 0, &resp, 10000, true) == false) { PrintAndLogEx(WARNING, "timeout while waiting for reply."); return PM3_ETIMEOUT; } diff --git a/client/src/cmdhfthinfilm.c b/client/src/cmdhfthinfilm.c index 92c82f3f3..64b03a819 100644 --- a/client/src/cmdhfthinfilm.c +++ b/client/src/cmdhfthinfilm.c @@ -43,7 +43,7 @@ static int print_barcode(uint8_t *barcode, const size_t barcode_len, bool verbos if (verbose) { PrintAndLogEx(SUCCESS, " Data format : "_YELLOW_("%02X"), barcode[1]); if (barcode_len > 2) { - uint8_t b1, b2; + uint8_t b1 = 0, b2 = 0; compute_crc(CRC_14443_A, barcode, barcode_len - 2, &b1, &b2); bool isok = (barcode[barcode_len - 1] == b1 && barcode[barcode_len - 2] == b2); @@ -173,7 +173,7 @@ int CmdHfThinFilmSim(const char *Cmd) { CLIParserFree(ctx); if (addcrc && data_len <= 510) { - uint8_t b1, b2; + uint8_t b1 = 0, b2 = 0; compute_crc(CRC_14443_A, data, data_len, &b1, &b2); data[data_len++] = b2; data[data_len++] = b1; diff --git a/common/generator.c b/common/generator.c index 7cf5498e1..f0605f4ab 100644 --- a/common/generator.c +++ b/common/generator.c @@ -549,7 +549,7 @@ int mfdes_kdf_input_gallagher(uint8_t *uid, uint8_t uidLen, uint8_t keyNo, uint3 int mfc_generate4b_nuid(uint8_t *uid, uint8_t *nuid) { uint16_t crc; - uint8_t b1, b2; + uint8_t b1 = 0, b2 = 0; compute_crc(CRC_14443_A, uid, 3, &b1, &b2); nuid[0] = (b2 & 0xE0) | 0xF; From 2b3d33971447494422f8211f78a40aebc3da1f8d Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 2 Aug 2023 17:46:53 +0200 Subject: [PATCH 162/299] lto missing inits --- client/src/cmdlfindala.c | 2 +- client/src/comms.c | 2 +- common/generator.c | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/cmdlfindala.c b/client/src/cmdlfindala.c index 1af21ec20..ba1d14205 100644 --- a/client/src/cmdlfindala.c +++ b/client/src/cmdlfindala.c @@ -663,7 +663,7 @@ static int CmdIndalaSim(const char *Cmd) { bool fmt4041x = arg_get_lit(ctx, 5); - int32_t cardnumber; + int32_t cardnumber = 0; uint8_t fc = 0; uint16_t cn = 0; bool got_cn = false, got_26 = false; diff --git a/client/src/comms.c b/client/src/comms.c index 59c1cd1cf..68f8f9631 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -156,7 +156,7 @@ static void SendCommandNG_internal(uint16_t cmd, uint8_t *data, size_t len, bool memcpy(&txBufferNG.data, data, len); if ((g_conn.send_via_fpc_usart && g_conn.send_with_crc_on_fpc) || ((!g_conn.send_via_fpc_usart) && g_conn.send_with_crc_on_usb)) { - uint8_t first, second; + uint8_t first = 0, second = 0; compute_crc(CRC_14443_A, (uint8_t *)&txBufferNG, sizeof(PacketCommandNGPreamble) + len, &first, &second); tx_post->crc = (first << 8) + second; } else { diff --git a/common/generator.c b/common/generator.c index f0605f4ab..20f8a0b5f 100644 --- a/common/generator.c +++ b/common/generator.c @@ -173,7 +173,7 @@ uint32_t ul_ev1_pwdgenD(const uint8_t *uid) { // AIR purifier Xiaomi uint32_t ul_ev1_pwdgenE(const uint8_t *uid) { - uint8_t hash[20]; + uint8_t hash[20] = {0}; mbedtls_sha1(uid, 7, hash); uint32_t pwd = 0; pwd |= (hash[ hash[0] % 20 ]) << 24 ; @@ -185,7 +185,7 @@ uint32_t ul_ev1_pwdgenE(const uint8_t *uid) { // NDEF tools format password generator uint32_t ul_ev1_pwdgenF(const uint8_t *uid) { - uint8_t hash[16]; + uint8_t hash[16] = {0};; mbedtls_md5(uid, 7, hash); uint32_t pwd = 0; pwd |= hash[0] << 24; From 8f2b71ffc4a9f512a70cc014a53b0b99b91dcfbb Mon Sep 17 00:00:00 2001 From: "Rick Farina (Zero_Chaos)" Date: Wed, 2 Aug 2023 13:00:32 -0400 Subject: [PATCH 163/299] fix parallel build for proxguiqt.moc.cpp seed shuffle=2866679623 found that proxguiqt.moc.cpp also needs the same header so just defining the header and defining it's needs should make everyone happy --- client/Makefile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/Makefile b/client/Makefile index b79d248bb..e86d8d10e 100644 --- a/client/Makefile +++ b/client/Makefile @@ -781,12 +781,14 @@ proxmark3: $(OBJS) $(STATICLIBS) lualibs/pm3_cmd.lua lualibs/mfc_default_keys.lu src/proxgui.cpp: src/ui/ui_overlays.h src/ui/ui_image.h -src/proxguiqt.cpp: src/ui/ui_overlays.h src/ui/ui_image.h +src/proxguiqt.cpp: src/proxguiqt.h src/proxguiqt.moc.cpp: src/proxguiqt.h $(info [-] MOC $@) $(Q)$(MOC) -o$@ $^ +src/proxguiqt.h: src/ui/ui_overlays.h src/ui/ui_image.h + src/ui/ui_overlays.h: src/ui/overlays.ui $(info [-] UIC $@) $(Q)$(UIC) $^ > $@ From ce741d3b44496d7fe46ed95adf30f45c752c6d90 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 2 Aug 2023 19:12:59 +0200 Subject: [PATCH 164/299] defines --- include/iso14b.h | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/include/iso14b.h b/include/iso14b.h index 88ba0c2be..a9b55e69c 100644 --- a/include/iso14b.h +++ b/include/iso14b.h @@ -65,13 +65,17 @@ typedef struct { } PACKED iso14b_raw_cmd_t; -#define US_TO_SSP(x) ( (uint32_t)((x) * 3.39) ) -#define SSP_TO_US(x) ( (uint32_t)((x) / 3.39) ) +#define US_TO_SSP(x) ( (int32_t)((x) * 3.39) ) +#define SSP_TO_US(x) ( (int32_t)((x) / 3.39) ) -#define ETU_TO_SSP(x) ((uint32_t)((x) * 32)) -#define SSP_TO_ETU(x) ((uint32_t)((x) / 32)) +#define ETU_TO_SSP(x) ( (int32_t)((x) * 32) ) +#define SSP_TO_ETU(x) ( (int32_t)((x) / 32) ) -#define ETU_TO_US(x) ((uint32_t)((((x) * 9440000) / 1000000) + 0.5)) -#define US_TO_ETU(x) ((uint32_t)(((x) * 1000000 / 9440000) + 0.5)) +#define ONE_ETU_IN_US (12800000.0 / 1356000.0) +#define ETU_TO_US(x) (float)(ONE_ETU_IN_US * (x)) + +// #define ETU_TO_US(x) ( (int32_t)( ((x) * 9440000) / 1000000) ) +#define US_TO_ETU(x) ( (int32_t)( ((x) * 1000000) / 9440000) ) #endif // _ISO14B_H_ + From 1c35f14c760fe308606f19ed56fcf8f28a2bcb2e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 2 Aug 2023 19:49:26 +0200 Subject: [PATCH 165/299] thanks @DidierA for the sharp eyes --- client/src/atrs.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/client/src/atrs.c b/client/src/atrs.c index 0b22eb79b..d8f11587f 100644 --- a/client/src/atrs.c +++ b/client/src/atrs.c @@ -18,8 +18,8 @@ #include "atrs.h" #include #include -#include "commonutil.h" // ARRAYLEN -#include "ui.h" // PrintAndLogEx +#include "commonutil.h" // ARRAYLEN +#include "ui.h" // PrintAndLogEx // get a ATR description based on the atr bytes // returns description of the best match @@ -32,7 +32,7 @@ const char *getAtrInfo(const char *atr_str) { if (strlen(AtrTable[i].bytes) != slen) continue; - if (strstr(AtrTable[i].bytes, "..") != NULL) { + if (strstr(AtrTable[i].bytes, ".") != NULL) { char *tmp_atr = calloc(slen, sizeof(uint8_t)); if (tmp_atr == NULL) { PrintAndLogEx(FAILED, "failed to allocate memory"); @@ -40,7 +40,7 @@ const char *getAtrInfo(const char *atr_str) { } for (int j = 0; j < slen; j++) { - tmp_atr[j] = AtrTable[i].bytes[j] == '.' ? '.' : atr_str[j]; + tmp_atr[j] = (AtrTable[i].bytes[j] == '.') ? '.' : atr_str[j]; } if (strncmp(tmp_atr, AtrTable[i].bytes, slen) == 0) { @@ -50,9 +50,12 @@ const char *getAtrInfo(const char *atr_str) { free(tmp_atr); } else { - if (strncmp(atr_str, AtrTable[i].bytes, slen) == 0) return AtrTable[i].desc; + if (strncmp(atr_str, AtrTable[i].bytes, slen) == 0) { + return AtrTable[i].desc; + } } } + if (match >= 0) { return AtrTable[match].desc; } else { From 1e26d79ddd9e556f7b81924ff9951e71bf5f13cb Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 2 Aug 2023 19:50:47 +0200 Subject: [PATCH 166/299] added a new command to lookup ATR arrays --- client/src/cmddata.c | 51 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 38ffba69c..0b38689b8 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -38,6 +38,7 @@ #include "mbedtls/bignum.h" // big num #include "mbedtls/entropy.h" // #include "mbedtls/ctr_drbg.h" // random generator +#include "atrs.h" // ATR lookup uint8_t g_DemodBuffer[MAX_DEMOD_BUF_LEN]; size_t g_DemodBufferLen = 0; @@ -3411,6 +3412,51 @@ static int CmdEnvelope(const char *Cmd) { return PM3_SUCCESS; } +static int CmdAtrLookup(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "data atr", + "look up ATR record from bytearray\n" + "", + "data atr -d 3B6B00000031C064BE1B0100079000\n" + ); + + void *argtable[] = { + arg_param_begin, + arg_str0("d", NULL, "", "ASN1 encoded byte array"), + arg_lit0("t", "test", "perform selftest"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); + int dlen = 64; + uint8_t data[64]; + CLIGetHexWithReturn(ctx, 1, data, &dlen); +// bool selftest = arg_get_lit(ctx, 2); + CLIParserFree(ctx); +// if (selftest) { +// return atr_selftest(); +// } + // convert bytes to str. + char *hexstr = calloc((dlen << 1) + 1, sizeof(uint8_t)); + if (hexstr == NULL) { + PrintAndLogEx(WARNING, "failed to allocate memory"); + return PM3_EMALLOC; + } + hex_to_buffer((uint8_t *)hexstr, data, dlen, (dlen << 1), 0, 0, true); + + PrintAndLogEx(INFO, "ISO7816-3 ATR... " _YELLOW_("%s"), sprint_hex(data, dlen)); + PrintAndLogEx(INFO, "Fingerprint..."); + + char *copy = str_dup(getAtrInfo(hexstr)); + + char * token = strtok(copy, "\n"); + while ( token != NULL ) { + PrintAndLogEx(INFO, " %s", token); + token = strtok(NULL, "\n"); + } + free(copy); + return PM3_SUCCESS; +} + static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, @@ -3449,11 +3495,12 @@ static command_t CommandTable[] = { {"getbitstream", CmdGetBitStream, AlwaysAvailable, "Convert GraphBuffer's >=1 values to 1 and <1 to 0"}, {"-----------", CmdHelp, AlwaysAvailable, "------------------------- " _CYAN_("General") "-------------------------"}, - {"asn1", CmdAsn1Decoder, AlwaysAvailable, "asn1 decoder"}, + {"asn1", CmdAsn1Decoder, AlwaysAvailable, "ASN1 decoder"}, + {"atr", CmdAtrLookup, AlwaysAvailable, "ATR lookup"}, {"bin2hex", Cmdbin2hex, AlwaysAvailable, "Converts binary to hexadecimal"}, {"bitsamples", CmdBitsamples, IfPm3Present, "Get raw samples as bitstring"}, {"clear", CmdBuffClear, AlwaysAvailable, "Clears bigbuf on deviceside and graph window"}, - {"diff", CmdDiff, AlwaysAvailable, "diff of input files"}, + {"diff", CmdDiff, AlwaysAvailable, "Diff of input files"}, {"hexsamples", CmdHexsamples, IfPm3Present, "Dump big buffer as hex bytes"}, {"hex2bin", Cmdhex2bin, AlwaysAvailable, "Converts hexadecimal to binary"}, {"load", CmdLoad, AlwaysAvailable, "Load contents of file into graph window"}, From d6a0f8edace2afb808f13bf9673133dd8b50a707 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 2 Aug 2023 19:56:29 +0200 Subject: [PATCH 167/299] use string instead --- client/src/cmddata.c | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 0b38689b8..4507b19bd 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -3427,26 +3427,19 @@ static int CmdAtrLookup(const char *Cmd) { arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); - int dlen = 64; - uint8_t data[64]; - CLIGetHexWithReturn(ctx, 1, data, &dlen); + int dlen = 128; + uint8_t data[128 + 1]; + CLIGetStrWithReturn(ctx, 1, data, &dlen); + // bool selftest = arg_get_lit(ctx, 2); CLIParserFree(ctx); // if (selftest) { // return atr_selftest(); // } - // convert bytes to str. - char *hexstr = calloc((dlen << 1) + 1, sizeof(uint8_t)); - if (hexstr == NULL) { - PrintAndLogEx(WARNING, "failed to allocate memory"); - return PM3_EMALLOC; - } - hex_to_buffer((uint8_t *)hexstr, data, dlen, (dlen << 1), 0, 0, true); - - PrintAndLogEx(INFO, "ISO7816-3 ATR... " _YELLOW_("%s"), sprint_hex(data, dlen)); + PrintAndLogEx(INFO, "ISO7816-3 ATR... " _YELLOW_("%s"), data); PrintAndLogEx(INFO, "Fingerprint..."); - char *copy = str_dup(getAtrInfo(hexstr)); + char *copy = str_dup(getAtrInfo((char*)data)); char * token = strtok(copy, "\n"); while ( token != NULL ) { From 3fd8be2a47d0d1506828a76a8b51c88c228ccce0 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Wed, 2 Aug 2023 22:13:05 +0200 Subject: [PATCH 168/299] Avoid some unneeded rebuild and fix parallel call to fw rebuild when calling from install --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index be4af6682..1643881f8 100644 --- a/Makefile +++ b/Makefile @@ -39,7 +39,7 @@ INSTALLSCRIPTS=pm3 pm3-flash pm3-flash-all pm3-flash-bootrom pm3-flash-fullimage INSTALLSHARES=tools/jtag_openocd traces INSTALLDOCS=doc/*.md doc/md -install: all common/install +install: common/install common/install: $(info [@] Installing common resources to $(MYDESTDIR)$(PREFIX)...) @@ -170,7 +170,7 @@ client/%: FORCE cleanifplatformchanged $(info [*] MAKE $@) $(Q)$(MAKE) --no-print-directory -C client $(patsubst client/%,%,$@) DESTDIR=$(MYDESTDIR) recovery/all: bootrom/all armsrc/all -recovery/install: bootrom/all armsrc/all +recovery/install: bootrom/install armsrc/install recovery/%: FORCE cleanifplatformchanged $(info [*] MAKE $@) $(Q)$(MAKE) --no-print-directory -C recovery $(patsubst recovery/%,%,$@) DESTDIR=$(MYDESTDIR) From 5b58e438b168f747db79690cd60e9e18ec77c7ef Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 2 Aug 2023 22:41:35 +0200 Subject: [PATCH 169/299] style --- client/src/cmddata.c | 6 ++--- client/src/pm3line_vocabulory.h | 1 + doc/commands.json | 42 +++++++++++++++++++++++---------- doc/commands.md | 5 ++-- 4 files changed, 36 insertions(+), 18 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 4507b19bd..5c1948c14 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -3439,10 +3439,10 @@ static int CmdAtrLookup(const char *Cmd) { PrintAndLogEx(INFO, "ISO7816-3 ATR... " _YELLOW_("%s"), data); PrintAndLogEx(INFO, "Fingerprint..."); - char *copy = str_dup(getAtrInfo((char*)data)); + char *copy = str_dup(getAtrInfo((char *)data)); - char * token = strtok(copy, "\n"); - while ( token != NULL ) { + char *token = strtok(copy, "\n"); + while (token != NULL) { PrintAndLogEx(INFO, " %s", token); token = strtok(NULL, "\n"); } diff --git a/client/src/pm3line_vocabulory.h b/client/src/pm3line_vocabulory.h index 4168a0800..40d2bcc29 100644 --- a/client/src/pm3line_vocabulory.h +++ b/client/src/pm3line_vocabulory.h @@ -102,6 +102,7 @@ const static vocabulory_t vocabulory[] = { { 1, "data convertbitstream" }, { 1, "data getbitstream" }, { 1, "data asn1" }, + { 1, "data atr" }, { 1, "data bin2hex" }, { 0, "data bitsamples" }, { 1, "data clear" }, diff --git a/doc/commands.json b/doc/commands.json index c03e4c80a..858cc02cd 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -140,15 +140,17 @@ "command": "analyse units", "description": "experiments of unit conversions found in HF. ETU (1/13.56mhz), US or SSP_CLK (1/3.39MHz)", "notes": [ - "analyse uints --etu 10analyse uints --us 100" + "analyse uints --etu 10", + "analyse uints --us 100" ], "offline": true, "options": [ "-h, --help This help", "--etu number in ETU", - "--us number in micro seconds (us)" + "--us number in micro seconds (us)", + "-t, --selftest self tests" ], - "usage": "analyse units [-h] [--etu ] [--us ]" + "usage": "analyse units [-ht] [--etu ] [--us ]" }, "auto": { "command": "auto", @@ -204,6 +206,20 @@ ], "usage": "data asn1 [-ht] [-d ]" }, + "data atr": { + "command": "data atr", + "description": "look up ATR record from bytearray", + "notes": [ + "data atr -d 3B6B00000031C064BE1B0100079000" + ], + "offline": true, + "options": [ + "-h, --help This help", + "-d ASN1 encoded byte array", + "-t, --test perform selftest" + ], + "usage": "data atr [-ht] [-d ]" + }, "data autocorr": { "command": "data autocorr", "description": "Autocorrelate over window is used to detect repeating sequences. We use it as detection of how long in bits a message inside the signal is", @@ -1170,7 +1186,7 @@ }, "hf 14a list": { "command": "hf 14a list", - "description": "Alias of `trace list -t 14a` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "description": "Alias of `trace list -t 14a -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf 14a list --frame -> show frame delay times", "hf 14a list -1 -> use trace buffer" @@ -3166,7 +3182,7 @@ }, "hf iclass list": { "command": "hf iclass list", - "description": "Alias of `trace list -t iclass` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "description": "Alias of `trace list -t iclass -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf iclass list --frame -> show frame delay times", "hf iclass list -1 -> use trace buffer" @@ -3836,7 +3852,7 @@ }, "hf lto list": { "command": "hf lto list", - "description": "Alias of `trace list -t lto` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "description": "Alias of `trace list -t lto -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf lto list --frame -> show frame delay times", "hf lto list -1 -> use trace buffer" @@ -4591,7 +4607,7 @@ }, "hf mf list": { "command": "hf mf list", - "description": "Alias of `trace list -t mf` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "description": "Alias of `trace list -t mf -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf mf list --frame -> show frame delay times", "hf mf list -1 -> use trace buffer" @@ -5803,7 +5819,7 @@ }, "hf mfdes list": { "command": "hf mfdes list", - "description": "Alias of `trace list -t des` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "description": "Alias of `trace list -t des -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf mfdes list --frame -> show frame delay times", "hf mfdes list -1 -> use trace buffer" @@ -6216,7 +6232,7 @@ }, "hf mfp list": { "command": "hf mfp list", - "description": "Alias of `trace list -t mfp` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "description": "Alias of `trace list -t mfp -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf mfp list --frame -> show frame delay times", "hf mfp list -1 -> use trace buffer" @@ -6494,7 +6510,7 @@ }, "hf mfu list": { "command": "hf mfu list", - "description": "Alias of `trace list -t 14a` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "description": "Alias of `trace list -t 14a -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf 14a list --frame -> show frame delay times", "hf 14a list -1 -> use trace buffer" @@ -7064,7 +7080,7 @@ }, "hf topaz list": { "command": "hf topaz list", - "description": "Alias of `trace list -t topaz` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", + "description": "Alias of `trace list -t topaz -c` with selected protocol data to annotate trace buffer You can load a trace from file (see `trace load -h`) or it be downloaded from device by default It accepts all other arguments of `trace list`. Note that some might not be relevant for this specific protocol", "notes": [ "hf topaz list --frame -> show frame delay times", "hf topaz list -1 -> use trace buffer" @@ -11803,8 +11819,8 @@ } }, "metadata": { - "commands_extracted": 684, + "commands_extracted": 685, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-07-27T21:41:37" + "extracted_on": "2023-08-02T20:39:48" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index 7a8476a6c..27d6a05b4 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -120,11 +120,12 @@ Check column "offline" for their availability. |`data zerocrossings `|Y |`Count time between zero-crossings` |`data convertbitstream `|Y |`Convert GraphBuffer's 0/1 values to 127 / -127` |`data getbitstream `|Y |`Convert GraphBuffer's >=1 values to 1 and <1 to 0` -|`data asn1 `|Y |`asn1 decoder` +|`data asn1 `|Y |`ASN1 decoder` +|`data atr `|Y |`ATR lookup` |`data bin2hex `|Y |`Converts binary to hexadecimal` |`data bitsamples `|N |`Get raw samples as bitstring` |`data clear `|Y |`Clears bigbuf on deviceside and graph window` -|`data diff `|Y |`diff of input files` +|`data diff `|Y |`Diff of input files` |`data hexsamples `|N |`Dump big buffer as hex bytes` |`data hex2bin `|Y |`Converts hexadecimal to binary` |`data load `|Y |`Load contents of file into graph window` From fd987ab8a2ca486a68b3b832d62e19b0c4ddbfa5 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 2 Aug 2023 23:47:25 +0200 Subject: [PATCH 170/299] fix string formatter --- CHANGELOG.md | 2 ++ client/src/cmdanalyse.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5dd92a393..5a5ca1b7c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added `data atr` - a command to lookup ATR (@iceman1001) + - Fixed bug in ATR lookup fct, thanks @DidierA (@iceman1001) - Updated ATR list (@iceman1001) - Changed `mem load -m` - now correctly erase all allocated flash memory (@iceman1001) - Fixed emulator quick dump to handle MFC Ev1 extra sectors (@iceman100) diff --git a/client/src/cmdanalyse.c b/client/src/cmdanalyse.c index 3713befb5..bab54f3da 100644 --- a/client/src/cmdanalyse.c +++ b/client/src/cmdanalyse.c @@ -1156,7 +1156,7 @@ static int CmdAnalyseUnits(const char *Cmd) { PrintAndLogEx(INFO, " 32 SSP = %i ETU (expect 1) " _GREEN_("ok"), SSP_TO_ETU(32)); } else if (etu) { - PrintAndLogEx(INFO, " %i ETU = %u us ", ETU_TO_US(etu), 0); + PrintAndLogEx(INFO, " %3.2f ETU = %u us ", ETU_TO_US(etu), 0); PrintAndLogEx(INFO, " %i ETU = %u SSP ", ETU_TO_SSP(etu), 0); } else if (us) { PrintAndLogEx(INFO, " %i us = %u ETU ", US_TO_ETU(us), 0); From 9dfc39dbbf75d85a148647c1df5af649c1dc9c98 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 3 Aug 2023 00:37:05 +0200 Subject: [PATCH 171/299] Fix error=missing-field-initializers when compiling repo default_version_pm3.c --- common/default_version_pm3.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/common/default_version_pm3.c b/common/default_version_pm3.c index 46eac57c9..d93a7ef15 100644 --- a/common/default_version_pm3.c +++ b/common/default_version_pm3.c @@ -26,5 +26,7 @@ const struct version_information_t SECTVERSINFO g_version_information = { 1, /* version 1 */ 0, /* version information not present */ 2, /* cleanliness couldn't be determined */ - /* Remaining fields: zero */ + "Iceman/master/unknown", + "1970-01-01 00:00:00", + "no sha256" }; From cb72897b17019fc565cac87f9578809efdf66611 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 3 Aug 2023 00:42:08 +0200 Subject: [PATCH 172/299] `mkversion.sh`: now regenerates version_pm3.c (and consequently the binaries) only when needed and add --force to forcibly regenerate version_pm3.c and small fixes: * document mkversion.sh usage * remove call to mkversion.sh in client/experimental_lib/CMakeLists.txt on release * remove call to old `mkversion.pl` in bootrom/Makefile * just in case, mkversion.sh takes care of atomic write of the file --- CHANGELOG.md | 1 + Makefile | 4 +-- armsrc/Makefile | 6 ++-- bootrom/Makefile | 6 ++-- client/CMakeLists.txt | 2 +- client/Makefile | 6 ++-- client/experimental_lib/CMakeLists.txt | 2 +- tools/mkversion.sh | 49 ++++++++++++++++++++++++-- 8 files changed, 61 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5dd92a393..21e6a7026 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `mkversion.sh` - now regenerates version_pm3.c (and consequently the binaries) only when needed (@doegox) - Updated ATR list (@iceman1001) - Changed `mem load -m` - now correctly erase all allocated flash memory (@iceman1001) - Fixed emulator quick dump to handle MFC Ev1 extra sectors (@iceman100) diff --git a/Makefile b/Makefile index 1643881f8..436201bdd 100644 --- a/Makefile +++ b/Makefile @@ -370,10 +370,10 @@ release: # - Tagging temporarily... @git tag -a -m "Release $(VERSION) - $(RELEASE_NAME)" $(VERSION) # - Changing default version information based on new tag - @$(SH) tools/mkversion.sh > common/default_version_pm3.c.tmp && $(MV) common/default_version_pm3.c.tmp common/default_version_pm3.c + @$(SH) tools/mkversion.sh common/default_version_pm3.c # - Removing mkversion calls @sed -i 's#^.*\.\./tools/mkversion.sh.*|| #\t$$(Q)#' client/Makefile bootrom/Makefile armsrc/Makefile - @sed -i '/COMMAND/s/sh .*|| //' client/CMakeLists.txt + @sed -i '/COMMAND/s/sh .*|| //' client/CMakeLists.txt client/experimental_lib/CMakeLists.txt # - Deleting tag... @git tag -d $(VERSION) # - Amending commit... diff --git a/armsrc/Makefile b/armsrc/Makefile index c481a6f22..fe34c8a8f 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -181,10 +181,10 @@ showinfo: .DELETE_ON_ERROR: -# version_pm3.c should be remade on every time fullimage.stage1.elf should be remade +# version_pm3.c should be checked on every time fullimage.stage1.elf should be remade version_pm3.c: default_version_pm3.c $(OBJDIR)/fpga_version_info.o $(OBJDIR)/fpga_all.o $(THUMBOBJ) $(ARMOBJ) .FORCE - $(info [-] GEN $@) - $(Q)$(SH) ../tools/mkversion.sh > $@ || $(CP) $< $@ + $(info [-] CHECK $@) + $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ fpga_version_info.c: $(FPGA_BITSTREAMS) $(FPGA_COMPRESSOR) $(info [-] GEN $@) diff --git a/bootrom/Makefile b/bootrom/Makefile index cad3e17d1..b6825530d 100644 --- a/bootrom/Makefile +++ b/bootrom/Makefile @@ -53,10 +53,10 @@ INSTALLFW = $(OBJDIR)/bootrom.elf OBJS = $(OBJDIR)/bootrom.s19 -# version_pm3.c should be remade on every compilation +# version_pm3.c should be checked on every compilation version_pm3.c: default_version_pm3.c .FORCE - $(info [=] GEN $@) - $(Q)$(SH) ../tools/mkversion.sh > $@ || $(PERL) ../tools/mkversion.pl > $@ || $(CP) $< $@ + $(info [=] CHECK $@) + $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ all: showinfo $(OBJS) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index be4e00a93..cbbedef73 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -397,7 +397,7 @@ set (TARGET_SOURCES add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c - COMMAND sh ${PM3_ROOT}/tools/mkversion.sh > ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c + COMMAND sh ${PM3_ROOT}/tools/mkversion.sh ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c DEPENDS ${PM3_ROOT}/common/default_version_pm3.c ) diff --git a/client/Makefile b/client/Makefile index e86d8d10e..0444b5932 100644 --- a/client/Makefile +++ b/client/Makefile @@ -918,10 +918,10 @@ src/pm3_pywrap.c: pm3.i .PHONY: all clean install uninstall tarbin .FORCE -# version_pm3.c should be remade on every compilation +# version_pm3.c should be checked on every compilation src/version_pm3.c: default_version_pm3.c .FORCE - $(info [=] GEN $@) - $(Q)$(SH) ../tools/mkversion.sh > $@ || $(CP) $< $@ + $(info [=] CHECK $@) + $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ # easy printing of MAKE VARIABLES print-%: ; @echo $* = $($*) diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index cec361446..73ec65aad 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -397,7 +397,7 @@ set (TARGET_SOURCES add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c - COMMAND sh ${PM3_ROOT}/tools/mkversion.sh > ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c + COMMAND sh ${PM3_ROOT}/tools/mkversion.sh ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c DEPENDS ${PM3_ROOT}/common/default_version_pm3.c ) diff --git a/tools/mkversion.sh b/tools/mkversion.sh index f741f2980..dd95e0441 100755 --- a/tools/mkversion.sh +++ b/tools/mkversion.sh @@ -1,5 +1,13 @@ #!/usr/bin/env sh +if [ "$1" = "--help" ] || [ "$1" = "-h" ] || [ "$1" = "" ]; then + echo "To report a short string about the current version:" + echo " $0 --short" + echo "To regenerate version_pm3.c if needed:" + echo " $0 [--force] [--undecided] path/to/version_pm3.c" + exit 0 +fi + # Output a version_pm3.c file that includes information about the current build # From mkversion.pl # pure sh POSIX as now even on Windows we use WSL or ProxSpace with sh available @@ -13,6 +21,27 @@ if [ "$1" = "--short" ]; then SHORT=true shift fi +FORCE=false +if [ "$1" = "--force" ]; then + FORCE=true + shift +fi +UNDECIDED=false +if [ "$1" = "--undecided" ]; then + UNDECIDED=true + shift +fi +VERSIONSRC="$1" + +if ! $SHORT && [ "$VERSIONSRC" = "" ]; then + echo "Error: $0 is missing its destination filename" + exit 1 +fi + +if $SHORT && [ "$VERSIONSRC" != "" ]; then + echo "Error: can't output a short string and generate file at the same time" + exit 1 +fi # if you are making your own fork, change this line to reflect your fork-name fullgitinfo="Iceman" @@ -27,7 +56,7 @@ if [ "$commandGIT" != "" ]; then # now avoiding the "fatal: No names found, cannot describe anything." error by fallbacking to abbrev hash in such case gitversion=$(git describe --dirty --always) gitbranch=$(git rev-parse --abbrev-ref HEAD) - if [ "$1" != "--undecided" ]; then + if $UNDECIDED; then if [ "$gitversion" != "${gitversion%-dirty}" ]; then clean=0 else @@ -68,7 +97,21 @@ sha=$( if [ "$sha" = "" ]; then sha="no sha256" fi -cat < "${VERSIONSRC}.tmp" < Date: Thu, 3 Aug 2023 01:13:57 +0200 Subject: [PATCH 173/299] make release: add --force to call to mkversion.sh. Not strictly needed but cleaner... --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 436201bdd..9a3ae0611 100644 --- a/Makefile +++ b/Makefile @@ -370,7 +370,7 @@ release: # - Tagging temporarily... @git tag -a -m "Release $(VERSION) - $(RELEASE_NAME)" $(VERSION) # - Changing default version information based on new tag - @$(SH) tools/mkversion.sh common/default_version_pm3.c + @$(SH) tools/mkversion.sh --force common/default_version_pm3.c # - Removing mkversion calls @sed -i 's#^.*\.\./tools/mkversion.sh.*|| #\t$$(Q)#' client/Makefile bootrom/Makefile armsrc/Makefile @sed -i '/COMMAND/s/sh .*|| //' client/CMakeLists.txt client/experimental_lib/CMakeLists.txt From a2ea5e3a24b61e9907dc91a057fde328ac9ed42b Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 3 Aug 2023 07:43:30 +0200 Subject: [PATCH 174/299] since mkversion doesn generate all the time and only writes to file the sha256, we check the string from --short instead --- tools/pm3_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index 68d522ed6..434468147 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -250,7 +250,7 @@ while true; do if ! CheckExecute "findbits_test test" "tools/findbits_test.py 2>&1" "OK"; then break; fi if ! CheckExecute "pm3_eml_mfd test" "tools/pm3_eml_mfd_test.py 2>&1" "OK"; then break; fi if ! CheckExecute "recover_pk test" "tools/recover_pk.py selftests 2>&1" "Tests:.*\[OK\]"; then break; fi - if ! CheckExecute "mkversion sha256 test" "tools/mkversion.sh" '"[0-9a-f]{9}"'; then break; fi + if ! CheckExecute "mkversion create test" "tools/mkversion.sh --short" 'Iceman/'; then break; fi fi if $TESTALL || $TESTBOOTROM; then echo -e "\n${C_BLUE}Testing bootrom:${C_NC}" From 24a138eeb1143c93f839f962cc3e8d8716637563 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 3 Aug 2023 08:41:11 +0200 Subject: [PATCH 175/299] fix some potential empty responses and too much inline calls --- client/deps/hardnested/hardnested_bf_core.c | 2 +- client/deps/hardnested/hardnested_bruteforce.c | 2 +- client/src/cmdlf.c | 11 +++++++++++ client/src/cmdlfem4x50.c | 17 +++++++++++++++-- client/src/comms.c | 8 ++++---- 5 files changed, 32 insertions(+), 8 deletions(-) diff --git a/client/deps/hardnested/hardnested_bf_core.c b/client/deps/hardnested/hardnested_bf_core.c index 63eba8eba..a84ce0df9 100644 --- a/client/deps/hardnested/hardnested_bf_core.c +++ b/client/deps/hardnested/hardnested_bf_core.c @@ -371,7 +371,7 @@ uint64_t CRACK_STATES_BITSLICED(uint32_t cuid, uint8_t *best_first_bytes, statel for (uint32_t tests = 0; tests < nonces_to_bruteforce; ++tests) { // common bits with preceding test nonce uint32_t common_bits = next_common_bits; //tests ? trailing_zeros(bf_test_nonce_2nd_byte[tests] ^ bf_test_nonce_2nd_byte[tests-1]) : 0; - next_common_bits = tests < nonces_to_bruteforce - 1 ? trailing_zeros(bf_test_nonce_2nd_byte[tests] ^ bf_test_nonce_2nd_byte[tests + 1]) : 0; + next_common_bits = (tests < nonces_to_bruteforce - 1) ? trailing_zeros(bf_test_nonce_2nd_byte[tests] ^ bf_test_nonce_2nd_byte[tests + 1]) : 0; uint32_t parity_bit_idx = 1; // start checking with the parity of second nonce byte bitslice_value_t fb_bits = fbb[common_bits]; // start with precomputed feedback bits from previous nonce bitslice_value_t ks_bits = ksb[common_bits]; // dito for first keystream bits diff --git a/client/deps/hardnested/hardnested_bruteforce.c b/client/deps/hardnested/hardnested_bruteforce.c index 6bc400d1d..e4b203f4d 100644 --- a/client/deps/hardnested/hardnested_bruteforce.c +++ b/client/deps/hardnested/hardnested_bruteforce.c @@ -96,7 +96,7 @@ static uint32_t keys_found = 0; static uint64_t num_keys_tested; static uint64_t found_bs_key = 0; -inline uint8_t trailing_zeros(uint8_t byte) { +uint8_t trailing_zeros(uint8_t byte) { static const uint8_t trailing_zeros_LUT[256] = { 8, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index 81ca3a081..87095631b 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -382,6 +382,17 @@ int CmdLFCommandRead(const char *Cmd) { SendCommandNG(CMD_LF_MOD_THEN_ACQ_RAW_ADC, (uint8_t *)&payload, PAYLOAD_HEADER_SIZE + cmd_len); PacketResponseNG resp; + // init to ZERO + resp.cmd = 0, + resp.length = 0, + resp.magic = 0, + resp.status = 0, + resp.crc = 0, + resp.ng = false, + resp.oldarg[0] = 0; + resp.oldarg[1] = 0; + resp.oldarg[2] = 0; + memset(resp.data.asBytes, 0, PM3_CMD_DATA_SIZE); i = 10; // 20sec wait loop diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index 09aeb8e84..c81767c7a 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -1230,9 +1230,22 @@ int CmdEM4x50Sim(const char *Cmd) { clearCommandBuffer(); SendCommandNG(CMD_LF_EM4X50_SIM, (uint8_t *)&password, sizeof(password)); - PacketResponseNG resp; - + PrintAndLogEx(INFO, "Press " _GREEN_("") " or pm3-button to abort simulation"); + + PacketResponseNG resp; + // init to ZERO + resp.cmd = 0, + resp.length = 0, + resp.magic = 0, + resp.status = 0, + resp.crc = 0, + resp.ng = false, + resp.oldarg[0] = 0; + resp.oldarg[1] = 0; + resp.oldarg[2] = 0; + memset(resp.data.asBytes, 0, PM3_CMD_DATA_SIZE); + bool keypress; do { keypress = kbd_enter_pressed(); diff --git a/client/src/comms.c b/client/src/comms.c index 68f8f9631..a7ed0fd06 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -742,10 +742,6 @@ static size_t communication_delay(void) { bool WaitForResponseTimeoutW(uint32_t cmd, PacketResponseNG *response, size_t ms_timeout, bool show_warning) { PacketResponseNG resp; - if (response == NULL) { - response = &resp; - } - // init to ZERO resp.cmd = 0, resp.length = 0, @@ -758,6 +754,10 @@ bool WaitForResponseTimeoutW(uint32_t cmd, PacketResponseNG *response, size_t ms resp.oldarg[2] = 0; memset(resp.data.asBytes, 0, PM3_CMD_DATA_SIZE); + if (response == NULL) { + response = &resp; + } + // Add delay depending on the communication channel & speed if (ms_timeout != (size_t) - 1) ms_timeout += communication_delay(); From 0e84860c2f0331d83a555c60373346ae73728da0 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 3 Aug 2023 08:42:52 +0200 Subject: [PATCH 176/299] less inline calls --- client/deps/tinycbor/cborencoder.c | 10 +++++----- client/deps/tinycbor/cborparser.c | 8 ++++---- client/src/crypto/asn1dump.c | 2 +- common/commonutil.c | 20 ++++++++++---------- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/client/deps/tinycbor/cborencoder.c b/client/deps/tinycbor/cborencoder.c index 570319e67..ae034d727 100644 --- a/client/deps/tinycbor/cborencoder.c +++ b/client/deps/tinycbor/cborencoder.c @@ -232,21 +232,21 @@ static inline void put64(void *where, uint64_t v) { memcpy(where, &v, sizeof(v)); } -static inline bool would_overflow(CborEncoder *encoder, size_t len) { +static bool would_overflow(CborEncoder *encoder, size_t len) { ptrdiff_t remaining = (ptrdiff_t)encoder->end; remaining -= remaining ? (ptrdiff_t)encoder->data.ptr : encoder->data.bytes_needed; remaining -= (ptrdiff_t)len; return unlikely(remaining < 0); } -static inline void advance_ptr(CborEncoder *encoder, size_t n) { +static void advance_ptr(CborEncoder *encoder, size_t n) { if (encoder->end) encoder->data.ptr += n; else encoder->data.bytes_needed += n; } -static inline CborError append_to_buffer(CborEncoder *encoder, const void *data, size_t len) { +static CborError append_to_buffer(CborEncoder *encoder, const void *data, size_t len) { if (would_overflow(encoder, len)) { if (encoder->end != NULL) { len -= encoder->end - encoder->data.ptr; @@ -263,11 +263,11 @@ static inline CborError append_to_buffer(CborEncoder *encoder, const void *data, return CborNoError; } -static inline CborError append_byte_to_buffer(CborEncoder *encoder, uint8_t byte) { +static CborError append_byte_to_buffer(CborEncoder *encoder, uint8_t byte) { return append_to_buffer(encoder, &byte, 1); } -static inline CborError encode_number_no_update(CborEncoder *encoder, uint64_t ui, uint8_t shiftedMajorType) { +static CborError encode_number_no_update(CborEncoder *encoder, uint64_t ui, uint8_t shiftedMajorType) { /* Little-endian would have been so much more convenient here: * We could just write at the beginning of buf but append_to_buffer * only the necessary bytes. diff --git a/client/deps/tinycbor/cborparser.c b/client/deps/tinycbor/cborparser.c index 2dade3a0d..468fe5da2 100644 --- a/client/deps/tinycbor/cborparser.c +++ b/client/deps/tinycbor/cborparser.c @@ -142,19 +142,19 @@ * \endif */ -static inline uint16_t get16(const uint8_t *ptr) { +static uint16_t get16(const uint8_t *ptr) { uint16_t result; memcpy(&result, ptr, sizeof(result)); return cbor_ntohs(result); } -static inline uint32_t get32(const uint8_t *ptr) { +static uint32_t get32(const uint8_t *ptr) { uint32_t result; memcpy(&result, ptr, sizeof(result)); return cbor_ntohl(result); } -static inline uint64_t get64(const uint8_t *ptr) { +static uint64_t get64(const uint8_t *ptr) { uint64_t result; memcpy(&result, ptr, sizeof(result)); return cbor_ntohll(result); @@ -949,7 +949,7 @@ CborError cbor_value_calculate_string_length(const CborValue *value, size_t *len return _cbor_value_copy_string(value, NULL, len, NULL); } -static inline void prepare_string_iteration(CborValue *it) { +static void prepare_string_iteration(CborValue *it) { if (!cbor_value_is_length_known(it)) { /* chunked string: we're before the first chunk; * advance to the first chunk */ diff --git a/client/src/crypto/asn1dump.c b/client/src/crypto/asn1dump.c index 5fcabe20a..025e200ca 100644 --- a/client/src/crypto/asn1dump.c +++ b/client/src/crypto/asn1dump.c @@ -342,7 +342,7 @@ static void asn1_tag_dump_object_id(const struct tlv *tlv, const struct asn1_tag if (jsondesc) { PrintAndLogEx(NORMAL, " - %s" NOLF, jsondesc); } else { - const char *ppstr; + const char *ppstr = NULL; mbedtls_oid_get_attr_short_name(&asn1_buf, &ppstr); if (ppstr && strnlen(ppstr, 1)) { PrintAndLogEx(NORMAL, " (%s)", ppstr); diff --git a/common/commonutil.c b/common/commonutil.c index 2265c240c..07b55f1f9 100644 --- a/common/commonutil.c +++ b/common/commonutil.c @@ -160,32 +160,32 @@ uint64_t bytes_to_num(uint8_t *src, size_t len) { return num; } -inline uint16_t MemLeToUint2byte(const uint8_t *data) { - return (uint16_t)( +uint16_t MemLeToUint2byte(const uint8_t *data) { + return (uint16_t)((uint16_t) (data[1] << 8) + data[0] ); } -inline uint32_t MemLeToUint3byte(const uint8_t *data) { - return (uint32_t)( +uint32_t MemLeToUint3byte(const uint8_t *data) { + return (uint32_t)((uint32_t) (data[2] << 16) + (data[1] << 8) + data[0] ); } -inline uint32_t MemLeToUint4byte(const uint8_t *data) { - return (uint32_t)( +uint32_t MemLeToUint4byte(const uint8_t *data) { + return (uint32_t)((uint32_t) (data[3] << 24) + (data[2] << 16) + (data[1] << 8) + data[0] ); } -inline uint16_t MemBeToUint2byte(const uint8_t *data) { - return (uint16_t)( +uint16_t MemBeToUint2byte(const uint8_t *data) { + return (uint16_t)((uint16_t) (data[0] << 8) + data[1] ); } -inline uint32_t MemBeToUint3byte(const uint8_t *data) { - return (uint32_t)( +uint32_t MemBeToUint3byte(const uint8_t *data) { + return (uint32_t)((uint32_t) (data[0] << 16) + (data[1] << 8) + data[2] ); } From eaf11127be3e1138782a57b924dc5212fb49e38b Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 3 Aug 2023 12:55:06 +0200 Subject: [PATCH 177/299] since HF SEARCH triggers multiple swaps of FPGA image HF -> HF 15 -> HF FELICA , its better to have relevant checks when the correct fpga image is loaded --- client/src/cmdhf.c | 78 ++++++++++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 37 deletions(-) diff --git a/client/src/cmdhf.c b/client/src/cmdhf.c index b5cff4e19..ef94adf41 100644 --- a/client/src/cmdhf.c +++ b/client/src/cmdhf.c @@ -113,24 +113,6 @@ int CmdHFSearch(const char *Cmd) { } } - PROMPT_CLEARLINE; - PrintAndLogEx(INPLACE, " Searching for ISO15693 tag..."); - if (IfPm3Iso15693()) { - if (readHF15Uid(false, false)) { - PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("ISO 15693 tag") " found\n"); - res = PM3_SUCCESS; - } - } - - PROMPT_CLEARLINE; - PrintAndLogEx(INPLACE, " Searching for iCLASS / PicoPass tag..."); - if (IfPm3Iclass()) { - if (read_iclass_csn(false, false, false) == PM3_SUCCESS) { - PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("iCLASS tag / PicoPass tag") " found\n"); - res = PM3_SUCCESS; - } - } - PROMPT_CLEARLINE; PrintAndLogEx(INPLACE, " Searching for LEGIC tag..."); if (IfPm3Legicrf()) { @@ -149,25 +131,6 @@ int CmdHFSearch(const char *Cmd) { } } - // 14b is the longest test - PROMPT_CLEARLINE; - PrintAndLogEx(INPLACE, " Searching for ISO14443-B tag..."); - if (IfPm3Iso14443b()) { - if (readHF14B(false, false) == PM3_SUCCESS) { - PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("ISO 14443-B tag") " found\n"); - res = PM3_SUCCESS; - } - } - - PROMPT_CLEARLINE; - PrintAndLogEx(INPLACE, " Searching for FeliCa tag..."); - if (IfPm3Felica()) { - if (read_felica_uid(false, false) == PM3_SUCCESS) { - PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("ISO 18092 / FeliCa tag") " found\n"); - res = PM3_SUCCESS; - } - } - // texkom PROMPT_CLEARLINE; PrintAndLogEx(INPLACE, " Searching for TEXKOM tag..."); @@ -186,6 +149,47 @@ int CmdHFSearch(const char *Cmd) { } } + // 14b is the longest test + PROMPT_CLEARLINE; + PrintAndLogEx(INPLACE, " Searching for ISO14443-B tag..."); + if (IfPm3Iso14443b()) { + if (readHF14B(false, false) == PM3_SUCCESS) { + PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("ISO 14443-B tag") " found\n"); + res = PM3_SUCCESS; + } + } + + // OBS! This triggers a swap to FPGA_BITSTREAM_HF_15 == 1.5sec delay + + PROMPT_CLEARLINE; + PrintAndLogEx(INPLACE, " Searching for ISO15693 tag..."); + if (IfPm3Iso15693()) { + if (readHF15Uid(false, false)) { + PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("ISO 15693 tag") " found\n"); + res = PM3_SUCCESS; + } + } + + PROMPT_CLEARLINE; + PrintAndLogEx(INPLACE, " Searching for iCLASS / PicoPass tag..."); + if (IfPm3Iclass()) { + if (read_iclass_csn(false, false, false) == PM3_SUCCESS) { + PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("iCLASS tag / PicoPass tag") " found\n"); + res = PM3_SUCCESS; + } + } + + // OBS! This triggers a swap to FPGA_BITSTREAM_HF_FELICA == 1.5sec delay + + PROMPT_CLEARLINE; + PrintAndLogEx(INPLACE, " Searching for FeliCa tag..."); + if (IfPm3Felica()) { + if (read_felica_uid(false, false) == PM3_SUCCESS) { + PrintAndLogEx(SUCCESS, "\nValid " _GREEN_("ISO 18092 / FeliCa tag") " found\n"); + res = PM3_SUCCESS; + } + } + /* PROMPT_CLEARLINE; PrintAndLogEx(INPLACE, " Searching for CryptoRF tag..."); From 33876ea8922184ab0ea3dad30a40e61f8447e574 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 3 Aug 2023 13:01:49 +0200 Subject: [PATCH 178/299] adapting fpga_compress to free memory and close file handles in exceptions --- CHANGELOG.md | 2 + tools/fpga_compress/fpga_compress.c | 133 ++++++++++++++++++---------- 2 files changed, 87 insertions(+), 48 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f5879133..30854d631 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed `fpga_compress` - better deallocation of memory and closing of file handles (@iceman1001) + - Changed `hf search` - less swaps of fpga images on device side (@iceman1001) - Changed `mkversion.sh` - now regenerates version_pm3.c (and consequently the binaries) only when needed (@doegox) - Added `data atr` - a command to lookup ATR (@iceman1001) - Fixed bug in ATR lookup fct, thanks @DidierA (@iceman1001) diff --git a/tools/fpga_compress/fpga_compress.c b/tools/fpga_compress/fpga_compress.c index 711cc2f68..faa35ccb9 100644 --- a/tools/fpga_compress/fpga_compress.c +++ b/tools/fpga_compress/fpga_compress.c @@ -21,6 +21,10 @@ #include "fpga.h" #include "lz4hc.h" +#ifndef MIN +#define MIN(a,b) ((a) < (b) ? (a) : (b)) +#endif + static void usage(void) { fprintf(stdout, "Usage: fpga_compress ... \n"); fprintf(stdout, " Combine n FPGA bitstream files and compress them into one.\n\n"); @@ -57,10 +61,6 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile) { , num_infiles * FPGA_CONFIG_SIZE ); - for (uint16_t j = 0; j < num_infiles; j++) { - fclose(infile[j]); - } - free(fpga_config); return (EXIT_FAILURE); } @@ -77,59 +77,75 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile) { } } - } while (!all_feof(infile, num_infiles)); + } while (all_feof(infile, num_infiles) == false); uint32_t buffer_size = FPGA_RING_BUFFER_BYTES; - if (num_infiles == 1) - buffer_size = 1024 * 1024; //1M for now + if (num_infiles == 1) { + // 1M bytes for now + buffer_size = 1024 * 1024; + } uint32_t outsize_max = LZ4_compressBound(buffer_size); char *outbuf = calloc(outsize_max, sizeof(char)); + if (outbuf == NULL) { + fprintf(stderr, "failed to allocate memory"); + free(fpga_config); + return (EXIT_FAILURE); + } + + char *ring_buffer = calloc(buffer_size, sizeof(char)); + if (ring_buffer == NULL) { + fprintf(stderr, "failed to allocate memory"); + free(outbuf); + free(fpga_config); + return (EXIT_FAILURE); + } LZ4_streamHC_t *lz4_streamhc = LZ4_createStreamHC(); LZ4_resetStreamHC_fast(lz4_streamhc, LZ4HC_CLEVEL_MAX); int current_in = 0; int current_out = 0; - char *ring_buffer = calloc(buffer_size, sizeof(char)); + while (current_in < total_size) { - int bytes_to_copy = FPGA_RING_BUFFER_BYTES; - if (total_size - current_in < FPGA_RING_BUFFER_BYTES) - bytes_to_copy = total_size - current_in; + + int bytes_to_copy = MIN(FPGA_RING_BUFFER_BYTES, (total_size - current_in)); memcpy(ring_buffer, fpga_config + current_in, bytes_to_copy); + int cmp_bytes = LZ4_compress_HC_continue(lz4_streamhc, ring_buffer, outbuf, bytes_to_copy, outsize_max); if (cmp_bytes < 0) { - fprintf(stderr, "(lz4 - zlib_compress) error, got negative number of bytes from LZ4_compress_HC_continue call. got %d ", cmp_bytes); + fprintf(stderr, "(lz4 - zlib_compress) error, got negative number of bytes from LZ4_compress_HC_continue call. got %d", cmp_bytes); free(ring_buffer); free(outbuf); free(fpga_config); + LZ4_freeStreamHC(lz4_streamhc); return (EXIT_FAILURE); } + + // write size fwrite(&cmp_bytes, sizeof(int), 1, outfile); + + // write compressed data fwrite(outbuf, sizeof(char), cmp_bytes, outfile); current_in += bytes_to_copy; current_out += cmp_bytes; } + // free allocated buffers free(ring_buffer); free(outbuf); free(fpga_config); - - fclose(outfile); - for (uint16_t j = 0; j < num_infiles; j++) { - fclose(infile[j]); - } LZ4_freeStreamHC(lz4_streamhc); - fprintf(stdout, "compressed %u input bytes to %d output bytes\n", total_size, current_out); - if (current_out == 0) { fprintf(stderr, "error in lz4"); return (EXIT_FAILURE); + } else { + fprintf(stdout, "compressed %u input bytes to %d output bytes\n", total_size, current_out); } return (EXIT_SUCCESS); } @@ -159,12 +175,6 @@ static int zlib_decompress(FILE *infile, FILE *outfiles[], uint8_t num_outfiles, if (infile_size <= 0) { printf("error, when getting filesize"); - if (*outsize > 0) { - fclose(infile); - for (uint16_t j = 0; j < num_outfiles; j++) { - fclose(outfiles[j]); - } - } return (EXIT_FAILURE); } @@ -187,14 +197,6 @@ static int zlib_decompress(FILE *infile, FILE *outfiles[], uint8_t num_outfiles, size_t num_read = fread(inbuf, sizeof(char), infile_size, infile); if (num_read != infile_size) { - - if (*outsize > 0) { - fclose(infile); - for (uint16_t j = 0; j < num_outfiles; j++) { - fclose(outfiles[j]); - } - } - if (outbufall) { free(outbufall); } @@ -214,16 +216,20 @@ static int zlib_decompress(FILE *infile, FILE *outfiles[], uint8_t num_outfiles, memcpy(&cmp_bytes, compressed_fpga_stream.next_in, sizeof(int)); compressed_fpga_stream.next_in += 4; compressed_fpga_stream.avail_in -= cmp_bytes + 4; + const int decBytes = LZ4_decompress_safe_continue(compressed_fpga_stream.lz4StreamDecode, compressed_fpga_stream.next_in, outbuf, cmp_bytes, FPGA_RING_BUFFER_BYTES); if (decBytes <= 0) { break; } + if (outbufall != NULL) { memcpy(outbufall + total_size, outbuf, decBytes); } + total_size += decBytes; compressed_fpga_stream.next_in += cmp_bytes; } + if (outbufall == NULL) { *outsize = total_size; fseek(infile, 0L, SEEK_SET); @@ -243,17 +249,21 @@ static int zlib_decompress(FILE *infile, FILE *outfiles[], uint8_t num_outfiles, offset += FPGA_INTERLEAVE_SIZE; } } + total_size = 0; // FPGA bit file ends with 16 zeroes for (uint16_t j = 0; j < num_outfiles; j++) { outfilesizes[j] += 16; total_size += outfilesizes[j]; } + offset = 0; for (long k = 0; k < *outsize / (FPGA_INTERLEAVE_SIZE * num_outfiles); k++) { for (uint16_t j = 0; j < num_outfiles; j++) { if (k * FPGA_INTERLEAVE_SIZE < outfilesizes[j]) { - uint16_t chunk = outfilesizes[j] - (k * FPGA_INTERLEAVE_SIZE) < FPGA_INTERLEAVE_SIZE ? outfilesizes[j] - (k * FPGA_INTERLEAVE_SIZE) : FPGA_INTERLEAVE_SIZE; + uint16_t chunk = (outfilesizes[j] - (k * FPGA_INTERLEAVE_SIZE) < FPGA_INTERLEAVE_SIZE) ? + outfilesizes[j] - (k * FPGA_INTERLEAVE_SIZE) : FPGA_INTERLEAVE_SIZE; + fwrite(outbufall + offset, chunk, sizeof(char), outfiles[j]); } offset += FPGA_INTERLEAVE_SIZE; @@ -261,13 +271,9 @@ static int zlib_decompress(FILE *infile, FILE *outfiles[], uint8_t num_outfiles, } printf("uncompressed %li input bytes to %li output bytes\n", infile_size, total_size); } - if (*outsize > 0) { - for (uint16_t j = 0; j < num_outfiles; j++) { - fclose(outfiles[j]); - } - } free(outbufall); + free(inbuf); return (EXIT_SUCCESS); } @@ -433,7 +439,7 @@ static int generate_fpga_version_info(FILE *infile[], char *infile_names[], int fprintf(outfile, "\n"); } fprintf(outfile, "};\n"); - return 0; + return EXIT_SUCCESS; } int main(int argc, char **argv) { @@ -448,6 +454,7 @@ int main(int argc, char **argv) { usage(); return (EXIT_FAILURE); } + uint8_t num_output_files = argc - 3; FILE **outfiles = calloc(num_output_files, sizeof(FILE *)); char **outfile_names = calloc(num_output_files, sizeof(char *)); @@ -461,9 +468,17 @@ int main(int argc, char **argv) { return (EXIT_FAILURE); } } + FILE *infile = fopen(argv[2], "rb"); if (infile == NULL) { fprintf(stderr, "Error. Cannot open input file %s\n\n", argv[2]); + + // close file handlers + fclose(infile); + for (uint16_t j = 0; j < num_output_files; j++) { + fclose(outfiles[j]); + } + free(outfile_names); free(outfiles); return (EXIT_FAILURE); @@ -477,9 +492,17 @@ int main(int argc, char **argv) { // Second call to create files ret = zlib_decompress(infile, outfiles, num_output_files, &outsize); } + + // close file handlers + fclose(infile); + for (uint16_t j = 0; j < num_output_files; j++) { + fclose(outfiles[j]); + } + free(outfile_names); free(outfiles); return (ret); + } else { // Compress or generate version info bool generate_version_file = false; @@ -503,23 +526,37 @@ int main(int argc, char **argv) { return (EXIT_FAILURE); } } + FILE *outfile = fopen(argv[argc - 1], "wb"); if (outfile == NULL) { fprintf(stderr, "Error. Cannot open output file %s\n\n", argv[argc - 1]); + + // close file handlers + for (uint16_t j = 0; j < num_input_files; j++) { + fclose(infiles[j]); + } + free(infile_names); free(infiles); return (EXIT_FAILURE); } + + int ret = 0; if (generate_version_file) { - int ret = generate_fpga_version_info(infiles, infile_names, num_input_files, outfile); - free(infile_names); - free(infiles); - return (ret); + ret = generate_fpga_version_info(infiles, infile_names, num_input_files, outfile); } else { - int ret = zlib_compress(infiles, num_input_files, outfile); - free(infile_names); - free(infiles); - return (ret); + ret = zlib_compress(infiles, num_input_files, outfile); } + + // close file handlers + fclose(outfile); + for (uint16_t j = 0; j < num_input_files; j++) { + fclose(infiles[j]); + } + + // free file name allocs + free(infile_names); + free(infiles); + return (ret); } } From 007f9fcffbf969d5ec6044bbe4480f2330a0ebb8 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 3 Aug 2023 13:02:42 +0200 Subject: [PATCH 179/299] style --- armsrc/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/armsrc/Makefile b/armsrc/Makefile index fe34c8a8f..d6ab2bfc4 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -127,7 +127,7 @@ THUMBSRC = start.c \ $(SRC_SMARTCARD) \ $(SRC_FPC) \ $(SRC_HITAG) \ - $(SRC_EM4x50) \ + $(SRC_EM4x50) \ $(SRC_EM4x70) \ $(SRC_SPIFFS) \ $(SRC_HF) \ From 22bc398b48bead99bdf98260ee3294b1383f8021 Mon Sep 17 00:00:00 2001 From: DidierA <1620015+DidierA@users.noreply.github.com> Date: Thu, 3 Aug 2023 14:43:58 +0200 Subject: [PATCH 180/299] Bugfix: `data atr -t` was reading uninitialized data --- client/src/cmddata.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 5c1948c14..4c8200ee6 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -3423,7 +3423,7 @@ static int CmdAtrLookup(const char *Cmd) { void *argtable[] = { arg_param_begin, arg_str0("d", NULL, "", "ASN1 encoded byte array"), - arg_lit0("t", "test", "perform selftest"), +// arg_lit0("t", "test", "perform selftest"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); From c6f2785463d7080db715dd90e977da2c19c90338 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 3 Aug 2023 15:33:16 +0200 Subject: [PATCH 181/299] wrong fcloses --- tools/fpga_compress/fpga_compress.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/fpga_compress/fpga_compress.c b/tools/fpga_compress/fpga_compress.c index faa35ccb9..5cb34e54b 100644 --- a/tools/fpga_compress/fpga_compress.c +++ b/tools/fpga_compress/fpga_compress.c @@ -235,7 +235,7 @@ static int zlib_decompress(FILE *infile, FILE *outfiles[], uint8_t num_outfiles, fseek(infile, 0L, SEEK_SET); return EXIT_SUCCESS; } else { - fclose(infile); + // seeking for trailing zeroes long offset = 0; long outfilesizes[10] = {0}; @@ -474,7 +474,6 @@ int main(int argc, char **argv) { fprintf(stderr, "Error. Cannot open input file %s\n\n", argv[2]); // close file handlers - fclose(infile); for (uint16_t j = 0; j < num_output_files; j++) { fclose(outfiles[j]); } From 0bd7dbb6c9523980964a4eef74af8aa5cfa013a7 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Fri, 4 Aug 2023 12:43:18 -0700 Subject: [PATCH 182/299] Add datasheet for the FPGA and a common flash chip --- doc/datasheets/W25X40CL_H 20220301.pdf | Bin 0 -> 1331814 bytes .../XILINX Spartan-II FPGA Family.pdf | Bin 0 -> 1013818 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/datasheets/W25X40CL_H 20220301.pdf create mode 100644 doc/datasheets/XILINX Spartan-II FPGA Family.pdf diff --git a/doc/datasheets/W25X40CL_H 20220301.pdf b/doc/datasheets/W25X40CL_H 20220301.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c847a3b814c67664628c65b3c2258b15521a8160 GIT binary patch literal 1331814 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

>Kq6P8deuGQNr2StK+5qv7xJ=7j5=z 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

2XUKAgR(}} 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

NkR=#=jEmD|-*|r^w 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 z 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

wt}6HjE%bT zp+z#oZMF0Y1(GRMf%@pVGNb$MJH}I%BZP|fT-h~UW}aiYDFiIxkdfT?$0;9_YrTTO zBOiM#Re2^346Rv8m8Gf@*Tt3Prl7T|gofjgqPOtHA5bT1j%V-S3o({$_T`flW#~Vu z15nkIBa$#XEwje4DgE^Ntm|G@^U3&jgoe`Mx7O-meD>30L9u#4@SrrFgQOH)C1RHn zbLC6)e*|cYN7i89p_QI`TdgUG==EkbcJngrqDIe#_f~P1-b`oM2t=FZ*sotJbz#C# zoO$wFMXdoyd@QdZ_dUN1>J0XKn1Ni#7P#_dt-(xdI-wN{*$Q{k8{V4G9x(IdP}}dy z<7Q`_UOlR<@cDejZ?Kn^4ABNwX85tkAHHP<+O;Ms^Y}$xDs*T(fphPjm0O|CJY}dW z90sLMyh%;DWiI(>nEZ1sZ5cwHR>h`QToHN;#qUfhsA_8 z#RVy$v=#JbH_Xym^JcQyM=%1Xy+*>y1w`WNjCEe5H)w@HPz}w&YCwS-*A{uYR@S@} zP22bV5*MR34`S7AEzg$h6c?|8;t)kT) zOS2kYB8l|=eO-zL^gFVOxMevtN;p2b3~vApG3PT5th~qE5|hfU&*<@<1?*aU3ES-= zj@hImGr2ZEGtm)3AJOZ2r^bq|?;I<~yYNUZmkju#N&ANfnm?~BUs<@U^>dahGq9zJ zUN^Dv@ytuVd`@hZ@ZwsY_psMM`42hN*63Lp?R4+^t)^S8QYbPjf`wU@H2Atg*=?+> z_Z50Rv?AH$K}}H6xIy?e`>o_HwusXa6icPp&#yeW>CJHN78Ywnc#T+Xo%msGSlvr} zmuoHfG&C^&%gqtO>}>vhhU}Y?SEaLwc>T<8Y(KqE00s0gz4>f4`Nf`P9GBH+D#D&c z16L!|O0w=HwE71twW@}-7LOqqNt=mBzkqE&vgNyqgN%5Fvp)7Sz9}KfXNuwDh&7=` zj*-Mr_9M0#@k}4Jy7!v<*^8hMbaLUNBtZ>hBGZImUd_jQ(&Q^(8)^0Gj5@+_ zmWVR{@uwLbBEu^JhM%1j{#{v2>73{x_8i7sqEc8%U5 zN{)eC2lS&)TsS?oHz9UW>~sSZs%w~ou|px8a^h3($P5!DEBZPZ^;5&`B4FJNs_|tK z_3|Cl1g~Cd+Y>YMGbp@IjrE}T#2bTrt6NeH9(Feitu%5BXTN^|4Yd_9D*Keg7^xp+W+X zT=Y#aL3qE%#V^I%qg*qS<3f?lG$v1+=hl1H>b@%Dpo75@2oXnPt`7~pFW$!5X7MCI35N&zCWHAR9tE_(8k84~R(`3}KPkCXcf0f8 zYU1YU+qsazdf(CooB8bw<<%d7UvZcu6=H8C!Fm0*W{+R3Vk7RSbh>cT`xpZyv_z81 zrTR?qi=#jH;mNJXE5`K$I-{{3u7 zqzt+HebDy?1ZA3Xmbh-VC-&*(_H^Vz_Y<|eAo`M5IEV*R?1bnzYGRUjh6H&x!)=a6 zr?~Ch&?Z%Kp>>26L5D?>enki$VFN6ae~0xCBYj}&I0Y+LUBEQCK;bT(t^;9+IqI-w~S+e zow84Q#GBITr_`q9^{q=PY_-YQENQ%e9knZ9%Zy ziqxXP+~oGk5>r_L!J;AaRgmPPo$l$9X71O7cRQ#I;x{gAcj(#1G+X}ybNqf^(f{*{ zX}CH0|MOxR4)*^uhg-_t(2Y$D?C79uYAddXYiMd|1C32g&CD&p zmJW_i&MvNQ?*0LRLBS!RVR7-F5)zX>C#Pg(=j7()7Zes%R902PYijH2+uA!iySjUN ze~gTdjUy%|r>2*dS5|+mt#52@9UdK@oSvOuTwdKz10Me#k0{{G=Hh)L&pklwEdCzw zQRN;GNO=(I3b_m1Ww-|bvhM*;MVIgnCT=mNmF^x$-4V9BGV5bsgm>K0R6%iMEsVa% zSc>%G-cH_5(L@D&^jVZ_Sor_cA%RaD-BQ`r^Qw%ShtW5T_kaMocKs7Ju;>LUn96S|0$iBm6!}1ww%DD$D68J1h-B9b1+ygQ_WbOgqkuBSz|MxR%R}7!@ zv)7HDY|Dw=1AKN4UU@Xvl8s-jO(?gBK3g4)fSo}N_|%hT0%Jt3D+$Oc1lv@lGY z8XJ{6E+^uXP55_HMzg{gOVuRmn#Zjh70g{61Ukuw{pPYCkZ^NE*T3C*GT>G$AQ~7H z?QxcXIBi(?RF>f3ZmLwufrvD3>noXq^+DX{5}(^7n7SMOJ_=`L?S$pPbHc~s18wL**;SxDbv&J){qMq7Z6mbNDv^m zgaOwDt-H1Z=WKUasAn1TYq$AXoId^=mbPYM%Y`Ws{%>Yh61MVqCiei3JRdU6(T9m) zj7SP+#Z?9sn>nrIm^RO{-VJ%{2{o>iO;m$bN!D)24L$NV&kKD>rDzrgnbE9%5m(^+ z(q%=S&J28&o0#d~gH_{PL(rb54gS)bI*w! zk&7$B8{vboLPpX@?9Q>VouE=kr}OigijANFUOTj0vP!6x5j(a_X^iUdA7oS2Fe}dl z*WVV+SSA)bJcJ*VbYNZ`NZ8lwfAnO#tt`9;bmVcI$rap0$le1O_OfmCRTW&m{-?3n zMuE_W>Gdx&(}O$dNJDjZs^3bLr0ZY}KE0bZwhIXEsZU%0tP5gufsm|57@f0Wx2aj5 z`$O@F^g3Fo81oSy3d#{IEVpo;TvVp9=}F_v_oH0~;^`;doASfeC`B7^0pIApH_ADA zLhII&c0eTQrI;^cIn7CZ3DcJ5h=oMIPH(FG9Hsk4B^ZGpr*sMfb{xKjPh+PMj(n%% z)agVUv5V}FKn!ilNf4+DOa9c~tkJOgh1#KjYrrWf$t6Exg_e{91aGZLzypo2B{2+) zdA!ScZlP6f+|^o-T9A*EQ;UzRd$fK6%S86@2dfcA=iUQ)%ysVpWd-+ullM;Le-+R< zFtM)Ryh?s~%y5lrp`1X17@PoW*y=ujZ*Wa zz}Tr!!k~7GSYPb+*cvi}^WrKM2?@IlYOyEi;4YSogI6^*6i-KK$0*F}O>8*wY3l@| zb*?pK5S2W|UYu+FXhlXuo1D^^WmV|tzt*>b#`(X+$ZR{B(}KkR`^c+4>oqRQd35v_ z=LMde$9+qY9D6B}wGfM+L28MtQ4Z;+<=QE*=48Ps^7oye_tbZ9x@WHE?V{Bt!bbj< zM-{Cr{hJ`Cg{!ORd%$}s(4Vv;P}L9(5qbw*>XWwK$5XRDex<~W8B%$punSaCAncHP z#rZ0h??*jZ5XIN9glIBj;Yuw%ykYa9lTg;Z9GTaqwTW)p0;ZEG3rNW=5xfWBO@ZC# z(vv;v@m=$KYds(L;Vcfqpz9+QH{#}Y1s5L5<(08C>1%UKQr`Zy-KT{o#kjc}XBtoK zS-(mAf!+4z(3Jr73dv1-X^r5Lm=-BjCKlvay}y zJ8FXs#mr=j-aO3$za=23oO=*=$`Y7+_qk!QsUpcFM&aX5qv7|xd|`+Uk8jz==r&1I zD7Ad3jj`KV@~0@!Q?Zppo@OSbV*Eq%l%KR*Vs5vbo>Jb0M8W?!ge>@)^0?H%)jZN9 zbOJ&X5kwK7F33vJr#NyCsI)S?X8neVYeY*hVE<0|vSgRE^$f^*tRLPad3KViByzUe z)2d|M{;f3n_bd=*6oGjK#^a~9c*|#JT0X@1(2P;q$rOSiKDj($bGq7vfG1X~N2|)h zIF@CZuFie!2mR#PI(@Wz6yQ>NPNCozy$n|x{m6-FZ%xL&u%0!SGh{> z0TW|BSJVQNf7j0}+)8xk38mY$u4M+Eh5K;}0`N0fbW~yP`wd|MI-e=5r)diN$9AeXE zpPbN~+ZjJgRkG)*2B}K6~1<>W;c{n$2#Kx!L5xAFu*`Qrg`x=iXJ8&1~7&fS0=JYE&Q2dSzBtEOC-pHe{yJ%(w+H4^U2~0zS2je#Z{9&JWKDV)p7?M2 zYyPTlQg|`jZKQYnV-87DoZlo>5+6JDxHKb44|6KpiTsJ+WIY!@4UZ zFu_~YL$tEX+~AACKrwr#URbQVFtvH-6_jpc&50gE#zub0lavnu-Xb!|p3jqd$T<&e z-VK#Jk6Nx*cKCZmAx(B>WbGd6q8q34Dh|a&XWkO`B#WP4*{%w{9?$jLXa0K9e zfFm0GZ8m{Xgi6>^M&xvXzhwD{O3-$)e5vS^itkm%NCV|Vi2h77_Gp=QjUx3?-syZJ zo_8(!VQJDIjW{G3J74_S{=dGyBm8;ca{bOzeEEI-wH(N+lot-JjCj!{w*E~dVf0T+ z;rH_WuM3|DUA(e_aeG$Zu85pIuEQ@T8ngEE@*%T&L*y8P8a0=r0~;k^uD;bTU@@Bq z)Z(PXZ-u@%UZre`5LqD2?;zOzjuXTrYF-krO+)#@I>3kRM-#>WD!(~A@p%vxOM%j2 zL$X)V`9I1V@Y{)WXEmDsqSe1HIEsa^_FO$Myi(#-w2x>kaReq)m%Y8a#<$$8FnJBp zP^2zEWw>?mzXwRsS^Z_%{ISsg?l`E@@s?sjY0Qaq12YJ6NhISh@|McLcr@&{b^gc3 zLMe9-h#6?O2k0YRjg63PqrVDde~vjqpo+&zbzf>dh;KIFUmn^;K@>laFdI~&K3X(c zp-*SBD6zpu8WT^IuJ+OIqGTtLm&907hO66exYRGXHwW*>YUl|jZbb=O@+NUTy9emh zCdp5bd6g#(z`Zixht7Hvwj46(j0p)ZZdPOQ8j}C$CkbLC^|N*58QC0Zyn>cgkTtYL zb&thrZ2WPtOjsPc`hr?yWMmXU89E4G(*lrdQb+upgK0kN}%p9jgT1b+OnD{OCvsMRO(lsZfZm%#*LY;xQK2El6me5ZqR zlrUSMWKA)If@1{vs;KlcLl@!*1*VxVXFH-#uUK~7&u<^X?g0lZ_W+pG^y&T;DhTPL zY2E{X(bd}vCr@jT9$ML5waG=)wlm*cfOL5*(>6D=ErHunHu{aZ_s zi87xd=7oE}!3lUCw0@ulVJNf~?jkacPEi;a}CINq%*#my`O{#X<| zwS|boQ}S)8?&%W>x(gv5IqOFi?M+$@&B)5rG)(d9adR-qh^sM&?TA&67CUNVy)0RcjgvyE6JrB9MEWZNOBr$JlayV zdk24nEbe#q~SF32OkOQR&kGxS&a-~ah(b1In%h3IA^i}b8zD)B7 zt3pfaZKlJjHBRIgb7B5l7VTkO-ufW5G2E2zsjVUu87ltDcYS_>wRCtT-%8tK?75<< zho1sjNIUKUM-Sug8d~oG*>UjSmJ-YJ&V?fe2<7QI+npbTbjju>zKLsN;R?5m=OQ6b z=K{2Q#*6e)@N|tNY9)3b{jh&~bq`2S*u7G^@h$P$_VanES@0+8vydlS|I)B%_eh8}#ds@f)%yS`2}Rk3s2nxN&ifBSucNTiphHIIZqVhA!$=W%Yy63TyTe3f33A3<-Fd)iU8 zOmG$a9z(Nm-#wKeIeD)PxIyJz8=2n|PU1aO{JQ$8;DvWJbAkHPuK+%PbN=6I_+_bs z*vRXXdjRf5*qPHitdm2bM`Upi4c13fHvd#f$o;>VIB|7lxZtFutCnDERwEq3w9Q0^ zTCC!45!ZKwBVj#v9%`fdKcG&zYfc239MDWPAc4hm%opy51fek75XDGXI0|> zsqOx0%KtM6_rdjY6)G!%s#%dGuS|h9PgR7v zT(*hRrPiC1V#lh#_1>S0%F7ZgQi)W>iRzh4y3p(~vnc6thlJ?{Mab8``VU(@RSIb) z8Lnoky563U`z(!Ji~{EyRA#OcCAfJh6qYd^B;5TV$9LRE$WAxHo_4snt2H)A-M5E2 z=g%H;N0N4-4ItuAg#Zbyjw@y<=PMad)EFMYpKKAaT~TqnPnFKS#Bb=PBH-13sg?G z{eH(!e^NzN^Rq>axZPoP2ZURO>KOy}SKsfY*`4lYenMQ{(}A!YyT_#1%1l^M?C$G4 z83$>lsY`3=*6+5d!bN9i?JhL!{*)sbo&69V57--xAt>z3&1E8pxaPIuT+ZR9?lUAq z91VurO1P|Kpo8Qyvl8v29&cfEv1l%N{fxCZuSXrlx69FOd?D;?&J2k=?8AAsolf5{ zu&sdI0qWjd=eTU4$i73-i(O>9d{)JFbrgN6DfPGT{yB!A${m}X*VR~J(?glH)lPC> zUSltFa(WyBx&JIz(PO_Ot~`|L-1SBrK|)rdXl;T#IWDnt1rffgpydVL2P~` z)u#gr^97M^G!*%Eq&|v1B>O_B_W)`lq*Ul3O%CRbjla3^51EKTyiUj@=h8wr;Z$Ab zt0vG*RZ{4U&qSc-{gWI2+9OdoM~sH+XuOL=j6zcg#BG`ANAJh4d5XerrRo1s0cq7+vvc#H zqGwPO+;ZU~-`aaXbJ5=&CG@+7t2BQbzY#>uDT&pc|6B@Cc6r_A5ygMf>6nGoa3ym_ zrzg8SrN-*!c<(>koaLyC4pf0HN<^Ps_;SlxI3vR+zs9miAr=Fe(Wg7;4qE4Ww1*Vo zkDDgAAvQZZ(E@TzeNDB(KVpv`ED+Kcu2@u+5om!cK*d^fVzh63FT}br(gi4ih!#Y8 zUk8cE=a<^}%Ey)TwrWP!n+rUYLDjuZxAc&%8fg=`eX3k_d_P+r_XFk}uX!+FwpS;Yq5k9rTj zcHVC?u*DXDo)rUILaJfh7Kwd%K#|-+Ia&qW+LzCY5|_#cQAS{sdagxslkv(URxhg= z&Z7yJob|s>b7^0hhcwERNH{nc=4|%c5O&0%#_cAgg1gTj6KqG5y6NGKSF0EqH;?p! zQknEWc}8&x_+h`>SIx^_ks$pkqj>%C3Y59mkzDciYHuGTy@OqE6%!> zba{Wm_g>-`r^{7;bA4FXh|em|Z@>Si&lSDE)PEL(-CI?k30Kh*dyRfp!p@5d^-)iSr6%ij>NbST*L20<pBs}A;bBS(e>NERc?^yjTnd*V?L0rDtMSS1 zv=1vhruY~!zW*GQljMzEqpN4CUoG2Wqpj(BJG|~9e+Fw}Q1Tm9jnco6vtgTwVO^_> zOsEhB^s65b_BWEe&RiQLa2>Ojnf-3y7F3sJ7XY(gC&yN1TIm()D`81@ zk`35N$Rj(B!-4GY=;kv<-J`j3U~b5voQ9d>Q^yTkgSMs|Jh?Ot zTa1{U&|$lEx#8WrlC(Dx!HVNf3S#^wU>;%(8N%{F<_1@o`yUDssVDvsYRf6{0=?Ho zIsmfu;AyV>S+^yzb)QGZ({QAD@P8U^65O~tVh8;sy`-hYWG1+KES%kKSJ=r8XQ|}W z15d66#2!$J&m6#TDnQ{a)t4N%+2%=WyO;3OE-$7y@LAlvxCdR8lG9@rf?UZ}^a8X> z{nk6uIL$-_3`H>zS3`Mbf&Ylz-$B4stFn*wiZZCRcd3-<+AJ8hgJ7GIphJ%FO`j!-C_beN$c z=!Y(I|E>XTH*Nr-nERr09>^8+wxUihRhI;ry7G%Q3KbKlJg+6dlmFGOP(4NZQTglu zVoOHkMk64R$U%#g3HlNu)*z3H_S4-skLAtXvlh&Izz~We(i?L^M)p#U+XW~xsr%e= zre>v!o^gK*qQdrrO>V-0RumGEIYi~=B03z%M|~~Bh9Jp9&y^|Y4;iNWyQd;M^v#aR z5@voK*9h~U{70Gp8>Cli+)=sEU2@@MHSZL-A5x2Jj>=2fw41US_)l|X@69<@Er^@d znx{)wa(?AET~+ot{;5i|c+}zt1Q7)_ygABCyaRsj9D*T-x4DgL=zjwmV7G;^Db^jn z31^*AFCWhwaoi-kO%Um#k9&_!nrgSgx4~3#QKnuw)F=b>{w4+6B+4^Q9d=LZ_@nTO^!gcoT~v}!$NL7HJ$GjpH66fn17Y* zc`B4b1ZJI6PKb!k-sH{UmS`ABJ{YhUww${?tImW6Bk!E-bYor1T}N#<2QUM z*4YmBHSU&1tkNYfW!H1shfu~o)LU1(lwG7OYDs5II#YGhwmO_8Uk8eWZwVqWT+4u| zt%!+ooo>R}tKM(No-tzGYZd;{UkS54+{!N8?*a0VG$58DMni6mtH=-P81su5{{g}E zYVbx%_1t;rjf5c=lV6vX1_1vNS~LSg3y*&1bW|bKCv$SsC3afI$M#TYao8q0kcB}3u{?GP)o6X`2o?Ac`8l1^em!jB zZ(HYIaTgXARmAQ|-yH9>i8JK#=5yEyI`LZdKgzTn<+GBNmZWx~%9pMt2pVjH*zP0- zyOC3P;+^FKgrt38g;m=}eUE6vKrTnU_Tz`s!K}eG8&~qniogeS=7Gx*D{Fno@I+Vn57KW(hbL z^%T{|1Q!<$QtO4A;+J0g26YQzi!yKXG%4^1^R~CoQ+nM4rj>WO5@^M(_{{kC-hS_A z3v4|oEuF`!L*Iecd%d<7Il@m2$=HABgRAqUyc;R@^FMW&u0?NXt;~98&b>X8g&anz zcwXG_j!uaNc=qyi)GINznR*pxWH|3VT;Ydd;NXJ2DG$5Df{LA4BSzmEV@9|by|(k+ zW5z+gnVzERj-)AZwKwOsLWR4C+%DjZcsr~iQ|IC-tJy60xxCG6LI{_lz4Sc*61E?R zT;?4;bVXIh*uE~T>-UuLuJ!zgz;w3*I{szCOBiqZAiYqZ?Jdz;Tym?wj>>2Qqe5+p zbT=o|8jI-y?i}Ae2EaK6$yq)i4O+s;WuMCj$Q%IOMI->*3nHjeeTL2XAS*>hf1goQ zMe%zVJIAIZ8pm4zCN?7g+s_Zh32+O3$hh&1)$Ige@R$cGoQ}!p1d}C#*?IN=& zKIc3w?ok%;^9xgy^}kTv(J{8@9*Lp$k3qJ$64x0FE@5N!R9J?jhRhk%*M@#Iay7t5 zr;Kzw`R@mzGZ+fpUqg5boP~1)u`Ex}bA5aczMdZ+efm${`--QF6F2M9g;8_L01Hfo zDqT8f(z7B;deGXhKu7WFO{k-^W54^l^0jGen1@V0zW4s4WWH6Syo#{%F3su4vFWtA z^i-$=U2aoT_RcF~K6A7ELD`w1SJi1EYiAS64cE{ZQ;1-w(*8H^qn1(}ajo>%O}H18 zl2!Ex)6rLSer5@XMX@I@y6LkU6#;nNSr8EuQT+hdjA1{Iw{#a=Ton=~QS^cM*x5DgtvbHolEtUnai! zYIR_{^=l3cf=71iyajSD!$NHsGm5QY3Pe|(1x+T9udBbsLe-WPM_Smjhur6U50J z`!sd!{)3m$%>=Fbtb187_K?41;?~MO&c}n?hP>NDCcV8Nd z5(vZ(&5c^$84eJeC7eYk-tJdEfalvS-3lE2*nU5rZtNjc{0l^cNnF8h*$;~ju|fus zv}$V95p1Q2+dC2OZhtJgX>T@Ih=!Kzdb8l*PJOPr2Vl;(!y1^Pw&d98b{9n5a?Y+& zP8>0D#mQp$dFTjKNd_vujqaB1@39i1j`tPo657icuyb;C6XyO6Q2c8UD9s~RTYq+P zR`(^?YVFwIWk|a*W%LS=`nT`;zlRUve>=`k89RT+dgNq~aHA^8x+5#~w$dSGNSWD( zXA4RMF)>rLk6H)wd4~V*T<4%iJF-`eW!zpl(?udEIQptv)X6zkml4T#vfYQGHy@E{ zRHZ{c8>_I0k-vNUeFexZ=$oUiB~(gp!ir9MocnSmjJiqMWbVJP!heq}7+j=+>W5gV znu3+$_J-ubE1$CxxL$vEfk9Yiyu^Nx_Gv##JZ7|*bwMjp9hQdtxTCrePm&m;AIcf7 ziRk3i@yaLtXfVf%446k%H!bRu_pQj-h%T$2@xjD?-3_mqq%SzSlk65+{B246;UvT$ zoTAV4XUdw}&upsq_2F(>3k_s$pZBAIBY)TXSBry*L+fhW5;1KM|1M}=?z0vpwceu; zfdb?+3NyF5wMJH&AadbSM(ST{bxR_!ADD(B)=16~z?(lrlPiHuyy$3iR zi7NXD%wNbLiE4I1K|E(iw-d>KIy3C^E~Beq8mZv_LOgzdL1M948bXT>+2~W7yh@cN<-t6SPPKn&T*ZvNeoaAWuLkD z=k=9+wrWlN7vHDrkdHS#RcLd-Nj)>Jq*~!WIWJC`Z=neKR+Z?IBm$=LO2NCf+y1~K zZG4#T$MzNEwtF{B`WUe+TvFOt*gf_%y1kjEGIhsYA}^tECPz7B1-u(p@RXg?=V=S< zB9R<#nNhD@x$bp?Z}rC>biTDxsiK_vH)k>MI*eb$p7E6XuDdme0*iUZU|<8p^<-Ca zD&fsuT@6Q>Uh-+)*4-1EMe*a{RL2(He_nx-@H^uhWTE!8Wzf!OzRcX(4a05mYeYJr;H(-EKWQq zt7V|bd^yx9D8>2ubk;CW&uKB(ENWzLO63e%A8sgQPUWtSdKiIK6e)Vm@&VKA$aB=n zv$=M_3z;BL+MU@>5H~fi6H019H2j=qTMaBwWQlmV%Ua6XO6%r=yW=ff%%*r4KoXTp z9tU>Md9@nN2{9_**w?6T!R^fKeJW$<WjDDn<7W9H^)sfyEpv1B%46<1iJjGvQyJaI z6ehf#G3!I)w-A;3(W-?iti-qjmK5ITe369=l{4n#{{Hx*>~ z6W74xrpZShF&OArwj+uGuD50%dYh$mKFE3%58|%+7co&)#j|~jwBq@*r(Ls=aWpWZ zniSur$`=fN0-)$9Uk_7yb`f^mK4GiVmmlgV_Hb5La?16^mxr45Cu{ZGPL7!Q%#!a; z39gVND04I?s`UEwGQ;qw{dR70MPxiO3+NihQphmDLn<>Ik6{COqAuC9&JaIeywyxs zKXkfbH1_K4aH+OY*cESYl-l&WN&KM+l@z3=h(TDF-xfHolkmeqBX1>Zd*5>PQhflD z!(mV;^EOFg76FJ54V@BExpO1sLK(U`>;%EJ8cBi>uRwbRu)Bvp?&=C7y=!S# z!q8Hw?{VktE z0w06kd%(LU&AYpNWOz&JzbkqaV6Y7=72PiSKbk2j;JqKbQRLyu&_>4ALy;iRKc@*X zu_RZI?q_sg1?4)BvZiQDpcY#%Rmh1_bYM4Ej~abma(?!maPM)y>Ie@=*sRlf=Svmp zG`s8yog&T=j08DfYmT}iXQD(G{whtOaZEr)*b~p7P)*vEnx6`ewFTBDVWiroU(6WC z8tl^1g_&93sML%*Zm_|$s_;uMdSCPue^QZnS!&)&;&mG2w_BLq?c?OY^K-ZoZCX1D zO^O^K8tFJ$a%-$wIb5~LLpln7VV8(e8}Y^N67i8A5Oq?eB4O;B%a(J{oJ*8U9Cx`p z_44g^JSB1k?cp8d(pLo$6!Ecp*xlQ^sD7gXJu5WL*VhIqPNrWeF+VGg>%ctT1&Sdp zh&;g^N#lXxl;c$WuwBonGd;rbQezE9J;GV8i>GNK%s>$G?spOjSZ*hcmG*k@D*8hH zX3D;X)@r1Q24)0jNuwV#P!>|3_3Ja^IbVq`v&B6C&NDcl|Au2_jqGksVD>kPid>Qi z68!TaYI7G2z!3_%XOmLay;NKC2DIx(uq%_oW?ub$Obz{DZkru)JaWN-?&9ij)Xj4^~7$L1#RmMJCtK;nM$B|dl?EeA0c zZ%E8DRxdlfJIoVL)B0AZ^?w9OrCtJHHcOY4eAib zjf9fcbb9D*b_rM@IHPh0k88KfW!2~p{7?lMNToRTsrN~6Q)(;2-I!Ji+Jl{9NzPBJ zxzIeG`(~%vOm$H#KJLjX5}!ZYU9d2h5HU?;PV8@E zA+8dZBu~<`4GKZa>Z6N}OOBi{v&qtwnwqszgiFrp-IrB2O)at%JaL35V)N!8Z z=;~f5$<;QxcqFrq=YY{(WVp{FL$g@sn;3a{>BTuAs9&9@sk&zO1nWK4svs$c{d2#9 z1NN=CFKNRzSB2f9@q&~VJTdS)qX7$wjMkzAYXL``Gl4y|C zv(ajrcO_5oL-o(?i6rKVz*r89PRo56PyKEK>PpW!wp`A?+z-Z0yJ< z(3@nK#|K+i$5KEycdTu5OlTO5@1)oVw~;h+^A4|e?4)0Wg|tsn8xLeyb-Ew6FC^;l zI&-Osb4xs#4lZTn5tmh6P+(0JwKflO({!{il%n_=L2}F%Fi+$~vaefLr$66mYn5$0 z`|>h+=%yvXJ?%HQ|7LjKJc}BlbPmL+xodyZiN-cbbR(vr@8G&FD#wf^(GHqrP1_xEpt$#zu*(eDnp7)&^IB<@^Ga(*ZB{Ln)E^| zSTyW+PD2`IH6@@80iF85>7JqYl1nch9lhQ2+Lk8!=moaO3Tr>Kju&ZI(v_2gJIa)1 za%9V-eZ5A&s?12WjI9fN6@>$pw3DXCn==YF&p2~}K zk+1X1m?OXjbK!8Ac3(8EWncWc7--Sk7MZDOr0+A-U+l9$v~Xh!go!??k*W4aL?*UyFcOA{hyFyZt!GUJhmWzJM$)tr7F3W}UPGlAmarQOd^<5AY zbaw&22dr@aFQ0YAE-$Eyrq62x)=ompZ7A-YD65@8>~y;fXnbav4aY zf0UxbHjt~ekT-nwooi@;n{11P#Zf~Lr}Oo(I=2V8J6bKtKr!m7b!~)%%`ZYx1Z)E+ z1jLTT&cKYMey~MBH9RgDKSIJOx zJ((%kweBS~b3OMR6!KzDOv~Fw>pGeNj%76-k9EN?DfGTe;vmW_u1tWu(crvx8X@Q5 zknxPdhgC>!6xZp8r!IGlWhZXyR>l34N%DoV%U+rDIOtR&N*kkhpt2bBy7S;foHs7= z#-n6+PN)c9hvEzElQgsI{uD9H_*RPfh{xY=STg@ss;YN_b+72E%-v*(7@075$i!On<($7C zSU-$^fXGAq_fBOfaRj}f~&mv+}W+? z0;@(Cu0NyU9p)(CF6+lbVAaW4+G=`%vENOpd+c$PmJ3B%kvuhIO?mTx@<#pdw3k1W zz@Mt%pZ0FuUAmwhk!NyrR>CK((x>XHcMZs_*tUL?tvmE;ZBj>s$xO2nAEnDZfSk&k zaQ2`2_^oDCDXQa_LTOXmNgOL0gd!g%n(@;jnoL|1=Gic|jyiTpyG^;WnOaq!E&2mv z?*T>nU;mRyM4+N4b12@{OnWF&2f0l%D>H{;qY%IC!;kO&r6EG(3hB^$F~(*%1|t#_ z3~BALwOz^IP;gJ9BhKblk+kS1sQUE#4yT z6{4zYY@-rb?o*_6E+O()?LXSo$?ZSaX=A;VX=G|u|8>N_}VqA*waTpFO8WKajh;FO*-cTwIs35SlXUBHl~WwHi`xG0-{=g zqr=q=x3XJW``j2!oZJd++H=yz>0c0ho8qOV6?kj<$keNFHJzuS~<-$?BnEG zZi=v!Bh_z1gX^y-5c`5fb+U6W>4Pu0w_qWf<8$F{Spij ztoYsR7rKVAdnOT;@;E<&4Xunf(AQ-$FMf>bOq>c+@KLaYqqV-4q$O^pPU^U0uR7=) zNVO5-RAN18qy4})&55>h5v#H-!k(&l2pG0H0i{W9BMm+B_e6K`tufm4!rXwygt3;U^ zTg}f}xP)*UtXa^yyO2f?S^VZaQBxgU2FS+q`Xw>5tt&0bpKyjTd*bhk%5_ z>nh%&(?p#j6VJ!2G9fUjw)%wXl!(SYTKgS}h7aq6W7_keg{e*_2z8$gbC8r?07>Ov z;>6(IeUN_>mZE>_0kcAghWV_jAX>KDd~Sf>RBcN_l`cS{gxrgBer=o6e)<^X}S zJyu`mUz>4!6#j;75vL2>UX}`8IwZ^?ip^4@3xUV?%g|vQ?-~2Cb3`$dzq*KUo#|Yd zgyem?*73HP!B`hj?&3w99$#d7vcQ@P>Rmqr-^89#-`YB)jb|?Az?D!fmM3iD&!l_0 zM^icuBhF~r@0b-{8j)0haH>DAv_G>ukM>F88NG00H9lBNfeU*7U^PC1pUhMl)n0!u zJS5ctsT?&20Jm*!P6m53Jk1JRiL|PSt9r?Hs>Z8gxhUGS+%v9M?-J0$3F0m)+kj1N z%U*h3vIpxGpFdGuK~awLHao!SR00Q=>Q22SuR(Xoa*=gsnCR zNuQOW-WC_@ruqpC!`xYTasgx-7+@eC7(y@*a7wU??y#&T9&O?B^IVL7tXAZ52iyCIMyAWI+GXSwOSYX zTq?JOOkBDUSN7?{b>j2Ct8)vsW~urMDT{A1zEHc9P++@jLck%EouWsK+xn+VqIcmu z#m}#hFq@;=1`^5SlC(eqn!i<1iJ&gZ&OB?&gvbzR*H#KAp=NJ)KScr5zOFjKt*c_~ zS;##Rv&$4qW&42KbyI79@zw~-<-=H23+`>G)02P-i8G$~M~vh$XD|f@X~eF%L(z7- zif>HWCn%AKmpx9dN#|leNEZC^0O^>LbhS>_!c)c+sRxwsw+k+<5pj?O1w-7R5^Vy!wp#ns^xO?lcI<{p08-lyLySux)JHaKmy9Rf+;O@cQCAf#+?ykWd^4mG1 z_s-3_ni&OBo@6QYxjZwDgl&TdGox_{H`bDmK*q3lQ;WwI%G|a-a z%a_fXi!LgF86sbJgzHI*_KNTa0A)i6DVukZ&A4oES?@ZqVqP1h zGba=S#s;$~s9!ck7V6_*By4Y=iR-~|Vw(w_V-)Fpdyy)72%#cSXuZZJ2{*D=7v(?p zKr@z^JG~8VwPH6#zh*_=HHPPoozGqH7Atx1#3b#qaNy0>F`^txwv&aP3>@;ry;oWp zA)6~0UoqxLo))h72y7TNH{msaZ5Ikxw$YGR6-g_DDmI1`b-~}51<{X(z3rYC!zbZf zh2&&Hh(!THfvc7!GuWn{QYKS8+MKW^>c2*JmMsf1ll$4Z8^Z#-bF(hseO?<)t6^(! zzN@|>rjs_y*W~%DNuquSDp!6#*z~=EhseAM$aKzIir^5@fI;O#&jZW>YXDP;6yrfP z7PU#t%#$!=W=0{LoT+9EVoP4UcGcr3(0%GV6%PS-{VK_&G`x#FNr2+bdwyBHvMf4y zi>{2^dK4d#yt9oTYVp>}Fl&vB{*0Rn6m{jGV&TI*b?enaR|&Sm`UA)zeX2K`C2Mg& zLjdUpn6|chi-VqkkuvkqS+||9Q5wm0P;~o(mu>gp z`O}Rux~4r0)~Su{3BV)}gmJz~8i)C*=e0y`24&m{_Fy7+&jOFnfp2fn{2OL~=xgu0 z(WBW#bxG?<5b~W3N25909Fcp_gn)y8Zs_1Kuj@ERRzz& zlW#tNd+*%=S$K0DXH8r?PElK$*hSkoDGe97aVwhf0e z;I_OTUm{ely*`9J0h}quDhAH4?A~({tEEe!HRHm7sH-zlux_zV959g7=kSSHB=e<( z(=MZnMd88N4&#L=xh)*H>h|3N2J^icttFi&>P#1jyY16A(DeHWz1RzKcq}@s-tRiz}A+=(CmQpSJyaE{+iR5L_5am4R~(R=4|r=QWfd`HyL?*p3*qG$|WL6)~8HV9k*Nz{Z;X_?`t zwwkmnS~~_iqwCSuZPnw>jF(GMNzr?V&J}Yj(Xk+(AkSuUioPeUVy|Lm3Ad+JJHPNus5>{=lKik-Z0Es)K!HqV$KG9q@2KH@sXD_V5X%-VEtS)%l6 zb@bAx^~Ew+ZTYT$6@WhQ28_(!l3tUqBYCa5pL7-!jB40nx;~n2<0Ehj;uWI^C8Kzz ze`t6z#*c4S4}FR~(IS8geNnvgy`8sv#h#m=5))%(S{0s>jks(E4Aa0ac?~Y|{l>lU z_6jXf(@^~cq4fi3BTti``J#j44Yj*r`ewz+iy9bxPVIoCwF*J>frvNb!~88-w8J=i zpab9{LfFuu)s(Zqy9c+v^SZ^O_{U>Milpy}{H=Tf(Cq-fLSqH^mDW;)FDhU-SV5)l zLeLMOC)!!;>L6A)A2u5andWTeg8P=`A3*ot_FHtdH$!sh52o3;Dl^_Z^ghhLv6SgbP-`VMO`;|teAJ7vw z{Kkf(-e3hMqY#gfN_RdxUb(n4b6xnLVtTD<$xqVu3I9aB)r?3J&kv>NhKnLrkY?)V zLwY|wFnB(t`pEP3ydQ2ahJmP!sieKL?|n zcYNwu@vp5_=AT}$!E(*@T{ zF-(YkFbS>#ohjSu7rCuh>6Njik};}J?`xzxyxd<-%#{4k8^+oJ{eDed3_fO|cl9q6 zMU(mN8geuA5m=SENVOtyk~b9(FRXUFx}}y+9q7%Bn94Amg^JIpj#3bQQg5m&-=RJD z$)*}VBEx9w*R>aooBM;ta~|aG#>`nsPT5v?8&@CKHJGly5+VWl8198Y2xM8DBs*Gi zqrE1Pi8dqhN^2KO4oGaBKsk5AS-4_=$<8;$3-5VgsR8X=RY{0X^IB{@*j8E_PLl`7 zd^S^0*MPgO<=s>-S_=(ttcJB*b}d2ALcK?PblrzA;yP(3Zo{KrI&H|{c`wN<_HJa%`1;H`i=dLcAV5E2$Q(D8gkpwV7y`le4l;kw;+?(4d=NeM3mea zB-+1q&{>t}wegLcjMd==$e_Gh<^BZr!U9z6@o#h{wHL3!mAz-llxmu0otEmR?N)R@ zfI@F+IGGM~w8l_9IB_E41XQ#jA)|$kfl7>`l&7RrUFb*@=C-aHVJK~l@jy%A`9m8` zm)uGExShLPiX+YIJd@U5uGO7=;f}Om7ZNO*-XxY+c}ok=hHvo7_5O6Nqxfk`@Vn44 zm3cuYg`rSUL2K^RdYnsslA@=gd459dML{RspW3~oc~S9w5#C=1{{QT1(EM2X=aVKe zG5+18Nxz;Onv0#~f6Qg%o;jzhJ-OZ#-^H={Be#6u9?j}K?~x)ZSi+)Bz2tPmWxj4h zr~N8}ylWO`Moas|+tXeg3o2QHh_q*7KCqGYbS5Wm!nJ*=hQh}4`I?4)hxcvO^8iD3 z*Zuk0n1(+8OXKs*42E6z>(~s2fcNvo%}h#l_tXAfd-b}{^-X>E$2WM}*Zr+MeS)s% zJ%;xCoR8mL?{_3b1itu2#^vL*DGlol+iI=qZ}9Q@+=S-1Yye)~B8OtL-=v+5&h@-6 zACThUvkn{ZpFB><>HJ;>7LpGaa^%)dzE`fEH@2r=9xucaydIq+Os^`q`F8w}x!>Nv z7x1(VemlP`7!x0t={{V9EWuGb-U^JhEuW-ZVjy!_Bh#&`m&0;fR_z{NV_odFTy8rc z@cqUIm@fL+Zllxd*@cVI=l1Tbz1}}hxqXiFX6M7>6WQ%_$-Tnv+QxZKYWw6?EQfxl zCzP+Y*LhB9yWQpnUfc`*o4fn9efKI?!1wQSYk?p0zh^IO)@<47z2i9>7k8x z&9}ZcaS|8{Xo}TepLE+;LhpXMdK=lrWA?)UeYvc*KRO?Ip4v!xi^W+v?0ap3Zw)t` zj(TNwF+Fq{tf81r9oN@d>%!QheeT(X^KkSsDPG8*J=Uht4$=FZS@%`CsiFE5w0%{p z96KbZD%`T>jaGDOf=2<)NdQedIeJceZ9Ji&Zo_jqu`DOK4##%+f}jZa8rDOh3D{?% z4Wn=EhxhHPhU=3L%*<6=@$3FjTCN?pmSt;y9;_2Sp>Dv7$#Da)wvBWFvCSJf>mXm) zk-m`hp=tmh1$Mb~nCHWVLltjm^di=#K3f z*nJLYtG4Oe@?AI=@RI1L`|%^?mEi3aJM&5ql;8nM-a|ilWwTn~?U5hnb4EOkZ()3S zQYZl($>BwVITrbsOxHvCHjHICt5H)wqtj3-qeV7#H0%}f3P>ayaY}HU;TdbQ^1hki zt~5ML`=p&x!)Z>-(AG3OakW?|T;n(%p<6-s&PlYW5UB(5n z?;+s2CuZYo zgL>f!W>#xF8=l8AT3@U;j6&zAfP&u_3*Apw1r#?^W$V(Dx2CmfIHk<3qN_`vAR7nQ zG;_lVrOC_WEEQb~7~~unW5&3B|AF4dyVlxa`h^nDX+0pT*(h{rz1AK8EX4t+8GMjd zJvtYun8YcKj2Lps(>L`l=?$_WHW?h ze}6E1aDVhU-Gj>X!}W*bKx;H$io87*e7_%3I2)!GG#Bs1FMJpLV$?v#3I9vP+NY@?>HR$s+jq zCeCV{SMbb7y_1*8Hf$uST<}rVR>$NVpYa_h@>iWV@OhCG?TqLTC|sElTSs!)ztESd zv184IW)|LVqi5}NQNEj|>oCziv$l74*PY>1c=hjTl*6z%Lu0APZk3&4SRXiOVV!a6 zK0TL=I^l~v%FQ>sESdFB2rIk+A{xdD?V)$=OrQ!+6e0bbJ973Rmwj&1Ntz|n2i>cn zc{D62$Ad~F>V~P?lG@)vEufW zS$|N(Kj;=w)OEIIm#gSQ(L--k1$ws6CS$8f8W2b-q@xFkm|pH>Pis++-`1`oX$|XQ zcx_eZ#IC12JXh1A{f+hIqb-8uglhybEkqI|5VOir=IOi3ad%JaQ)~TWn>wqZ;G;|# zRo=!LVK+eTv-OE zHKtX)Pjalgj->*Op%kAQLXz7>;Gs@8)3BTx{d*?w1{03r%PoPA%Z>G}!e7deP?!eg zi2d==&g*(C5nsPNQSlMkzo+=N@3O8pHyybO^m#i|a!>OJJ`D&jJB?|<5%v_9d9hS3 zR!UEer?qk}8NRi`BB0?|(bqlK@q>3MsBRWKAs_8)D$cid{E=+E&I(+4i6fD9;Z;Y2 zuX9l2+&quK-x6BMcy2$@16R$o9eC?aL$)%Ssnv|cJ{PT2aDJ%7g-UM5g*waqZcf=O z#`K7qb&*z5wpmXY0j5t0SUQw~Dio1pE8LYptJIam?9rO5qB1ozgl)er2i1g;q8TEg z03~%_6V-uxNM3Td;9{8J1|#GN)(S_5K?WL=K|fHEU%h^n>BX-^d|Y2Hm4O}d*#u0b zlXmCDzyj)(%1T9vTnY4nb|Q#eObV9)A_2DJ{$1o6t_@I6t5Z0|pl?(eX z=lzw7Nfwi?^VR#MBy@rl2`LLdlpPju1xo>TKz1oVnmZC{iPVXEfxLH6J{a#doe+Q# z(;TCVEqcly%#3iz23Ah$EKr8ByVRmNx%cDw6|i~IOXT|rxKOs!+{ozlpiH!;Le%*6 z75SXw!hl7Y37QE;%7_VYtKBGBQWdJ+T1%s!wnL6c!_?*~l}wV_5S<=~GGkxlL$rf* z%S?e4EHF4CQc%A@e%>%7E2yRs_NkLRybHNZ;4A9M@`^0pml2|Sbex#4bo?76Xe{>y znk+wzEObUtKihYBb3wFhT^yoL3guvIjYx^vBbtAuEbBw5uGx}IQKsTGOgp(CW#XuS zJ~FabBAat$rnakux*YNE%C#n7Q%A6)%-Ti)oF9dj>`iDcibi67u5IG++rZvsB0>{o z?_TDGOQ|KPBQIYKH6x@FA{_>+E6PJbeZ{hF%iYPc&rD)MxORA8pS*|*6OVXGG1N$e zxwa`}Z&r+5rIAKQY{`Opy~<$azm^5>)=^nkQwyUy=kh?xvrg7IMFf1Ea0?2s%<9R{ zO)TSswscX!2a`iyZ!lCslnLOejtPwZn#J8NOQbd#!B0v@TCdIehNtI4r7D!lK zlP6vI`DG?5_uIp`8AdDwXse8AtzyPt6M6{Lw_#ypK|G~F zpd^s4yce&zVGM-^K&7vtF?Ul`dMw-PabR7pp(vORS+`-PROn`iXnBX;5ue$=N1Zd5&>}w3=!50)O4+rW)>Cnv5ZY3$M6| zm=TIA)8nCw(J}?81lUND9zJOaWaLLWxIIHka?(#c)H%amWo+>qh{4X$qDsWw1y|v` z5&5D%G9prVR;XlGlu~BV(5(bC5y+2fs?x$xMzd|Rdr8Cf?7_SVjZi2a2}!&NX{KC2 zlnc8eAKdKRW$!1_AaZ%Z!Iar~?(BsTLkqXeg;Ozbiuy*b(DES^N;csbnp}kTyfwhgD><2NWH^ z6qJ!=wI3Y&6(9-HjpxHqp|eiasnb~9sk0`lj|UwGfi;k_&9h9RWgRA4Tf;`NItol% zBw-3L)Sey1%QLPhCEGWyjK;8Np=_18k-IX5j2;|AO3IR00w|j@{qq+c!R=7<2$T9# zSlpF@0@RfT9K~1L9JvA;sYtgfCk z=B}by9qXb(ZIv=tV4}!59XoE8ws)6=kg!m;lEAEqYD561-rH^Blxvm!`bLLO{#HFh zH7))qu6|pwO01&##%Jpu5k39BOZoy8-hP1dD;n8;5qWIxV<;mlbo?Tdln7|+@j%AP zg}s;a@zP5YX&imk7OX6@`YO>TrH;x-!kCv2T{vv#$8H#Z$aF zAQqw$`4=GKckrU1*x;h}j-@Q`u}@1hHJ||N!<_>m1x}HZZiK@0GoH-xE5cZzprSP$ zw;UqY=S()Et&=jtTNT9KETl@R!SJOuc}dI>pxhVZE{AccH04D}_0*q}5=v>4mF2C3 z{Ty={7*Qyq=j6JS$bo|QDnXL^7suP-7f=nU$dpv+iZa#09(E-;9&~)wG*^=G)dCdU z_qq8;oJA{>9JR=jm9azmP2}*w@D5>uP~yeAl9-P{!D>5PP?H>FoavQzef^K}Ek%VS zUUqx>{ZrYXpt)Bng95O50Z%v{ z=7mN+A9{R`+MlplTuQQ~gc!c16jxG~n@boWCPWEX0Pqk1fQNuTHBB*8Q~*2#0N?=` z01uP^cu+zFz(Xkj9tPbX1+hdnK`0R!Ax72Hul$+S;a$lUcAhN?%I$NbJ_VlBajfz* zzj((6SU1GbL5vPk0dfgLXn=U?>!z`k@r#U}f)1TntJdhX5#3&eGT$Ay+HycxM=!c4 zYe`s`NfmMa?CRPWB3Xr_GM&*U621HiT()_QDY5}-TsyRKMtaW@Jihfbf@6(QzUW} z=jY|VFcF_#>khv356~olM%f#NuJFmQ|NR=iIIaWQ-cBXTW}z~sgKe@Prjmndn}WU4 zNyTP;FJ0oMni!B;dOI1&QItM<}C3H~qK>-+L3ZfzD^){1!KT zYH=b}BB|4M1~er|HDV-*gsO zOB924D!VW@4%0x|Mi~YP9AS$u&V=d<7k54gAm33UZ1fHp(U-XhjT<|(|q9>%{%t_;1?Q?yrdvz{Z>z32n*yyM7Tp(SlA?j?%p-5FDc&&8W{GxDj$g=*`rqdJFh z0!UT9YPScttbmuVBYl1X%=gl(yvjta+TCf!u4-yWvXuF%;lNynppk64)*8~5*kj3u z1eowG8T#xpWk;y|#RQlLBN_S*B~XC7>pO0VAwdFwONQRzWRwhJzBn$ho}CDiSZW{v z2H@`{KmDE4iMvAfXR};AsuAqVgx~pVDw;lGl!tF^UbJ_%y?n$6eZNvk6pS!oSG>q2 zCPd5P%Ma_RfN;?>boR)|_IzzffF^M3u2qizY$)5%mf}NgKvwan@XOB+kRrGH5KUa+m*6~K8mCv6 z4@pyzuZ%n@R4`vePf_t@8C6+rp1dEL6yWy>O8~#;9s~IOUeaY5(IYpngg=oeD$#XJ zI3?#hq@G|nq&ps(aL*))-t~w%vJe%4nuOtry}N>xF;K5rLa=d>+dwUuCl~kR<`}F( zU?Q;bxUN2LB`V>NtZDS&O*D4gWv%JSzU%Q@ZfPU>YoYc?YACi3s_R-P^GfhHU?y9o zwVpMGQr!rE`z}*Z3n)5xdxh#jaDcAYXLmrBkEk!)2t7zUaY?F6oDTY4CM^mNx8?ah zvAO{F5N7m6Bl^Xomh2UpZ%n(oAjvD>F>Xz4PE+D%AK@v(SRM9=VtewArsos5#;2{( z_iJJ5@DCA;f+whyAvZXe6lNr4g#fIg`>LyYR*qZgGfIN7H}BIl+LN$pT12u{j!PO+ z?dV=6{fQ*Zs2rCvqSEm~9LZ5g%KK9whS;zPnp%ZpKVZT@ExNfwIzhJ+JQJ}>(TFUzmy^?08V4lpC85|93te7< zTfs*qxRpA_6Mk``Q!f=oce>DAZZt{`@e=Ua?VAPRWG$+g3dY`=?E;&eQwiIgxzw_WWBnbMc09ePsG$*-%wJQ3Br~D+spYU zmcxX7#<18#g_ebIHre>VbkSG?QkAFE^)X$h`b|Y`~X%@s#w87 znlCkwL1aCZ3KG2}h{$~;hze>#ghHs1f{K8}y#UfbmlWUsA|KMfB0mC>)K(YEzlJ>+ zG_?^52~vuh7?B)^QfglWRAlutC2<_LebU-WW3ByhA>xuUK~WKg#mqo=QI#gHxFnlo zNB_Wr5A~-*t+G3EUuQNE4?1woF(bo+YTeb93QmI(T?mn|GCw(rvZmOxL!{SD_!nB& zD@W?*1x}bG7&u4=sHo$jJ#XQdV|oF$abvR8$hvhP-1e4rB01O*{L?Y!U1{Z%2uqlx zQBen}z$SVImXOR0_PL-b$FuwOZNZh2CDZt0Uvg4}DEk2W3iN|cSXeTuH->CUF7lZsn&4qo1C?(V5k_<=P!S7dH(KtZ z`$?aDs|=rN&8)24lUXjh2{Om$>1wS#^n2Hl-bXu&q^#R+UlSKh`P889B5|#0v)FL zHT&*+l(n#^x)l8<^C!FqrSx;(qtx)jxB6!@i!WwNZ+Vp>z%yyn>i#S)jIJMAo0jQ= z3~|9{4KjG$2o}t*m(2y>m2F!M*H1k96L$w@=+Rl%O`lyIK-Sm0PZ38+;De>)?nSs8LDf z`k)>8jd?%-Uf@Kf$=*MW70_Ycie^Kr`L1uY?i$r&%aUTXX|1Ayn1oj*9;3>wcK}w( z)j-bV0P-r|;_zso2u93}W%4>;DB56f30Fw(rU6aYl}#cJgU?P318;(N5~i5x^Bn9< zm-Fj~6tIWS1P^=8zB_U)OrA1ZA#&!q(-><&NIO8jA!BMl^wK^^Pg1ic+7;$yHId<2 z;NpOayIO)NBrl^mS;Ag0r{X6QLWKx%Ivz(Xb;ci2yVE<}mC(G>A z=kx%SilG@NP89&_X2IK&KVOo)zQMGP;Sa11UEMp@cYry)R6LAmJa2uk*B}>EA;{%# z+u?(vj{~+q)7kxoY%Ap^lPecz?v88+!pBiA=Qu52CWOv4Q96+L%}L1$oDRPimhn(L zgA%q1?+%I7*L^3to5;+qFIGMbE%Iv~$N0A0mwgbOSbyUS<{~H#a$n=4Oz^F$q+{Zb zchLDZjgnvrOEHavaH`|e?=9M0T^;xf{mzt%&nz8neKp^uW4a7Tuf24X01njoo&M|G1QKLDHy(u&`1#P}F4Ex(1S9Dv+f%|mDRyD(ap5NNw8R!`kdjs zRxBSrva8eDCUzQ#t=*0xEzm4F-&Qs6Lq$58HOI-XTymi4+HF_cgWpY+fk4nUOpXj< z*I4A16;r^n134gDkYsyQU_qNSkU$fiw8tm*Y^5b!*$GMau1qg|GM=J5+0v z@d$Ka%nv20iKuel5qRvj9$g2KR5`E+{o>|`Z;<>!US;X@~@Y}mp-;Z)j;sblc5|NKYe56 z?tvxn_!yvv`3b0N_@t>_MlZJ8v}3Q?*qOEpe}rflm{?j!z1F7AYj0Zq-NoRZSN{Cd z14*x0rBa|j6}^?52t+@@WUyAk4I3*5#go-(97j7m^n&CM)1mL7>CG?k${?g-HP#PX zPz)zQIM9RpAF5X;?Ad_&y}BBAfo<{(e1RJrU8e#S_8>W9I4>>HWH~zY zK9FS)NA}$buLmDf*ymNtN~SO$j&!ygFRTs><~23v!wq(XKb0JrfP8o2gm{MXcHyl0 z+y$#aaAXu<0ZHs#H=2Y@zk!+ihJtXzY_R0L$Y$D{aK_6aM4t&y*T@jlr<7pmn1S6( zT5uA2e28sl94sdjMEPEcV8=_RE4g~Jqb#}vjGb{cBt-X}C)YM`m^CtL*LA3ifM(un zQ`}t|>bf5uRIRD@w^;F&R_GM7mO?P@>d<6xj3i$t!FUtKf~5l_6G~j)!SPCke)yHy3CvlG zCOl^OU|C`Mw;`PDk!8%B8#&nND%>2lQp0?xjYTM6STydvrl!}n@APceexYfG%FcQt zi4P~Kpu8PyiBEd9>$!|CKifeH|i6e+r11gs-4NU z%rU3P_QZ_LG&%)pG<}wzva-P}bopAe_Hw++xyonbg$(P%mlO_#dsR!e5aY*BYetyy zV|_tBj(soE9)Z)=`2uBznL@O-eU;;$yu`q3cFM$2E77{s_})uvP@EF0=LntB%JSZF zcOkY9uGxP-(1+thBE#-&`5GNUl2ebhtxlo=FxS?FISr-G4sJJdMZ1vgo$h^L2biG* zWRCh>Q14_L^_k^Fx!A>=So3!bIwdEh&Ed&m$K+BkDw$@dHGFnkKJzglNHw_Bb-_qL zD7fAwx{?UBpJZ0{A_7>_;pIHMa32q>`k~% zT23pHF;5U=%#2CncY#ZI%lxqBG|FFEV0;*bJ#>k_)G+zOP$}9jc{yUn1Z6tf5hCLH zX_)F{Gq&rFnWr<@CXGCBL^r+2yUyUVUKq|NF6BIxG7pVDxQTtuU=+e@HW0Q+PuY^- zwZ^Y(l5n~J_hpp`(a))|O7e$FmEZr8H!?bci{+CCd==txx$@OL$|uBRY_b1KPDCgU z${}t?-J(f)2jY2u0`B|^!lZm;_-0ji-a%1` z$wZkyF#c4_Nh)apap6ZF21lhN<8Uyoh@W|&LQD`#*Y`-9{VC0a945}JI5~FeT)1|N z=o)9$X9iIBXr|v(jAQUZD}bG+{d7E6%5JyQ0E3SMtsS1sZz>#tCuo=0+&mnPT6y3j zJr(||#RN2z6@LOtR`oTzpL}yTg9#2nw zZLNC61@RX@=3aw5e(}r~)89SwrRrgC!k}pA3@Bn}`|9M^2!rH>t z?6)_}48p>8?%IHTFcLDc1AcW08RQI|9W8!-M$f{*_S;|nw8qTIOvuK{PS3;)_>!iI zvxz<6`wZ{@vZ8F_War{&Y~sYr%b=-XWNBjT3|N!0F*Gw_VPYoyxiAtc^8-{5VK7fq;J@@aHl9eUtsZz~3r90vfWj z$)DObBcRFtlLC-`#D>iOt7)F~0K@$z@m|3Oo&zA!j{^i|_?PN_deR?I_m>9A%=Uk1 zkbkir`@gUr)BloYY=8+?V1OD23k1UTOF=((`X3VXU$7Pv%m4JapOVZ0)iF_isfXha z>0$hj8i?~>8Hnv4)f5;M0s*}{|D~Rv`~3Iq^SgTf8}?!T2SuL&-t_cKIe(}iET9PN zp9A`T!he{5X2;))eoTMdJiqPp|3Bto{s#>CGXgNExEMMA#FF1YfI-9J1E8EP^MBSn zzk$W?BqwIZe`sqz!&_8<65}cm5ZLOk+8pyAf{5Q2_1|zI)_;^m0!T@~H@_70hZusD z^RG_yPiiXv+f?-DB*gr$5aJ*6t3Mzh0QKcQs_1V4sR3}J8W=|Km(umK!7sb?}&e?=#Qbp-`wgyz;?|43LSnO`~>*{!4FWs{Ga3aZ#(|?6V&gD z`fr%&p9DV<96<2v{iUEkL=dchttijJ`hO>ImVZSM%$)x-KKxz($p%^=_h%sVs|H31 z`IWfe4)AYV>-WX|7p%qnkF*E&=L`%D{tgHTJm8nY{t#F&{jC}P2Vx-0|97wuv;+8- z_b)~LA+Y#;QU3*NG5r(Y>iY>6v%eJdhrr^muJxaQbC!R_75^O06+wXB75q}pAA*VB zmGj>)&p$fTJ|I49{Zh>z!U!hjzhcCHAU(1CD~w?J1sIV6z$oaKivAEn{Jx_9hJpUc zwTJ$9K)|%W)bsZM@#}%RY)tI`D@}Cj+QhClA-&mt`5{E$7MLCL9W|2BZzG{aQkjB1 z4&8!ZCo|HR^{(h^k>HPyQVx=xak$FU;u#fljMfw$XJ@<=`Z>(0x^`(rx<0^WN0 zZl8xud&Iz_=u`+MBalKug{~Ib?A;0uvX*m1^pn%irD)jSC%#!2{rH^cGTG%lt&7pN zeF+#Hxz_Gz?Ct61*4@nHj?JM_sIeS#B9~r-aX{nx^y*EfAkae4-SP3`&RgSUX7$5S z=d%vSsUs@(Fq$-nAPk zo4z5vT&aBkISC(!aCGrtT!PW!K9LE;ns&+tIjJzSdVXq8Bux?D3wrS=84jN?%ZsGf z15wy)w${a5r={aKIBzLvAIyeLRRvl>-DTMtLyt} z18=28&JQM(8?owS?3BfRMu_dhgdK)9l<5IWD!81yM~tQEI<+wFVR*-J<2~H#qA}kZ=d81GChhHUDs;cC zP*Il`)4RL1u8SLk^sJ2kRf*gd=PTLW8G|p-)i;!EdA zS??g|%vZm9R5-KYn!vdFxoR`z*Po~9a;)`!tz@ioVRU3S=+e48+Fb_6aFecJ%w6*J&bu-bz!gNX>kPc0{!iRi{vDY8?b0<8=x#G-}R)S##SG=cUMVH(X(wWPe7fTkwIqNDuo@^qbJy$iaO1t!k+u0xxNzUafxtJA#J z$r;H#CZ!`(VD&nm*=MM0 zRuaX^Mv@)Q@t{Fw16OWiv>JneKse(bQv+(T$o>!hO~Z%>rkO4^xvg_A)DHEK-08W1 zXK$4*rN0To8c&$2naI=_Ak~OR&PF@vuo^5~D3?l(LgS%xzAqAbZ4^nK`JSnp43`@m z2wXE3EN9+jzEj`b;Gf-NEzFY3t|&eZUMGOy@llJYdf+;wA3e7E&UZE0WKmS;KsnwT z$WUZUo_r4O{1$9(uWg~pKBz4^aH&7pHUhs7>AbQNwYY5n#2)S@XEf-?P9Tw1V)**f_dg<-9$R*bO?85jJ&>~IwWfu zWZ;af_*kpyAmTA0XNyVXhl2rS? z3l1Hz@}Qi@-US{R2V<1$z0Tjfw`0YW8%oaf#he;EE-w``uIUGN%KWY9*rx4OfWDvCe(tWn~W5_$gr|A<}4>$f?pd?BkMf}>gA1XM__4G z>iUJ;Cn#qDVs&@2ozJvAgX$(y$h7n_*fpbdA5@I|wiW!)^hQLfWxn-5?vb}06mtR2 zp<`x-bTgyvh#cYLgdB+qQ(bl3Dm-JWa020?a*P|I($RWhW2ypysvhhR;b+0AsWS>{JMcYku&I4n(vpq2?$4G>>U{1g+d`oEU&}->~UrEVgEC&ICYg^RIZR%NTk=55hwyR zqTv#ucmRcLlmQ(gB+EJ}X#%cjR1#cnXaF#|cs?AlIAeyQ;w-py@RA_hK2b`)&>S4dG6TI`3E;JHX)%a7w7*fZhrVy%Q}a)h=#OySB%Xs`Ts+pM z#A&}LEcS&V+vw!o=!8Ie)ux;v8!1PxJg{~uREJ9Imo?x}om3l}CS{cGRHmaTS88-G zkZPp0CT5tU(dw?dDkEz%!cy?>+|Cwkl+9K>rcThARa2zXRE&q-0eqAz1U6WqQD$PY zs|Mo^U1nm4;^EQ?_O5;~BS;iHq%^q>_(qZOi>ge6kSdHR3UtJ>;Acjh(jMO31WT%H zj@>4A?@BFDCxjL;yxa&Cn4sEsx%V(CK@&@nF$P>Q8^%!;liPB1cZ;ZejKXS<_4Z56lIdTAqYR^p-31C)mx7s zU;Kblnq9V#6ocW%hFZkDPm;%GT+L=8k5u|mP92fbd2t>NlNeZCo^n^k{Mmcy{d%sx z`WE|fN@p&iK>{w<6rBTbJq9xBcygT|qPd;1kTO(#b8JA!l4fdOX&^yPc@(wkJ|#J2 zFn`5b=tQcmx+c-MhPJyRx&Q+9dscIYxF7;44K2nt0xbHy)<2UHB@8K^T$)gk>D2ubbqt6D+V7M}(veD*d_;G2nS8-OMGQB@*%jAn}JbwFRyyxTYw!2o;{j5!? zFJUq8l7sN~EJ}#za)gkKh$+lCIN| zlNJsPWK!+Vl+-GnU)k=*SX^>~T`f3yT9u~OS3Sfj%qJILs$f1<)u%$8+C-Drx4Wsf zp$DcsuJJgP$4_|_46N}`>(&I8ES=Fg(M%rZ(pIJ7-y@l4Hzj$iLhYb z95rk$P!M?1J}K2=*;T1ktjJ^7w|^Z%8yvkFrrA0o^x-bMw)VF2z%k}!P}kzbgM#{$ z*G>w_dR^Y{QwF@K=?)g2PPcY(=Ko{wEu-pgx;#-JxVt2{J0VDL4eow$cMa|kT!Xv2 z!@=Dl*umW$LU0IfbMi_*Z};t)?pgQFTKB`84=l=dRqefN?_bHkiZZVA^cOAT8dE)) z%r|lN&&p=)9{N)KcGsRfR=X9vtcLa6QnBsTFkQ>1(y||BhYLul2CwQ0TOBKbSwgzFE0Wb?8kQg__0&6h(a3(er#kQuTwsXqdDroGXOJL++b9(21XUo zm@YY`3#73oZS_$ogKo*E(Bif{$tsGMSXFL2@CU@?l3&Z~;4j{r#L2oPU-qhLCWeeb zWpJc2t{@@RS;!;{naGCWa59LIM^4p(6Jb|x(R=k&St2=$hGn7%45D>Mzu;~MR@A{u zDJx-~hWu9eP!fA2KBPp+($zEvRVe1wUjD`V)P@jU|JY!4U{Oz&rOUC%e{zg2qNX!U z&)b$hd=cjZGg?+yO(zlbjaLJ4-g(9qJJ!ZZ zs79WbNi|Z!=pdR&T`sCnm61E(1)b{O1+2U9+mht>QC?v>AE($+M57)x?j^Y5*C*iUBdA& z7&0}dRd)=Hk1<&gnyzd{g;itSwUwbo%%CbA0E5cmp{Ug|9ggvox0&~L0CfEib=ZYs zP864_-lq(f==v1~9|jlYWzqGe0^A>@Rs+LGyP6WAoyEL%BfvRMa!I>5arbFU@${F= z6N!Df;SqMMMKuE&!oqMai%jUdfVD1{ja9U8tis-=*7?(JUAN=`_f||&>fWvApsFyI zHR#)V7ddY+mehMF3LP*jKVEXQ(nr>$)39`zWsmMu>>v){y;n8)-2#rd$c4IGL;(w- zZvbxrN|+Qp@X1$22Q-!;JZbR_b{JMjcaZ84V8m>5RZ~&s42T`2ym2N!IBN5C;p)fZ zPz@OstCii0g!Ey5;aTk$y_&#t2~@K`P?;JEl8p1s5Mxt)sEvRw7bY0FnOz_3_^C>e z7szVLF5n_mRK4NmiyppAjPWT@6;Cvt!*PiWM|25rVi;3b6<0}dx67?_KY}M>An57W15-Exv_>5#Lart~B(N5rsAPAh?KFTV zjQeBvdroRvg<;#Ld3bKCokf6s0Or*e4AtI7smO2vO=7Hs20U4fJCulkhX_3P89llq zV`%AIhoLc^JwrMiN%n>|9;=5fm;lb z%@$N>NVM^2V)V~TQK+rm-YFv{Vcn`&NI~D7>jKP~@%F3$+^3iKT4liv^OPwd)YoKT zWqhey626^-71hPSsp~6b4T~J=DfDu7mO;MSVO9L)+S4?U%S;qF-AN4~zN+9q+K9q{ zN2)@;^kIU1qi9g>|LO+oKsaGwNY?6Odm!|I&8E?x7CF>okvRUgl1V~O8>mNzu}jEr z%SLd#EmvHxiT~hG0{9VF;m|`Z609=H-4_iN(^xtE!aC=}Zcsw&G@zJqnNz0Lr5CsS zU>Bh4(c*<9@m(LAI_XWlHm*Vrb<1T@-@%6atkJga`0(6rV{K)m%gb{yc;ivfzpK*W zKi}wM``y-bK6`n8&PCn$&t zhi>T!1c=JM|Cfo*`){UgWTC9!8l0&BDBMva+>l$W`fr*fi@O{{G~j5ytn+3_c5S?xH;RHUE5Swx~Cos=~I>V zWu;)+#9WKAN9fxV@YB6Gt#eV!{%Qj5wUCp3!ta|SG)70U@3M~a5b&k4GmE_$jE;hT z3*MJ|#CORrx;(q+lB8AZi$McquLoP$w`P|ZR@6KWtbs-fCwn%^kq9h5iiFLm^bZgg z_@EhVV!(Np^!7iC`jWV^PKbCCADvY%`du!Qu{{4Rv)K(6zOPH0n4n)Yd*;`ABpqPi zEdXS8$hPWr(AmG#Oc~%J{?8~c_Y+>NNf0JrK1g(2=%2CRm6Rf6nm4l=R>I00f$rbF z{0A;VBzm&fDN~lL`k~QPaEKh;xM%WnuE}uhI@b{_Z+$moWv%T3&jZB9c0l~z9aiIt zhS@YmfH`!<5SCXI9RReIre{(*lXf6cw{6jnpdLeWi?0H7pIK^_u{GC>G|)w_Bvv?K zEjE~rX_mQ0uS5!%-wo&gfz9Y?fsd+|K4mtf5A@`#9ZC)07#;i&VT30f)9REBQEAb$WkYf~g`dAaio*SS5{`Juv|IvzLrzd((SiLuG)< z%Qk*6|L7ju(v|~)I(^1zjlqq(Q4A}LHS7mM=3Z&j`WKvkbZp!pu%8N0R=A?yYt^IEi;4?#qgL|ytTgy(DgIRs26Q>#H$k`+? zLOt6vE_%#ep7bBSm_MgA=S^!#KxP(#XLH-_Tw%n>M@XIwacz8U#Wh( z)tE2c{V8*=eC+2t#|y~%K?!b!d%K%y!mS!fHbemk+?0Z3&lb1sJm%M>0g(@Fo#VGV z9LspCzo`Kn+4@!$@-IXeJ2Cvl2D#(6BEUL~%J-rH^DaWYE30N+WPoLO_2|%)M%7kUoVd)v${nhrLYN3ZO` zMs8TvOZ1jeY;`67D^s&?NaM2gq|{%WKYN`SG-DAY`-}bX&&j#=Xv}hd<>~8Q=vw|d zEc#cB)hqFWStvQeU!_VB)KBQ5sQ#)dASwE&?Mc z9E9`P-#6qK01vW{H(+}7;p|0}6{fN8y^_ImlQ8h@59D~Zl|lIvDX7nq|F=Oz@S#$atuin6 zKN}2@qXxFF?4Qsp-~ZR6qZHvka2_7cx_&n{^e<*Z2Q)6|XKw!s``1tw{=JM_a4N_3 zyyX8yCisk-uxlZI5z&D@z8Ts*&d2*p#P`U_lBfTo78?PL%N4r`f0YS(BgT!y{O@$) z?^fbJW5xfq3;(qW{3qO-WNCbe3IKb#f7oZTUMt=*gQB`+y$%?L4Dglw7tr{oAspE6 zTjtbN1RbCl8}e3HZCHHuC(LRhk!nUZ)c-gr;}p+ZwV`$4zubZd5Hp<~kkq^xI$l5L z(CP_ioh>>r>AHIPc)n^>fY(=0{3!B=Zn{I6+otOuA8H$FP{c90@P}LiOCzP;3s@U7 z_9;16F%AJ{2`8_}*0c=^%4m1ZQo!%NDduSu31HW}BRggjzn)`=5{#?$tERcw8)d;T zs=-nz!&ZG{q?J{|fU|%ljO9RoyKyqGV-43qrW^&Od+9J|$ryx!oAArorw4ZEnhj8( z-uF%!?8F;&rN+TfBM{|#i9u1k71+<8N?ZNFt|YK=;DcdEQUyZ+TMcElVgs;O-=+H( zuMT6~!tYBX3{;kC><*ZBrQ-NIe#j0;k}d~BfhLAB0u>+_VqEe)kKZaq=2fWj{zWQg z*W;f4*|w6YXhr((AOVacRtYC-SoU0Y()OpN%bBqLK|-9n-NiolblSpquPnt%zmMhi z0gR}e0tX9ubXzNIt%Gbt%D#91qaR{|x>&n%%R*(Sb^nMNG$uZdOuk9}C5foMnluLn zXvlXaIzg4;suHrmmFhw>*17#IvikaK_~QLr`l-A-XW5`^BYv1i7u{;8P08X_l7TJ|-@PZc z*aoX+e$fvM`hfWOKWk%|d@z_g@7tk|0|tA7(nD>IA}x*vH>m)4jIg+vsLSWZ6XF2L zLu0l5 zM04-M%PIvg4CNsw7k4)ayo`f~K##Cqa2EJ9-Twzae^tF$&`)dBFo#RCkMqoEnjlpP zh_J6@=HLJlF8Z#>gh9D3E+c7=TIPW22PS}!e+3ts7YgIJ9Ak{f?F#STQik}v{++~(l*6jwstnFh?n8g#}F>c{5+KVLEv>8A)SGvE*Hy)JXs#wHxfD4U9 zES{@cXIrrbS1&#<39_>QdYBmWx>c$?$_KF@-&ckdfI)0D&K=Ud`QWizIfp`Hsz?A# zrNuu3j(B6Q&vTnGI(|*_?;katyZyyjHp-Iu=Z!`YaDmDH7T_nW?AM<`XUtv8$2(UY z16R0z27A2Y289%O^B~a+g}DASXzJ?hYNX@6_gIfdv$}nB_rh*#J6tGKRHI>cGK0E_ zKAN+%8#gJ-I#1@q1;`1;WXz2<;1?WJ4Q=29aMb^HH$v$Rz(H8JR*`j)9D=nTZibfd zA;B!A1WYRYDI)-|7ZmWSBNC;C(Q3WdeBM?de2=Qlt$TvX?aj(@OqY{C;yj*mcMDt$ zJayOJV@rUt_33mpPH`PyciE!INi!-JeSEHZs`}cA=deWgS5%`QUP z0XNU!w^?Vlo6nT&FNw3UE%Jv@Y|F)E8&liSs=XH$X;8ae&@_84G*AZM7y4B|PLk#= z_DHyj@<8Hjqij*0ejjb1zhl771@<-J48hrI08AoQWoSw2VeEv%CN5)crU5_SAYZ6+ z$Ws$on(W;ra`RzjxK4MyNt129JIHsoy-;=-l{EiWU<0at1&EPj9U;rwEB>R90XIw7 z34}BMizEWOm6|t#Pv_SOP*v~?#ws8O$-`D-@aUMjnBY{SDAoe4!)XW{pM+np)xsdb zqgR?2r*6kiI1Odf0BYU{UoY=8!B@-sUU)XtPZA5fIL-7KlEsXi+t?RtEvZI&ust*- zSMIqKo)(50K0c;S!uh>kKHjIm9owkIsweRFZ<97-Pbj|vrEpbRjrAl9A0OUmmJa*7n76JkbFkLm6MRC_A>~+{yU}I%DD&W-RNp`Z+;*br9z@a9 zlOjNSn*Rv!`{2U>NU*0xcE0;n+L1om9mVJ;n?N-$SnNwxi$UGp&9A>*bNAdI*3k*a z=NVYd^a|ep0WHv;vaQj%h zYVuGo$IHBzCqojL`{e;1-?T?V?C!G3c+c%HF1JhVIF=dT5Xg(rsC=4Q@sT)sZ` zF0A$=+_>5}lw<%~yxA{J2A%8qB<^F#&NuI?<||r!l|o}W^c4CVapb3uw!E`;e%RH< z9hl?sm2Go-bE=k%?RhROdI0;3Lv$Ip9=wJJqY^f!jK(sa#US^gE4)D;d##MF_8~hF z)E`m}1LgkQ75e4Um)V;>-QqOHaZk3xxRfcd{^w3V+MU==I@PxDy8`wd0Zj>|AQn_uRgfDFU7~WrJr5b2dHrs7(muzR4#!T0CO>a zJg^DJo_V}5#4C6ApxH~GsRZ;-`~PP@{-@kb(tBg`#1Yh`P1?Zy$cf(X zmk8^S0v3~|6cFOf)8(4mcTq#>YI(9Tc&PFY6xZ4wza0s=r0wB3@%nU@Dp&eWh%*4D z2NN2}p9&rqLI#}?BAFBb!6*!b00bC70-<}M3=saAVPFP42ZJyHe--`r^c=(gkl}wt zA#d?b$NTmePXDddSN*{gQIG)u;qkm-#?t4US~7{z_1)D?O8;+>I+O?bUl!-@wHqdv zUc4#KjW&)a5pjhuLpivgcNZnVmjyjCt}mJ);6m7^LmwYEL%(&=F-S!jKwcc3HAB}3 zy5Lqu#_BR29h<`-k;e3&uj@V!{5tJ5fAhg@>9z;1sy;(GOAqPNoX1&}WUBuu~ zBt8=lZleJwe90HomwUso82yWMn~zTDf^%+Ak^I%6n!o;&5u@kN{KVj)1F`(S>g|7z zq5n$3FvFnp)#>)WS;0r(^=4?95hAKi0=UuUbiY+Uq~om)ggC&Mm^#+f$Gg74NrF2* z+JS-b{abj>$>5 zlV~P>yY+9TAqIa?G@;Yo-1aIKSs$9!neg}wnXCo*G4Plq8nTBH8}UCh<=+MUMc?4^ z0~h}%w;!&H9)^ApmnT-==h;dFe5kM$%`bKHU3yH~Ws0`{=)87B2CkwQY5;8zw~ zD~(A5~E_ja|vf1UGuf0dKt`$?DP(O!XDw|Ff6ierDQ?KAk} z#I038Kj-D?`mM$LK~V5zuY_s#?dFJvglV8j|Bf56*R){R`KXW zU#4QzQAMluY}GVtCC4qv_2G!c&-=l~04K-q>Grf4&A9)5xp}keMX{eYW}kV?S$E-f z&Bd>>Xp_$`F6ZU+A@cDg=6CmJeUh4=_6dg%kyj@l9(~A?S$_J}fUooJ5;P9!7GRmw z`#k!5LW9CGxzY7XLQ-_j>o_^)$n>sOu=?vcZj){^AMI&MO}71HmpzBT>(%ohJz|<9 zQuyoLyMWB(9G3X(eLn@pg4Cy3`aLP=F_+e}<0ARRhwla~j#X~2p#39lR{IB@`KN#m z_s70pF7gFhf-Z(n&P@AyhAGKTyZpXymBl5@jk2?T`Z!~Azqx_=H1-{zY!_Vs_3cfM zs^M;$uhT<0ZL4GZZD+`;&G@E*=z%lb~ zvN+#|UH#|1Pd)&UG7EMW41W`6R?0&i`|ZAKX~CJ@MoYKM>`j4|Ll@KMMq*l&(U&FE zb0w_NPuj^TIx|gzFb{4T= zUw=^)Eomj(6fDQrv~qGMTdxz3T!xxYayM9ge+oTRsPOM-3Yb-C20lWy0&F?bS*i}( ziw{hg0M?zeYl>q%Bw_Li0e-KdXlUgNP(f79O-xJ)Zu2K!Ypy&*pL;l)MYK7!k-C}> zY^;;tlpg$EQ~dmyT_A{DescZl&^u%fwWL2EhvLpFiKutQG-|Xv4*-OFZX7hBYZ!>-^ zX!3Q*_oeE^>zXgg{4F$@ht@SS{ar(jpJh-@w^#OpIht*Y)-oGyMf0SaVJsi};$rgg zV&dv&*zV_5lAM}vAd1{1p%_27ZmdTIse4Y&g#~tAq{P(3YjFl1xs}D5>_bY;E!HGW zCmwhpp`V?{^UK5gAfIb>63W`{Z^)HQcssn5B&SO1pv6t^8=d)rN6B_R@tb>G>DO=K zTd_aw>BseDXEfFZQ=z)OZ*)s?mQ3QW2A$$kUOV#&O-lzF1Uu6#-C~s^k3gfe>RAi) z_17$dpORY-fyXYRG14zI?$b^BW6mYH_J(A5R?{rqq3MP)H*-;LmpvsK(&ga+qY`zm zLVQI6Pkws@e&0whdPn0sJzSI{jXT?}dTP~&R8FP9u$r?=ATX4&v&o&4;x$5V5sj_B3lzG+(cb3qEr zCmImTH8#GLhtzK^eM~C_taLZB2|>HWN&N$C;;n}L{YWOWc*=z5Pp7}#PEB_uX2!k* zjGs;izrI!$*`A(1IwHW-JeTmd$oSSD+69x{Jve!o9G5BQczmC?ia8-$J=#Z#8%zaI zT`Q2ik6e9y4HL6Y_qDRuEV14=2TUcn`FUhnwmnY76LXvSSPjWGu*Vm`YqposoJRu@ zuUm%o{bpfTKl>fl3Lu}?sKv*u-VdidmdZ@BiP>8!WKpKzHQ*+)q19|YAC17pf0|a^ z`}&fz)}@^ByYi0x<$xplOXYU6f}TZ2R?`eI-s1}F&CBwlUs71LW31WsUJhlL)rjAB zioIEe;>P>rvtjrGYvqpb?^gA&zXEe0LAPpa-AL`SW@YJ9S%kZ(BQ=^?l~>*1`Q`wpYKGLrg5aXd!M zdZzlEX64+%s%LiPCd;V!D11-n*oFC=#=Lr*Z4#Z>|vQ4*4-Uu{Cae9faH{iXG-pVIP^Hv!0`FvoS<)t%{5%(Rly7B)2xiR!mr^n zfw+}}qt5wT`Q_x2c-zh{^S3+ub4=S8^y#Z;9ha_Zh4pL_cC)oa<_4wtnA^5~_a(W~nKv5p z=Zmcj;okao$}o_!lh=g_{; zs3J&{N%ql6MOvK73&AKzuVX1j-8AaEwu;~N5se?ggXGtk47XRmzPFKG>3yDNJwx*t z$m|8{Z5tWg;ixl88%jl)rNv{SVYZNAVyv_6R6n(E8*A|H>I%`yqfPN5qDho_qsK*w zR7@Egy=hvq6&LW-p20O;Qz>VZ)SC?O3_$m^Ae0IvN9><>**RpcK)S3NGeqe@L zh31nvbsw={)E2n<&ZBcg7;7cyf_VWGUbOHtef+Lr7CUo(j~NA%s;6KYJr%<5@&!h* z280El4%3=`9VEGaD7)%fao?dQj&->UOfJYzovdkmh5)AMvI7^Rz(y@rX1OLt?&`u4 zFL#6_(he8*Z`}0V#&#{d2zpR7LDFIvlfMeL@uSDQDzSEVJlDn=7rYS4m$E`uBtDj% z-e0Fr{fKFIN8y^IMRZp$SoiENqJ9;;371iMxzm@zlU-&kY=s+4OZTteM}1~)YSJd@ z4+fvcC%V)-ry6*^D~IZA#keTU7Bd#|y{2QT!0(Y};6Y0S)4 z*hvx;24xmS!g)lI!s1cMIRwPARUJqgXXnwf4I4wVs&g{05aI{WI@I?s-!#Q8r^g>R z-ZJ%p3E7TUF?d*x$#4Ua5{zoUCY3t{eAgyHUzC!eDw;{1A2sO)l=cfl%N&yB=WSo*$?7KA`J2h{|3b5z$+R@z@*{MS!FA5 zz1kL#4-(%<<{d^c!PI7$k*5gCJhG&c;YOLCA3%prTbv(Je&^E=T}yub-E0E;N`zU& zLe5qQ=4}JTu<;yQeXJ0A|5PIH!BSwu1I-XCArjvjbs=Yeks5tk z5!Q}FIL1ELwG^S^G36yO8-b%z9BJRS)RB!=mlL+C3{280MQ)=jNXejTo*b@u94}Go zr2-0ainjARZNIJo%vJK__hGu1x z&MIT!7DZ3(Mj^e{7yI;E_FRYZ z=#*|()M9?JQ!J{M>LmLd0Wm55$EEUchN{MajTS?!8_}YZA|$Vi2`-DEaIBG(yq^26LK4#6 zsXsJ3ffZ$7@Pa=E_K=f(tl|4lvE}$?$fk8R=dZ|oYba|^9zn@!E9f^MLRx%sEL9Vk zvMh|UX38US`r8%}s2f3w!g7U%K!e*j)&NH&^X0y;?`Rj-d5u?cZVc4po**zy*k>iC zEryrZ6-Qxk$a}w$u|CaUl+(N`DCm$-RTl4;Cq(t5|tD;u879`Pn`k6goNLz8hu|;1rZ4zmz&hN9GuOls+NgfvRs=Lf|nj&Ss&~ z)lOwR1TMwaP3)GXqu4gV{{RL5Hr&$`LEuB&Ga`jldrx6jJyR9%$J*f#7G$R#>+gn0 zhW7BCF918vH;<9*YeFbM-S7<4X*&!X_h1sO z3rwV9dk`CTn$jC9&%k>B&MX3t$R-5cH_{NYpn6@2fC*DA%C_z4Xr7d^AMj@BrW|Up z(qao9)&ciH0`yEJ+!@mf6+yhD_H{1g6Gg*L;!ucsq84jo-oJ0QSP#h(sRI>{70pT3 zu{|s$(b;C|2GKi+feGs4BjXnI8u~%d7v3;3z}!jUd|IG7xeRIFGg`d=jU_Jcm@~4L zWW&jx*3!|>a2RH<3h=u$VPvP(jNcfhiFG-(jTNPuImHOn7WyV|Mj?zn($>G#TsXgE}C4SvM3_?hsM*+mw$$y|J zlyfCp47nGT2|DO2CD-?OsHaLCXw>{Ho?vshpoYN~2s*FL%u8h(uJ0Icp0bM$Z;7>u z_26iASJAUlboJFYwQ5L8(MazsQV| zk8o&G;T#5+oyp92a~5IOjP~6pjr{ela)gfAwog0b{GzGT7JcOHKJL!jm*P%(&U*Tv zJvmg$o_PxS5%vhQp>7GAY2#(Q0ZhppR@yKLu)M;wm3H#P1wB#8yuw3OI&FjX*GR?8 z#~`BSgRcRo=6Ys&2O%ijv`$;gMt`$cPfVR>OK^%vOQDt&l_N%!0e;wIFHARyfK4|3LoD&6RFb zm4Hb&EU2ESbD*nHzY@y>9zk(j1dH0%e0&omM5$(#7c6NFiE19W-V{{i{=*pic+fRk zdCEDTNw`*>^qtiCR_QHhMkYomQ7BB)i$I+bU7P<}I-n_aPDcbVYR)kL>JTwBVMBJ! z3YNGrKxExU7BfROH+FXCW$*wam_qi3_wb`(xcg5}%bx~byF#Bu9q>!o`?o%)=O#|+ z+zIa`em#T^o(blG{-zR8O6CvI`2Gf3%q)CQernqa_5tj*YSGp<_uL%Zch|*T9dp+#u{f3s%Kr68XAR##Nt6|M@)w}9E)?| zL}`5+rs8SU2ZWtz8hFqJZ!E=5L1tX*K$nP^xTy?2d{2~sb88f&2|)La0-byM)fgKF z;!pe6tidyjgxk|yP2P_u#O>6UG)~d9`=uHyI5(W56$AR8P8jMiG_bhprX<94nRYR8 zB8~E7aEE;-b%W+GlXJ7c*0`M1n(UK71w3bFMGGlQUi-T(u0TyZ#E1JlsJPE!-`{9;Ya+>xK>uNEX&p;bV+xsNP zBUfqGTL~E>yoX)SB@D+XVtMEL9<8uk-RkuHwJT9LXZRO7G@`m3BMOvpGm21$3F7tH zgZKb)_KKKPi54dTTIP9r2a|#+WzwLkhiaTA4QAo;7ftlC1c0^DoDge4 z`hkTU%})n2khy~5WJi^JvI~nu@+GyL*z9>(2+&vS(SY9w%Cr-%M|15>VM?%Ptww(e z6{upa+ns7wlO}i376hKaqPu40imrS*dC1J||DeY|q^L!tDY&T_et)sS=UNZ{@U4js z=ft)})>=sBGfo!ua$i|nR=bXK4n$9|ETF)o?1E6HsI@#yow}4~AuY9yc5y7a?ZV9& z1eYj=IiU!O8Gl43nu?26)f1CJ@mAGXUc%Iu;_){`owVDWa@uFe;ojz-{A zM_ZDGM0mtmGC|O)o;ih;E68ai4pH^+!yH>6qh`{~J0SG~?1Tsj>*l>tCrF|VUhRQg zUc76@$6R1nta14^4EKTZdxy8_o-D;RK?JwC=VbsoN`3^XQE#Mdq7c*Ep4EY<1{3IN zyzom7JNPt*xxlm(C@tnj^w2yk4eOkb&Lb+70OlHFfDPI#ouVO#69QkWG>~dQ|C{Dd zHTaKSePHuW$1)$CxC?KTE2UI~6@=^Tg!67v>hV_}9*IB@^d75tW`XmDG;u*Tx9*Rv zpC*zitnise#OAc0B6qNIrm1;XKZ|Rh5+*9RXJlM*{W3Vul7}^8~^i!nbx9%{+6=a*LZ+iEcM(d+s5=v6Q1HpetBsBa0IGWdbJ z3(oVIY=fNBnWlg^Xpylqg7?bybwT|4C(|NuKbQ^!u-=@<`rECwNaR?*+?fbi4r)eCGVj0`}@wk=nWhsZuwg> zF6LOY>aEIgHP0l_R2lj*}5n68cu&8eN+YTnC zCaC>W(jjY}asH2Bt9H%u$KEHe#0YIMVhv?s4VjxcUKxo4B~^({rV|C|c{sYm+>t%y z!B_tC419@*VFV9WFJ%N2s&~EL@=p!RENbR1BkPEv4npB=SLQ5JQjkHI${Cg?kqMt4 zq-nFEMJSy2Ev7q8kV<^u5l&_yr&}Qw}60Gm#%+j5Eq2hyjfdg!yzqvZhe_Ys{Jle(T*+f) zUk#H(hqT6R+QF|1&!>SdT%anCe%3t}QI8X)SF$v?fX&lMw^9GMsNsq#sf-#a_4}6TL`MQ;p@*D%Rj> z-A5S>#{kcRHnA%dh+{r$2yu&951942S}UQ!O2}&t;xT@RiFK$_Fl-;(B_?B@@$60h zcq(80{z}QbNNrbuwOp8I1PeP=ZIqR#kZJa059}qk)kZZXXuy+1=D1e2OVbjxhIPpNmCH=*)d>vWPAm?Lb|`j&Gq9GG(5*d zuVF5lM4+OCwB%oGQKxAN;fYvH`tH%ftGZ*{k;%>D(3rnZ8`>8Cfzw*6-GV8*eJI@_ zc213K;Mu)v6M}1@Pi`Kfe1=_n`6EC6&e~NB9=HvQpF{xJ zlp=K?agoj%0m78a0%NdVz0qK_>7$Z~L9KEAfvhtxMG6pklaI%cHz|!Dg~5NHu!9z6E$b}0n3Z#MK7qrF5`qtw|41c z)o>pQrG*a|n^$=5G1G8}(|#N?@CgAgT!83{TBv;PYpxAz{OGC~`P%LR?FWp}xtSKh zRZBM{5ENv4=w>oPh8I+cAGC-{+TVE%{YJ-ZksuD}=N^P4JaIHLi2q7lGM5DUvzpoU zIKIinZf>7z_w^zpa-+9@l#s$K+cXM{AfecjQREfTMZv5!O@6%wBU?Ktn2$GotMWT- zad=(eIaMYVY$7w|HIi+r)40^T7o9fTIK(VcvyJMm`%lml;js7ty9=`YmS~#f@#{h| z{wUuu4pWWv{lLS|nINzrflT)YsYAZLfN-29UxvKbeP)S?Zr5$hS=AX#k)*$!MOl`a zdD`y)*+pw;#aR^l#J?hVD1ljCfR z5(`9EFPBJMn&>w+=QS-SuAh0MJ;E_2Y#kj#;VeYjVOHbbX^Bc29)m*SR$`o?v(N}t zm$XpAJf_ow6SR0HVbJsPi}>M7N`!Ss#D1dyuGk?+ZB;!|2|^M)Ck2W*k5 z$^k8wD6nTdOkx#*bZpSK99c_To^!^<8cQPnLmK0NBJr({@<&l{-Mmd5Fe?qeAu=OT zP`!VW;mdTn3P`fZz!*zu=zBu~bLD~RM$oBFGts|^a`Zlcb@AINwAev;PUJOnq`a5& zbfQK_*!$%5oJY| z$02MJf{JlJL(!Qsck{9A2Ql^dj)qZG1PFmc829;twhevngdZ7E{Zml@+(#NOssVaBAAFw_>lj@^pQagOgGbmIJKaq3MP|$a zS=B`&LubyyYk2zwWt|)&`*JevNbnp`(WEI;A}sB*k741~mtlx+9q+V!NA7hTn@~nS30S!dQZKMCD|?l&(mZ&0n0pQ4-q#NyY{o z&7QO);g|~89e-;jl2&0F(?mbo#&$Q<)K6UIOn^BEOCYzaa#p6~_SjE}qNIj^e-sXA z$hMOC@{3a7xm2=wFnkvAaTuTInc}s7D!i)fgC_)fmFxfs00e3N)vMw9zkAi z-d}Nuh8y0V|N_{JA=MmjdQ~tG`0#*MHfjtEK+WC9-ApM zK;|6;k5*`Qdkn)_q@_{oaUPZ{vD08dULZgu;$~j#DI@-y3xn@5) zZQ-dN%wcDZkC1h^ZShm+dsGMgM0 o>+WQ=87m| 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%0DDYa9D~+8!+w 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

)!x6Akk_;B@%7Y{*ki?fgou=QkEj_Yd7 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

    j9;9o%<2)q1z*LXF79+Y1&3{NW~T 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ΣOyS=;W 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
    +`C4f6G2a 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

    Q~&SG1M?Fk)eOO$WpkQ1Tlj_Fz% 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

      7H^oN; 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

      Tpr^LFUUtMi_<*<3x;a}XDb7vJ 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 literal 42176 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 R8Jt4H@?Je>zIE$w{};>}unzzL diff --git a/fpga/fpga_pm3_hf.bit b/fpga/fpga_pm3_hf.bit index 3b9372dc0190aeb8c83e2ba2c32c31ab3563cb11..078b9b6fb019b406476590fef9c1c337ac7620b8 100644 GIT binary patch literal 42172 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�d_5;~&@WJ6sQau|+pEed~j!%_I|`%6|>r`R#JZ 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 Z`(66O=Z|Ko#J|H@itu;pbMOD{{{ol%HxmE= diff --git a/fpga/fpga_pm3_hf_15.bit b/fpga/fpga_pm3_hf_15.bit index 366c1c2816623df65e145e2cad5e9a1d6b007db3..1a7e7257b887f6f49513721bce2a676bdf4acc1d 100644 GIT binary patch literal 42175 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

      h3G9N*mMKrk=iH z3Lw5o6vQgai1Jw%A2|2h&YokLZ^s9`Y9NDb@CPg?bixP=AaxsF{tc)jB?%Il-FK(5 zUTG&2qHCq8lNxU%4FU^O0W^kEHczM|1IaA(+yEeF5joStrM!UyTl|Zs29p>UC z{h`az`j!CS)y>RCmAp(LL6d=z#Zft#UZgg@wm^T%AWCDnT9$gj)d5JAfuF|GgznOD zR9&r9U;{t{OEwTjQFVzPpO<6RysQWsi>qp!7f893mm`Uv4{i_(b#{zHY8C^}ipq*; zbTN=YSz7*A@UqH=idw!*$4m0@(}*5n6ty(<09Y`t=G7BaE<%B+0={zx0J!>JijoZ_3HP^6Ylld+L>z5 zk-auZQ|zhYWhVN}OosV=SN6Keu)Ti0ehEDLewlS^vf6`7fb{Q&dR*gvZ7tm*Q}c^~ z7WNIaR~0V@1nu*3_+0sjmluOj2e}`ra33r^Rsvynn;M1B6{Dh;cH&HPi-8Erf~tUy z)wFsE2p$V%Rq=8}&ldq4q+byT(x48vXjjorY0WPIK^+ze znlG@5Z(tRFG4O(XM4UE>WHFYe=_Oz?ENiFXp36GD$<(1GKn8WF391@S^njrK0Y+sc zv;y-ovoPp*5s+b7qPv($8$DVI0F#6&5Vn^;7hBxs)(~b*em3~@={Vx$N)V(GJ)e*5 z5--nf?yO%5MEG2V3JO?63SL+k({V${%T=H&O!EKA%hhxo67-)$Wi6%SQ1W4vrizy% zf>t0((^N9Xs3o7UbOqeR@z+b)F%!;sf8*jgi{k3NK82muAeX;i&i+8<^BP!5dbeS@K$tchSf!DCjFTv=fgk8?w^qoZQ@sn zT285RKP6G~`Jgbqc{~j2XA;#w;2l(y4GA)rVH&pFRjo>yM27gyi0rg+iga){NEb|C zG@b?#R;6rwQVVJge*|h6+$EWAe8f6;vcRiYL4#2mnbnlc3in~#pD0{W(am%dCixwR9#V; z9k1>1zq;XngI|S7%K4NNhZ%lcn)m#Cc3ipVmzEX&92tJ!i}GNwv7xL!B#7K#P%cmP)jZtBCGH!n)Q9cH#k#C(Ntw6PTMQk? zR>2=7cs^RC%gS^cb}$`2iEI35zZL+c z%V$KZJzS;BTi{lN*A5xPwp!@soNhID4qFDLAw;57Gd4Be)w<@VrK^3VPOvUR66qji zq09VS@TP3Q<8%SkFxY9A(-7(>$vVh;@|5aXhZ*dw(&a6hNB7a1xfLzGE-$QT27uKO z=`xjC)R>T+<9v8bK+gMl@GM3()PM$JO-1Q89tLeUM9l!HXsjcoXojbo&|Wfa6RWV0 zjslV^kS}WlAN&(@9u2Q9i#j3KH7wuQfh5x9GVs3%KR>B1OSC|s!k+(IFM6UdFMb}r za92J^$R;1KR9!Zq9sSGl0XjoPKgCy(UR?80pq{@tssQhO z@axljlCl=3sVewm|AS>YjVslm{H-6GU|G0a1IsnATm#EBuv`PnHLzR*pYj?|^Ce7} zFkcd%@~T*V{N);0u7TwmSgwKP8d$D@Phkx>DwuEP9fu_Re-v{_)P9m`2-3$L8s*<{ O)B*mUD=$k0nfxEa&@5;G diff --git a/fpga/fpga_pm3_lf.bit b/fpga/fpga_pm3_lf.bit index 864274cca566de094dbd364e4fc389714277eafa..32ec549622626fcd4551910ad0c97fe1bf271c74 100644 GIT binary patch delta 29 lcmdmUl4;LLrU_;O7WzgO3@HqphK5!q7FG%t8{Nv50051p2+jZi delta 29 lcmdmUl4;LLrU_;O=K6+43@HqphGtfVMpg Date: Mon, 28 Aug 2023 12:04:12 +0200 Subject: [PATCH 246/299] misspelled a name.... sorry --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 637917d1a..cae4e6507 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] - - Swapped to OE1 for Shallow modulation on RDV4. Thanks to @gentlekiwi for testing (@d18c7db) + - Swapped to OE1 for Shallow modulation on RDV4. Thanks to @gentilkiwi for testing (@d18c7db) - Changed iClass SIO and Legacy credential detection to be more reliable (@nvx) - Added `hf iclass esetblk` - set iClass emulator memory block data (@nvx) - Added cryptorf regressiontests (@iceman1001) From ba320f26f7456c633dab1efe2ee243b70eb962f6 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 28 Aug 2023 15:34:36 +0200 Subject: [PATCH 247/299] ensure registers and vars is set correct --- fpga/fpga_icopyx_hf.bit | Bin 72749 -> 72749 bytes fpga/fpga_pm3_felica.bit | Bin 42176 -> 42176 bytes fpga/fpga_pm3_hf.bit | Bin 42172 -> 42172 bytes fpga/fpga_pm3_hf_15.bit | Bin 42175 -> 42175 bytes fpga/fpga_pm3_lf.bit | Bin 42172 -> 42172 bytes fpga/hi_reader.v | 12 ++++++------ 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/fpga/fpga_icopyx_hf.bit b/fpga/fpga_icopyx_hf.bit index 07a1a0bbd39a3dd1a2b84a58bad4b2779de19fc5..2deb3216ce64bc0e7e8add8049df1a585632cf8e 100644 GIT binary patch literal 72749 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 z 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 literal 72749 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

      Tpr^LFUUtMi_<*<3x;a}XDb7vJ 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 Yn~_P(pDt2^KL=lm@cZ;P=YIBo0Jbn{)Bpeg literal 42176 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 diff --git a/fpga/fpga_pm3_hf.bit b/fpga/fpga_pm3_hf.bit index 078b9b6fb019b406476590fef9c1c337ac7620b8..c824711fd4b50ad0bd973c85f06631f0b0e10d19 100644 GIT binary patch literal 42172 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∩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 literal 42172 zcma&Pe|S^ZnJ)Ti?QLgUTedc~$+!t2+p-~o$VSM-A;icFf{X2t$HHDA_m;5#SJqW;%p0sX`s%ByPq@ zC^f&&yCh3;p8K5h4E>|KVk7Of*ZRKqd*AO}t5oEk%>0MQv6hT)wf;YA|El%db$`|J zt=jK=V?C`SXW;MZ{QvE{i~WB32I&ERpl*@5bWva_t*4^JieA z%#Z)`xBMg=M0AVa5t09``5mT%L}QJgZ27-w`tOVUgwON;+u6bJ=f=~QvM1Bv=9*Ue44W>4@@*{RKdC$lymr_qxsXkJi zP{L~Zds2=B-J~FQA6KSu(a7Dla*^JqI_^&BQ=ziW6wD@PQRggTZ=Il?I2I9Hpv25K=_j?SVcRBe8$tI?1Ok4 znGb1HYLn8|yK(7a=Ta;&{4pJWMo)@wo7x(7g?{wLT`4WZZe?4ns`J`EFfH>vA zF&fljLm8o$H9vR7m2Dgsp*j9rN;3bK~HZJzaAyV!f>Z&;qz{yD5#>m*+oH>b#u-&5hJrWb@~g?^Zg@lGmlKT<_Z!O33tKbKbCLe22Doo@ zX8+kb9f@R{X0`c`ig{Mi|$*M8-`C)H7I@Z+bz&&wRn3)T!ypJyPKr5DC zwZMDkz8?9)DZ#hJb#ErVy!3N^Su`Zw75W9bY&W#HyQ?nHCoLR|4%3SrP_-@LzMqkL}RFHOuMN^KTwmP9C=`#w3-3es^xg~h? zPD2^W#1}8PM1O3n^Q`{C%DJWQh`Lta)Ll24UlV`6e)U@qQf9vTXT{Y6YGtV8?@KG9 zTO9W^Yk$wq@n>nls{i`uY~gesqj=VrQA^wpOO-BOV-b?^7m>57eNI0j4tXHkCRoz3 z>|xB8&$!C!1rmsn#jkG9OVk*0+illqQd<&nw_;BJgv{^mD4WW>LvHM)tGs>`*=7~+ zD-fxOZmkIYKC5K_fE0~;PMiozmmtV)${`SY)xY?n_|ck zUO!t!is=;(Hn1Fi%{33&HGl726CGOD7q5J(Vk4VN?eV9q+aJl}mkS~DKZaeU^X(Nc zYpor=guaSirlrDd>N)&6jA?2d#xzYfHL8t$w@fP6A~!>K3io*>hhL}YBMRECnBt=( z4G7osRU5?H%>fJZp2M$h;MXFqwR+~TQ8I=0cVQQAr(X)~OKfK*zJOo!3sI9QTEqT| zwunkgyN~@PJ!#>>$#VF0OzSdg?arkhm-e`V@9|?!A1ANn?QGhqrq}cM>_PKm(I|?? z@BSM)K_20=loocD>Y}SsdJex*Vu}Tg+P0PNnv-m~!!62EG%iti27Zmnyc%)E9bejd z+zjxNS&C}BOF*<;I?KeeP`?Rm>iv7Io4wCE+n*1|y4gInQ}u+qb~(*y{3@7-73KMw z(apx#qx6d~Zl34pq~7p@-K=mrzEqX=8D=vwJvERZ(yeWnrC-Z1X1l8-`Qzm{JYAs1Li!l`MW4DT*CEBR7<-z`6}rKOSsU$caz4b$%}v_8kT*ONzn(TdAw9lxj9y%8a%UKI%cC@pYY(r> z;@7MT^sY64M=cv>$K~??$nZS3a;%>$emVNYTW!IW?t%6(`a~SzMR5fe>aq|!$IB>_5Bq2BqK<-lc&L>bj?Mn6W;{cy5-fdB7Qc!&&>#>EPdIKQ z9YOMuBCrmZkt_aS4!=g}8qf;#WRfQ6ekzd{*XUky=kaUyCt^g@nQBP6Mz6Qkk^79| z7q6RjYVn6ko_~p$*OLkfc8$6^JQ~1vUc58XtHvf+4!@3yt)^*L1cpYalPsnun8O>b zFsZ0AhhMXPZf;%YIW~B}GXWg*kUqewt796fN-Kw71@F_#cEEIXS6ysMCIcb&QpLev z;Q_n&Y2Z#8Pg9OQ`bYMX={~JoFm4!)VSQ4+M3?cx-Q!?n5g8Ypo}#mMpaLtiLp{L< zhFk+HQ7AeCnA7$=ewkgU{q#h19y?0CqfQj*jUl-_TTfm`fN{u** zRNxv^7A*mgoyNEx$?~smbqgZp!B*B_B4k8yD{u$T0}27&lzu-pZ8x{YD$UzRJU=Vi zZbwo@8`;mOEwMYLw>Vof^Ce!Rs2h0HdhluW)b4@)9d`RaWPS_$OCY{fwbi1m2iD0+nkvTO?82P`FO=*Hq4v5!{|qmszs*Eg)G6+z+aV88E8 zvHK8 zi)QM>3e@VIT5SkphhXBUww-Yg#?C$b!8qHTnG0+77#(kF*y!4+-~v1s?-`W?4KzJy zDE-s?%hBh&yc4pm-vyM>gkK3Yz#c*2EL~*0&<<_U;MDK zR_I~2MBQX8=+IhszA2xFo*5hxyKLGj4p*Hd&^^Be9#-N#N#-KIj$m(?40_c(I=>phP6in|}fa8884 zE4!6Hlwan-9`}#*9DYqo=3=`hm4Cqt22U9+TSC|Qeu33%H~VGIY*W8MgLZ9Fi+e6o zm;HRJ_X+2MHxE+pPQ*@%r|VTw;4uenFqg#8m}9H$iD*3xipL7XR~(C$%kM#|ql8*3 zuvUj1Td7*ERTV5CU40EX8a+3DqXZAD`<2<8;sKvChI z%;A^uG$g^mY1huOd31sWIOMExc0vopTm!&CQ@+Avfmc8U9d!=Ue6f{!S7=W|NZcCo zSXx7#e?{nV;Ih`R@D{V3z(LBJ#;8qLtwpXpek}uqsY)%}SU8tMHtcIz6TL*6x~tX| zCG-4C!}IuUpV981qfHo&p$uzBXZd*z?aATSAZBOzFx021((7xNw;{z{;8-S|rcE2I$F- z%9OSdWT|7wk=nWu{Oh2oOck{hCbIZ-p4yqYvuLpN1KyLYwoz-jROlOa$SmBM$*a&0 z&9f8`8?5##bb@2UCFOV@U@jJ ze%*0NeA0B7yWdg%b?aqskn5#oW9nrKIvZ5b!gQ@A`PWg%ynwB8l$X$LWX^ousIy(I z%CSs*Ej8?P6clIlLl1c+et~}x0_{}hJ*V*t&zw#LodkVD;#Zq#$%~;ZesySwFJ2V) zR9m2>9P>3yMfe2qbu5ct@2`VexCXE_kB*;N%3blYF(!!^5OzF=U+gmlXjQ5oW0wiT zNho7l`XcU_fnTVa$knE-jizarP)ro|0J63`|MJpS{*3UBvHSc{x?6<$Aop#jN~>f7 z*u-TFdZEv^N6e%aV4P%ph16abJ!6`rFU#XsIrIdqUP*IsAu8Tx4g8;}(r~WvUry%lI>%CUogVaU~^MZ`vE57k23X&M2!_DZH1%glTK z?0=3RAN~mQ^%3Y2cvDKbM#G3W_mVvS8k2IUja4@$Ai+U~!Wsj9#ohZ6XlZPc`r%C# zt8P@eitnitu5oAx*A&q_jb9t+#U{_`SdXU}Z5@D=#U|+7kY_+YkmFwkKIj|0 zHZuPN9v-F003N>6<*^=2G+9~vQi0SSJH15rP>aCD2msm=y41Sm(1BkMBZmiUEnYSu z@l^N{cpj`Du{wdOHY{(k?zpD?NnK>S?Xrg@Y>6F{xaa%yl0cpxXX*H|3;skS;$G90 zR3`ZX?xSazr&CKbjhitc!?Vyd2Pqw=iOjt7*{A6D)k~^?GN>i2{kCsX zUmU(}>~HqHaZ8SW9SHsIu}1T6C)>vWTS0sEq;j4vi(tgvbIUaUYKDGz#SVTAeIl1} zqPoF$`ISoaVNk$`EPkCSm@f{A+VjwRYpGZDB(=dN4|T>oA>@rfW-d|%U!r~FOX}s+ zWX8FViVE3RL5d+HCbIpngyUB2xzQR+|3TCLBd zPhp?J#V9pU4YjW_Ppkg65zopTejTQ322l8um50>}s^rUMhnqj9#tu}2IsS!}+2N0X zc6qg=nvmnFrI&@@Mq-@S50lV0o=Biu7yD81fPy)*J6Dt3h_J_<-XONZfF3Xf{FPGL%5!*R~fAt$ThWBqPNh$X` zPg#Mu>sN}Go#42zX6T2sF&s1sgbw_21lixJzl4B;BEdbZN;resH4b`&syHfV_#c!@@#_}q-dzr`$Q8Kw*-ZSpPIq%e(-L}=>eji=v_p>) zbuF&5?KAYlK|~Z*omm<~+-Mzm!7&4$SXurR0{_~lKC;4zQr3Yf;J7Ftpl~yi1DlnO z(~4Pp%fU2PER5r|v=w={GmhFg{Ss#IFSN91+4oA~I$F~_z-u%5;Q;q_XZ6Dt$1e=L z`PQ%ec;zr|4)S8uTIhc@NL-$QU*j~lRMsSvj5Ls2=nJ zNHy(xt8G~5#m?%7aXM(!gmunF?KcgnZJv?CeZ@ndP?3EnFv-YC_HwMFMf!PClXC z!IGIZ-#@!gTxP*OsMceUUKa{i-05TJfD6}i%JgpuEcGcnnAp()S^mnbpjaJOCS)&3 zEQ+tp;TM!QyU{}RHAzXk&caJLEN&XONM-q#ko_;KR_HNy-t2E%Xz4vowGxResch%? z7rm&~CiQKl7YM~t2Wm*!1M?yh1lHuKgIG?xmqw@|HCJ zx*{teop*ZH4rVwzsAK@;XW2inCt09;nlQWRxP5Y8Phyj{E8LWmT>rzJx0?o z?JvMw7!M_l$F%A%7a2oY{x!=)G}YQmyV(WvMGbZ4Jmyf_SszHU?ycHrUTta|!*Hhf_0qa<3788-M zy(nH)!#)bv+a-IIemWbj4{bk?#jm8pEbJ;=WEUS~iySDnM~nMezj#|L{GMwtn!~RM zN_6zUmNK{29`VGs7BXQ7G7X(&@ym4F%D0Gbr<{O*$dhqLbG{V{fDG<6`|7)9i3snxI(whU=+M|NUeI3bj4=Tnie#!pV&wA#ioKvz@ z7pq+C_#q3bo150!+EgCDpdSjd^}XzFgq6oA^8e&3AkOPjMbGE;!xy7xS-mJpwJ(cq zCQqVxT&ZBE-avsj*7f=R7r8sSK)Y52E3ic0HPQd7#zhXlhCxq)-1igZDf74h5qqrc zE_@Q;tKxb5TF<&PXoEdbq-CQ%`e!=zO zEN2C*-9gQ_&0>22WH5WoayB_kEFbtces2N4%#s*7Ye^9`N;**gBsn@_9r^y(C4suP zwfLHHNxRM=8=h5uE3RAj%ZnNOOO6XuP!8Bi_nT_yEhEtEiYrxxTB#PAl87O| z7!zlOX=xuubN#PVKr7@rDaCa1swU^zXgU4JtO_9?vMm3Ce&_&pCo;{9axL)A-%c&*UJ*%{glY;sy`f%**c7%sNT zx18o*+WrvY>rQrz_V|5g&^Px{d&Eq6mpZfljjxr@I_RvK&?4;3*3IBDPD#Yzml$$J zqOnZQ^b+*Lc;h%!qu+|Lwnk~&n5(`j_N81?E1fL;TN>(TWc9NE$&Xa#w(W@uRm6|)^)DR$kg-wU)aR~qc)zWoWE(*Y%Pv3 zgPvM^Ppo*Y@<Gg=lf|#SsG1t>g)vId2^+PEY~EHqg`>NCX`i z;1v#l-iz7s%inT@uNl{p&<}05-#kTS+&85J=(Xg2;Y;QG8?;^`VVfSpJqqE(gBXUTCsrCa?$~ zj1$T-Z<}T^R9)#m+IrWNW4V2&P$KFH8YIoX5^h4tFGwMl{vPlziC^{|{FZK9pzUQ> z~UnoXs zNvX^9jF|0eM1VJ`^m}88fcE}SCcgL`hv_A{FXI-<@jdCd7@ysb#|Q|Y zrF^KJ(1KBvVfV3P)^h8?3FS)Ww?Z^Z*Z6V+Wd@d?23!_;ice8}xm#_|;n!Fb#uavT z%lV=J-!793`nlW{&-*vlQ)h4Q8t*R8u+iD<;RKTgb*|_QxBLvTW5{{0DDcsvX4ML9 zlwH&|@jbFxhI=@ZMyVYCD#zQX#9)2505@*E%cNA6STNe7-jc zIidt*p_-&+V$SyV9RC`l%MPUXLwMB7ZNb!CJ<27zF2Kn0_~p1nX|^@0)JNsGT<~x3 z;|^TR?0==%R^>&h)|UaFTl1A zgPQ5bOvq4t5#-R&<#;gZo}nKK0^8DDQQg$Qsb@jfFxdzN%v*%xglb|c$m{T$+mltI zc$_U&58>5;PA;Smg$L8mP7qJuBlW{-^Am4F+S=+%p-^;DR8$id+lfqkSq`-LXt$v~ z%;uN}3AT;zvkLPGZ64|0FCEW(Prp_|$AsV1#+6&?l4wl%#`PfZ>p9Qr7UjcCd}(*= zMSvo`Tgn8bi+@WQM@~rlQgZz361&k>_b%90J$qd=MqFz=_2QbSGm&lVY5bbiO~0+E zJf?juTEYLdqJ|fL4G#9h<~`*8ZhH>DcA@`;DG0NNC4Mz)HhZ|^IRX8UBN3Q#>}L5X zJKkiDR&=umD9U}UNJJ~4CqyL6j%DJje>VDG9f8HjW8a{zc(6|!Z2yjVg?i1~2eVuc z{EK}OYCx~QeeW;;y1OxPd%wT{%{wh6Lg_el7$fX$3iw?q=I4-fggaH$0Kx*pL+Ts3 z{?~U{m+%skmb+_jI^UtRB)jR#SRMM4Zl!b|v6YRKMkMB`NGx3!y@R={!RipYO zRndz_D@i+0dQE+e%IpUx*{7MfNEL)S_5o!zD&n${9tU} zd3__hosM)=Mk-oLPto>h<$L-MSTgfH&<`;#zx-DkeHKb+zQxLjHfk;zhKO-G6JHX) zz_x7nWcw6d#KeJiT{AI*|2h-DKBkYf;D{^HUTIztfzyC38H|B9T!*T1{Hw>-iW?M&x<5otxS<8a-p~8zc>`9aBSKT( zIKmW&1~drM(MqY7?I{p&IPNUxAFofnV|-d~z%^7x2#;aA-@|>c|K<27`a2+-e4X zO~==u>@N%Wh+D3(Yqt_8qRt-huXNZ`owFZd60{`o-%j2wbl1R_RGF$2HwsHXI9 zsPdV^TD++PSt7!LXgU0PDl<~xS0zldE4=b0w3+L;a|V9Br(R~V+XembvKDN@WAse} zSykSDDAmFtEG_hjEWlP`B}Pg?j!$y>;U4)~9GJmMc>zw{p2CG+&S{o^6)dD9srkLS zg*12w6#(R;aa;hu;6KdF1^QonzXh#H#zlgBM;}~5BaVHdPkxfq59a_2YHUB z^?i0uJm;KeceS#X%=f^*VO|u=*SnW0x6wsWliKkE<#*zG@}3lwz=cds7yR?+DM+^U z+}*Ivo58d0=h=jL*<5zceK5FG#QsV2iDuvz!iuy> zP^vd)-E&lbSou2NWK`M@&d?9LW$20iR#xGF=fu`W*)H0o;i8r0@M{>U(ggKjF300k zZR=`u!f3NiIrd~`&G*li&kQ+YQg_kGo`CJ{Qx2D+BC?Saa{A#1u}|s9C^DN&1;NoB zeU1%sa&3H)+Bl%s)O;fwLjS^cn0{TrnBUhsF%qR20kwL`k( z!f2%0==h|v_+?s$T%J)pp$|Q>MK;R#y#yf<_pnqpzDSOX;~p3FVor5hxDDcFxU$h@M?>N>6r4v)m^ELRF(m%c|BAJf~SK2F9tr7afKr*)!4gUE7yJUv{FhSRi`EjD6N&G|B&hvJ6hTo&R_I64M>S3ZIe%RXW$L!38OK{>6_oWXK;o#*E_}+dv*uI>5gIE!vF!*O%yNwRQy{ z>Aj{RE`>z)6m>>C5p7qVe^o;%UBvZKGJ>yZ40pK?#7nSv*7(qE1%lE&K)g28yo#*9TEIOmS&txCA z_{}_iU8Jwj;uWs2vcy1m@>Ovqql>zJG6TODwxy6)IL-7$Y-_Zt1O5$D8_w_lf?ESQ zK{E)ChqUp9DBHiK>>?xr!p?C@FQWY!yNy*0lvIg=EHixR-M$N2I!QiTkB3Ll;dA~ z3(!i7u-PhLt65uHIEQc{^zY{Vhl8|@;NKX<9?b1jB_F<<%O12oiKj8;^PvCbh$3eq zLl#k#n-L6IBaFRLC#ROltNqY7PLf0i#T!0pK%lUdK^lqeXIPmFGjl5F1DfJkt8n08 zTn#SRQIPaZ6dwMSIsAeyDl>nE!oYu+QYQFo$fDS!L(S>>uuc7@f&P~%`(Km*5%Z3+ zNjyBF2|8OAzr6effqMq&0%4=2EEJQpl~5?+p3IzTs%9WvkWQ=_wU&oMW~totA$1$) zbbLwtLdeKxmN^0IuvNLHzAB$Ek=y@u$7s5Yck@4ofJ4hE{qSi<#`E|E+dLQ<^h4PQ ztFv}|+P(}kSQja7smk%Mo3tbBo2$i|ZsJir77PzwL%O^cS~K_;Z&!UQFa;wN6=|!9 z2F&%?Ub8UAzkt*Q(7M~A6LJ}wu(fCk7;D67&E#L`PL4vi!Tzs~K>v;dRd;JAMc{kI z{m}i=c$#t?1|%W-VG8JmDh&_HXPMdgAkV+H(N!%l>WV8PO((VmE%)=v2l!V5z%P7H zdi^8|mYXjn)0M*w+RD+mT!IAqqH2!U?9JoXR|Gnbo|vDVGPlY}Sz5SCeL+Pgu~<$& zoJ(--dBA1fq0OQu0V4Je9gJ74FPdPX%$!d1uUXqn;8&Cyn%(qrvvHXc++|{)v0ToS z;a@L}x+U#`oszpRvOlUf)n9Xb5-*I%d-@AL7AH->`eW@Q;sY8G;HMv8g=1V+9>0EC zt!Qbd(>WWppD1eeoIwXX?LW-n*UubV67y2}e_`*4UjSs{#Hgm ztUe7T2hYqS9YsqEUxvA~f1qFc9DY%K9D66n>0{Xrwv-RdQ>}{=t`GIR|By}b!SdCQ zD(`Aj1wpg8qbhAgq(x!|eu>K>FzM^58bde+!oEQ^!H*kh<`T`svfTgm<52HLRC>ea z8^X`E$JzS?-4C6t-2N{|HSH?}+mg2Vr>oQP^%`sE@&f%iF2@D_Mf-RpEd9OoV_Sj( z_*a|ZX?8xA$FD~+{L3mk&&E+sf`}cZB=;LGHRnJ4!YlNa4gM9U_vpH~A2PjiK|I&@ z(&zeLV|1JcIO4RN{+%!9?$MPOB`$NU%o+Sk+L_WBASTj{uoPsBUMjY;{*7t>VFcK% z8oM)%uwiwRng+5Q|LP;aR^(*2vzj_t+UPPYHfdGiB6u%z_{CsX=I(OThaUiHcRb<1 z6H;Kkt0L>)@H)0ZE0FCW1vQc>iwb#RrxSjTe_1>!f|@HQ|6Aysg^O5?KKE+Dbh6}3&g5OFP4N@-Xuwy=RK$G@I6uSVc1 zPbiQGfL~aCoDEU~xf5kG@auJP|30v`D}b&25%*NtB^W~LQob4ZwTnyr8BFR7?EsMJ z-;GND{5>2M<1?A}OtcM8xPWvXJwqK-*`$9T#pGeCifU)jKsV*M;6FrGHy0z%Cy^6C zScus?!RM3qg}istqh8u_~^Ul9~5R|BC~*rhs2**>IA+PQRu_;XHo*7X7AsQ?8AuTb{&4 zajSA8^gB@(f!;gG(|BPU=LzuzSswaf`eKTW3*Zh%G^H}RE?F=}KcV$Dp70Usq51p^ zezr}36cdQp`L^_Y*|VR){uB@MCRjDe)>uV?CABVXzSb27|4RQB&Bjp}qf6qh7uvtW z-`19#E|#SDZToo)5Dkd*Jt@ZlIUMX?Rz9U`qS0_qegg+_B=3*7C-eQUeneBffq&I! zqCv9>7aRChS*2Kc{^e4!joQYtDI#pai=Z@GNc$tT8Vbc6|5`=6<Ir5pisv%MgpkFeWVhrOWnH9~n|^^xPZ%&% zliUCDD*l{dlKXtB9HJ1uZK;4&-m=l$cGXCE?2M8 zPg_lFPq3g8U9p!5moM)>oTObU>WyKg)lAQq0C5HpGq6u8$G&Qkwuy6m(L^5-)OVJwq|byNC}*U5^s76`g84H=x8Hk-ZT7%{Mm3-vvU-E^Isc# zIO@ZB^lPtVWGu(Oz)Fz)v@q*V8#PS>{0lpb!Z6ZL*N2jSN!Th8iiJmo9XE#jj6kE+ zJkP(7)iZg1y}SS@lwFWM^N71gIbWDwt33sB|METDCH;r5(7p1a8lN;eR?X~x5jx;h zERdSdkjGIhoRWyunuw-p{|5YrEPbqvY!7u&H3#Na6MB&*HVu_J(!YiNmq33xR1|0H z>Br;=5@Z5lgx&m7&c0;RQG7cTw0s&M24ozll37_{@(G8Y`3TamC2;uU%-v)ocb@ zy&37yYE&)4DncNJL;AbXX--7c&7Z`M4DGw@8vV#fn>}_(@@VUkY10?1Mnk?%*qKYzWTaktxcps6H>GphX1yrDIYH>beA%=A6#dcywY zC&0gcZw`iQ#e)Y178wAkDe#LN|EeYIU*@nKo~IW%YOREGL+p_4v*kURdPCNS)BMYp z10>z=amfq&HuyKntwzp%78o_T|u3%dl*lbJ8;4%z>bw5x2If3@mJjFO|J zvU@%3f=}ss)P2oApo+Ec_&$Tx1Q@1i!lTB1IqXTH z5$4alXX)Qa(08~q(4@5?;bZNw4k&NEE0FmEj&yw4vwDreXzk?fu&mJ2%)^}GnLeBf z;Ym6ZdH$6`9Ue?!o4F4N?=P?2r1Y}mG3dPsUCrXxAbJXoM{$J3HEaz-J+CRP{4;tf zRXho#j>z}J4R~dFFzoU}H-;_K@O6|$7<7`3l7v#8$>G@lRqueCAL z_&4!%UooDUxcr_}!2^_l*Sg5xq#6Fm`l+XvIDNF!u8uhCSdM?)svQu2yZ-Ktp4+Hz z=QmSDKPa5r^hD3IsiKYShnepIesTEc`2xS9Av_NZ6)#p?>^F3Pf7PGoUk41#7cZHt zlKb^;A1?VsIWp@eUFLUwlILHtTq&_#`}JD-FH#PLksdlEc2XqtoPM~=lx+eHG7D{1 zAyD{P1>3^qMlfd}6Q}SW+Rw+(E{AOB*do4}f_c(OKNWZRwJB`MGv(MN|4J145?+)d z=pFyucKSU<;<2ywmEsF?{jYwksO3+f8hjdsV!f!f^aYOJin|gni{<=>@5;Td1niCk z#`!WT=uk#!d{xj`)S=A4FD&Cwaa_L(>p9R;EQ|l+mOtX#mB+7dN6^w*k%pufLcI}f zCmTb4_C&ODC6dE0dXW}#r0(j|DxK~5d4SgbMS9?A7*b- zn>Qjsp~)eKp4JbszfvwOMpH*UR&h-El)(}7%r>iRhJOR=Q1-vxr%xmi+oil`UB?XW z2

      ~32gxdH~}Uwrw}^i{$&V>>k82<%jCnQ^85|*5YWn`Lxt#nZQUt9S&04J`TbuP z=xIvHCzKBlNb)nOC~n|L_@^`R1^lAU3iS2jC>!yjYz%o!60y+j=>28!Ygl{N2HQ&a zzc>t^ab=i}CWE1pcs3_^9et*Z!9_+D+Cv(03+95MPlSv1vzhpk_=Wf~UEsgZR z6xAtxG42V=xqyFz4yudnP%Aq}&)bmc0A%7NdWr)J#xvi8{ulpK+wzoeW7RvMPsL)n zUF)oPQ`}>^LwWy3pSbF17+w7wN@Ao+(kGQ<^^gPOvhw=j6(}e79scTdTGr&U&_+3< zT=5)>FCKgJI2LU>kKz0%_~$D-v`J`#9g)QrETW?FCeiev0ErFERi?IX9&Z>SncI^KWSMlbNHLDH8 zm%SmbT!lXG=fyb3EHkH)e_eG1zx0)a@*YS{gW>L0po2~Ia!o3S zF!p5@E|$_MFft_k=^l{WzYI%8#nJ>@u;M4eGfTU&uAfe~d0LD6qtpFmQBWgrkEJCZ znny>(x(=fX81QENXtReCQ%vH;G4_*5)s$3g9g73GobFa-8lol_M*;2RoRENIu2MbwiGWvsRf6M6M6lx zR!C2BtUvlO4N|Q@ysHEO$D_rfIs9q@wf9-x^5_ul8S;su+0jA~b71pzH0z&_I7(4x z*7Ry?Ai*7s)ucdSZe!9>4|LEnb1Ki@c$pdmY=^e_dtBf#TsR1^LHPXn^EbLRu&oZz zu1S6~jxysYtR>hH)?C8#{V!=d^xLjD+Ig66TO{(?0n3NoT^-y}-mm%>>5;5r` z+CsYp@GGw$qI!48CoG|;sFe66{f7(WCwcz{G-2~CZ*F&St+*_+7W*E4vG zfw<4o@1_%cAYNiBA@u|t9goiNZ`f>-Q0|gqbNEtNjjgnzvZ@0koPl3L+PTpcnjez# zT21`!YB;?I_}&@*!*5~vVYPI#yC9UA9P?FO+NN4OWFYe!GTydK62m zX!HTO@oEp(Mw@c@CH;rHxfb@w3-}KocEYE}*M_yPXZ3lUAJr@UhrX>{p5BrE1U)Ls zOzblb$Vi!iU+K~jTYzN^8FBZl#O^B5fQu}C^}r8sUDQQfXO(*EwHUT|bOXqsi-wE4 z^ZMZj{1Bc+>tOI7@<-DCc?QhQOpf!Tx(lHnhO~#8qIvwn zP8<$cug3dX$Thi-W0PGFS@88deqo0iAK+L&cno|`Nssb#?7T}KIN6`64}o9l-Cm1& zfHUc1592FkwTu>VTz6*iYd1^sw5)2HNk_nuP9WR(T~s_nKU}D8H>+goMi0pL2<;j2 z67<8inf)*9_KKNSk>BZJ?XB2WsW~YShvev`tbZQ+zp9}p#EZggj<$vHJ*^MSp(mvt z-iq6}oOkIze7VDK)ofI5)m{~gEmvq|DV-Ddn*gAkez;fWOi^f7jYxr1xS{Qo!jo*5 zRO#9Dlifyi_+^l^! z%fBjUSJ4)l*8zkTAdi*t{s`-CO1ob3{`v9|2lg+EB2$f##YuR}8H7Y(TADZ8{~DaV zm*MzUp(pfyO4^>d?`JDN6hn3*F=ubS{{{R41eC;AM(8u`h;a9ojhUCtU}(qAEPe@N zLLfsX(0@1R9Iq0tQM3h45q$2S(+^*K1qGt#!S=5TI z-3*D7yuzFC_`(p=lGs#bX67P;UmL{jhO?03!Y4E;B)kTb;7*^`H$?FU?XnUS|5GR? z()+SD$Vb!ugna)C=d)d;JLpc?v%4tIKg?W6MwZ8~>teX=esfz0)ATwmkGMX80Tunq zi0izb!>@l6oua-nv@Leff65w#I&$Wo@V_M+-k ztUZrkd#THwuX?*#igbLBx1aftMQc;e9Dd>a4LWWg^1FUo_CeF@R&XN%-)EnUVt>=S zz@0RnqW@)}l$E2vX2T4f#2GKz-S+B!CC9(E(MgVM6IT|{2cChDD_%9B!9kjWdBDi> zuLeAGq{10*($uXZW~BH#&`COD@c&RAzgFQ43M?p`sHwCIb5iq{9*gbd5nI=?_+>ig zHluT7I?t5eRq>o=&SLaIsDpAJH#GSJI4-Do2ZoL$s-M0q5xknYsFH-pHTS(YhPuWT8YO& zZM^!to?s=SJr34pK|l1%d!&CJRoqV3*vdh1%C2j3r}Q4}6g5VDDg7TZ^EFQaWU|SD}GD0!~z_7q|aw>#RFWK;on$KaA&o80b5cK z_@NG2j5>Ke*FWdq=nQ-8e&ZpZ@q$^)K|QMZW6hq3-d&i(uL22wHqu2wn#FF{IvfL#E$6PQ$`W>*FXpbd^Z1oAWLM}b7PD#aODK)DIxP|%y`*)`^dF`n zTkfyi$HA@2ShXsF41xCf{uc-L9OEy<;BVPk+Sk-ZKs5gh{{}ni@N?`_xFE3Ax^-2& z>@M@T?TPr}`Tkc2q1*L0?wt~j3Fk){&h>QF3^u!e(w^^s5!e=X!|5hVMgmkEUFktL z0H4gz4{_Q?9QY+|8{2K{;Z5zljm|o(w&HPM6PN2p@~^g0l(K&4qR^=ABAlD5Mx*Ai zwj_^VbHom;=h%N|b4B~`-GD9Uee@)+vWr@ydHfmzY?+}ekI!w}0{yUf3P)4F65p3{ zY5D%wUi&I~P>Y^d{$Rd{nilwFt5;VXv9S(k^uJye_dP59Y?auy>|H$t!U7-2yXc7J z@k`ypcdI~8Y@=RWL;C1Wga0C28PdbfoPLN7U3fte;U3ytP~(KPqlb2Q(JbSPGVx`W zPhiN_67ONBo7%arLYIwQ%8 zHhNrY1#$Fcx>U=CFJ&6PsQBx$?sdSnF-H~^+?A;EqM$-T!}BO%xi;kfFR(4zA^R!F z^90TFOvZ?aE?!|83*`Q<*XdrnI0^s!IZoHk80yl z_u)K#Jxk+eJr&1RE<%$%@X&TlF7iAUZGQi90qf{m>q)f?-sYjLg2lBzvTN0yy!K5z zPmX_av44e?(hAwPMJK6YCuUu=kNAdh&vgF__{F;8=6vl3>>;sP+|{RTJpE4LCJ-@w z;|%{HN4<5_~#FZ1=4&16N^|dsc(!SCixM`cQ$Mo7*kRzocWD?fu z>1q5bz>%RWAhtcdr@#72O78Jd#zDjmS?-aU`@b%lvT9RFZT4#;-FI(tRl{RMc zI>Q~SLVl(?S~UZ|(zHt+b@eTA*$TGY(p~m12u5^xMsoP&xFr5y)wL9lmVIBn&i;Lk^A9gV8 z|BAqNIA#FjB0Hcl%D!GJHZte%tCy1IGQWFsS*42eR}Gg;AR`<}hVuUTrJn65_4SG9 zQnsD$-xrcV7B%5Rv-0@$Rje`Z(c2rGC9Esr8~38Y=Y*rWQdw{};9-^G!z8Y3D;ty7 zT57yz*QH#O$`VwbP`?uoQggb7Y*U-5Gvs+l+lS@XX?s$dS*o$lwJ^3J&vQfOA5q}r zI0DxKB<=O1=#objc{983aZjcuk>_t9D#=SMhBSlll<|c*l^B=9uMKqE5uk0P2(lR- zOem6wp-`O6;}_H?30roRlxrFt?os_3OB0rv_+{c0k+rU&GQW+!UJN=w!b~^99?I*7 z-~fgv65Aa$?ZFOTC!X2kj2&I*m*@6m@>r|@`@aa49%~|zAm3)q0mdj+m_|kUO#X$l zv$$8>W{|k;g9N)ULtSW*Qf86(qzKV=J40)R?cC`XQ4%#T8e4#*`V{g>yVA=|pRNw`&P_oGIrbSrDWhnBhTBc>uT~`74s8i= z2XT=`B6;ppM2;Q(F9C*_LWk}h>WEcJ+3+uEi(UCH#Lv9{P~z7Qi{QPCLY9}`vr2x? zSjd~#58;nui{r&l0XhQvc3nkc9@)hB1 zd<_<-{fFd|uoa_#>5Ek%V~ao~1oo_c2>;>b;g{qI`RIR9@VmIc3Hcm-2e6yMbbToK z*X8ay*=CacuVs<1o_+aw>$Q%$7FSOmzfv^#hDXFi6B&bKEsbqsl}w5_&P`Z#>D-dm z4^70E!Bh;;`;gO!c4)h~6-LsV!M|Q8>nGj+BAkyckRi{Q zeyWlAN9wD4XYBvN`5Wr)7vP2(H@2rxA6m$1CA6mvT2qdHeZ`cvjsMl&^~c6lUFq}Q zys=;GN&LpKVS*C+{G-9~I`-HxA*Ck19@}AB(q(7@1UAyXut-fMw6bBf3uwDsk0+^v zjcQo5vM54h8dff1RX1d5y6uu@V|%TTwuX&Xp^Y}PC}=~K6w?J72*LZE_iM&+!uF5- z4?iXLH`izGyYJq6?sx9F=iUb^7f0ktI1-O&tMFWPXVn(Sq`0qQ{mXnA{dusr{68_^ zRi*J7pmmg`Z_hn$<^6}{<{t){O`PTRCIUGy|9UjEN_|IuCAUf+#0yLK!uwO?MFV@* z4zE6sbs`+wJ6>{5dy85pR_+f?USl~z;ZM|GrJK#jr=9Ke0k(aux-fXXhPRqzBeR|4 z`hUivBZT;Q8k;X)D-Y{cbNU=6S^H|MCctRH{0lM!8xm*K>xW?kmheQZPpguU3HWQ4 z1{E`|$0rf6Ct)ZKLr?oufTH~TD~tI>OLgSJActwS(5mrLKCb}!{$go8Ib{X`V0!Xu z4D&BmG|az-5xo6zM;jA#&h0-6)>vPM^;O1eNid108s@P<;1X5maBzw(oIcj4S!s-i zRoMUawm2f2=94E?oF8RZKMZ$n&gZW>fhi2mJXg=hj>rZ(c_`5!e`?oHfrWDPpM6pZ{{{KjnftP!I1Jj5}PHA)P6#4}ABlPo`e1M!D`KEzJcl5tg&$cOFBVEyYj z=9R4yqcLJZaZD!+4~%1Gd@fS8+Uq|YKaVIBS%&32-UyZ``vifAm}weKC-d?1FVe56 z#m$G81##S^DX=1DqfLYOjSZBJS0B`~lV|P6_3CeyzJh@f5x)eZJ>ah{^GSjUQLau= zpJ~d{_~YB_up&lyN6*c!e&rPQ64%^^^{l57Jq4llTSv>r`(I)Qj$JmE=dURqMNOD1AYd$8 zL=GFr(SPHFo$MZe%_9B~A-e=kVKWuBUr+iZv}x3?3*t8<9ikywV`7B`Mv$zrKxCg3 zxhX{^Iv=hi&S#T=c;%VU020Yt%FnrNdT0@UaXp)%Iy4->aWvd9)2aC&ej}$|uwRWg z4V69*a1`^e{$9_r!f4};&kld#2&QL3|0r<~;@+|n_zxY6v0(k{Td4z9s61o_*-- zUuJ7C8_L2gWE&~O_8~lqi`KuKQvr?AGionkxR?s@`WG*R`TR8!K7nQB%_745C@`wmxPEfEzVkqz*?o|%5 z^`0mj9z0Wx?k8>^4&}^80KPXI3gS1$<#ES0#(4OtzA21Q(kj%?Ap)ZX`4>aS`U{Fspl<3V(@`G|21KJ78c@&B zZ*z@`exUk2i^uSl<7&<@xXd^suxso-93Aiv>N|+LXoNGQ=p1~W)i#331OBQ-}IsWin9@)l2=in>YYOfvdJcqX*zHFmlIVHvS$_D2juAWDT z3g%xN@NnAoN1b(T2|Ik!JZ^5HAv@GIih~f3Vf`y^Um9-Lz+dyOeo5m!I$&SZ^NnZK zTjVj>bh7RziBbCq*6l!K-m?#c&r-U>9ImguE)qAWVY0+1k|=zGQ4-JZUw)~6unH&M zjDwE9kAVQkI2@!SVwF{XNDcNc|AvkyH-L+ix_*;HLW-Z|%%Ij8)X z-p{m67Tb9C^8#+(w?cnKpW3&G@P)kp@Q2{9LvpAH?;XIj)P`YiIyV2x@%}l@^!TB3o z6Pb|>roN`=dfLxRNU@T8^;hJ^+WLpnvu-{~T^DZ{<95TBLlMwT+vM)}>ZCbOf7=a5 z;+rZLhxdPpOGdjW`w-1^RC&z)^Ap8CS3aZ1x+3ov&lOoLGZsFF*$qa~!=VQGdNw|b zgN}bBv4GANe&9bGQqmYMM&jxd;@|3SJOQI(sLF}xNafFudX9Mhg=yFI^0~RHcUSC! zJ90?E8r-Gk{fB!0Q|3E$Z6z-m{nmPPzmntHQype@U`^mZto)PeW9lIp86B+Ce=S<% z%CXS9G(($UZ0G%lZ}aPxFtXhSA_HhtLfPuG^lEui;r=g-qH9IuI%iyEe|QM?*jPN3 zEO>t<{2S_eF*Z_Cs|?a#Cd{Won32hrdk}<>#gKsu@f+$B3brKAnYEz#@@n>qAsQK{0nDUMAa_wQv>h+GW`81&ia>ZG$XT!x8+dw$WTp9_JU|J zSIL^+g&h4FS@)s-h}fL^(bJ*-#>)lZUc<4y^26tU*0X9Zcz3v^~zVS00p4$Q!J&lQ{qIhv>#|k7z8D>MMvp#Q9NnOHac{>HWm}#L;bDsD4Y` zEH(}o#2>QNB+6iG;Z=!nOkt2QFRDtC?db2^7uvx{i}!9sY~YQyvJN(B5BqZepHx}JEN zLmTIGtB4Pl!FulAbbkGdUh9kJ8g`X#O@DWweZFB!|Mm3Yz%BO|`VYtOT#d3R8#?;6MB)`MPNNedKWG&*@lKyWKES{B6280FPo8@$(k9yQJ9?hmHxO{JU%b zE2X2@{dzOv=Y9Ti*1srjM}|Xf(O(W=gTR}iHoBy3Jrl|0*T41>tU*kI)t8ikT%*)S z*q=a6^DFBL{D%a$q0qA}5gITWd9wy)+4R7qK9)9p{nAmUETM}I(I_>rBT>MBX|OkB zeg6jU|2n4N4agG37*N_ogT(TyGZD+?{f8%MH{PF8HXr&FOjl+)8GcaNE$=ofXFZ_!pwhqB zw1AQ0=W{vm%be7BewZ+g0S{pRkm;sKU*_xKL|-bqv#zoPzyRo06(NoBiiR-x&lOR2 z(4BT=JiOfnJpgx;u%mHJcxBEAG@L;iDIg&i=!U@aC?q<(XP>rIwnj~fP6~iJVgR0j zN1?;J*93(vx(BrpmMa_}P(Sx8NvD4NGK-Lfoi|w7lf^Cw51xeG#)$ zHzskwJp%&390@6Y9ZGWNYy>uSCT{>ni-uVofJx4UHjT^e=4!ob(gWISO3TD{bBC_^ zGSi8$)wj#MORr2TE{OJrEg3V5^h)VH*K{Iy?mXZ#R!|dunWt3E>Wi7%z$L_I=>nv+ zR(pk6l#Kc^(^hzwau?kxD+@r366ifq;oWPhNa>I%t0ER&3Ml_vBn6Im&{Tyof;%k^ zl9peqGLo7vGrcWzhdg237+dLs@J#5AzT=$Y-)nkXxVLY&b!{v>vx33hu{ATry?xsO z&{y3$?A~^5uRLYl5L-7B>g_va{SAbvx9?f&Td{R^)R*CW_TXDH0jOw}x|2`T)h|*n zSF5hH(vxvCPAYCbR8+Y~?y|0lh4)7p+yxNc)0YIOl%7bpPB}S((U&rJ>Xm9( z>`TQfBb7+8Q>Lbe$-9>pQd0I#{3+a70OU@yQV$ES%oqvbS#{JGjm?U7ht7)D2Zbhl z=BqoQ!oD<3KKmFTYt}L7b5i_!;o05MCM*?;++nBKAAh_uPm7SRUkuRQ)=AVDBA}sP z7`iBKmQ!U2ClF3!322k>^=po5Nq6+i7YRq3ySArRS7_5pvv5JU zStL0n$fpJ;?%f-|YpC)E9*FuNXj5bdFNshIv;iPhlZI(M?&YL-H`BZBi^k-(s^|cN z@HXX+fi9~umO+a2L{N*V=+25el}f=tt5m{psRM9|FQZo_^i;aS#Mv(lDjg8n$tk`F zl_;tdS))#KLCOWhDS=ERw1ZCAH^w8|9Z(gIAVtX_Wo76_p(@BZ}k-~Z&y`HvYqb<>$AKK|;%$(hwZ zK6CDoKt=%_KWp5etzcgEK?gv^3fmXb3VAso=u^zpfsA_jxREDl>E}aNdmvJeWCk}us3)W+2o=uaL5GMc5tXdAfN15pM^`X)uCD`O}^wFn#E zX@y)2T4+VuxfO|S@Ulb40War)H}(pM`gFV)K$mSV9~6+;JOo-_0(=?V%j47Z5+L2N zS15@*9lQ2O-a?V?y;92O<>Qs7TWBezg1RZX2neK9sP4UzR74%pfcd8^1#UK!1jprh zS^5O+0#8PC`*a-eavlheQw3A39!8~E8Emw`7C&O#mo}m$)vhne)oBq z>DVD?29sVLF6HGV`X%t}dt}TiiYfb-0O^*8x-IQt<$AhRMsrJm-#5@+i+CAyoc4Ly z%Li?$xx8$omjGV|eS=M`F4$UyKyV8A&lRGST@epQl+GnUxMdbll|o()2%3Q_!hL=b zF9!t8z`vIw3e}1g&CxFxc=x)hezC@RGN{8X$|~xVMs5l4>M%vneD*$TG_eHOt}P)5 z*1v#%p#q_|mxD?FUY(jX5sPn&MEjQj>D8ekXwh&26_)uFCnKRGnU0x-9bR4pg69%l zsc41PtwgT?{Ptp7>vC5A7IT(YZJgJV%I0c67njfkOHHB&>aKWP5}TvmrPG$aM!0F! zY8sKN0FciJ{C6~j6x9{dNmr_2Tf@9Oi(og6`|<#lBgXTZwqu$8pgZY-u?*=`%?xJiL3t4QQl;?{qHsV$HHNX>3MRE0 zo|tNS&D?K33Z6Y|KptEm4{Gx zo?QqX4_$|+ieg;Tv_3LBg8D(RWG#j)jAjOAM8uPeVQ#nxQvAy^V4D5UCSluj1wL)U ze+{4bGECHx`+=o zbPyWR1#UWin$ACfI;!=npA!qN_JxH7n?HZa2ki@|-IPEokZC{d2{%3Ffh)-5^ErCe ze0-T(79RUQW!in=E8gofo0Ho=Te#=|{@`4`F7rXsu2QG>w~gv`50yCX8%M^_bVVb< zDjY#Q3!e1FoD{$PAePb4$Ak(MW`B+-G6wcx_n^~z-8v zunx#_W7Gm*n&{S?Q=u+j2VJJI&U)jz%z6MQbqSQ((e5Ch7$$inJ5Bgbu2D27b!?Yb zuOtC{{bC&?XiBGQ$V@F)OQ>QvQ}LAy*N>l%VHR(J3PW=Rz!a4FY12_^Xm_B??oipG z#%#_I%4pDcD**EO5LDQ}5U1)!IjTX2$B$Iaw4EArA00mp=rUe1gZ4rVLYLv0&a}oI z*MTpC#;qluFz7iXY5dQCE<3fI*JTo}e4saoo3WtQ^XfkJO^N;+6 zu}Hd~9ASpibQ21Gnr>1p)wyND&&5K4rU3lR=5Kxp`Xv|ySE0;lo0HoY{&002JnjA| z_|}#3dGDx~Pm>F-B;ySipPP?26tpiKy{tSzhF1k~G8OJ_aY}scszS?uSgwKP8d$D@ zn~kA=`o`i=i0&ezA=J=VZ#C67G|_r0S=`XvxTLvZ34MiVSJx$c zp8Wn_-W?*L5Ye2F5|#hfLyD!4Xsr#ABmbK&e_s+JTrd2$5+Y6=ZJKJM<^NEK-b9E*iTWa zJ@c- z)o^*x{oIO1+cm&!EhO(r6pgdTlsf98Hci<}b&*7ft)|DS{M{ucTc>27ICd&_L=Xt9r8;cKPeE4v4H=T%v9k*ZYvCh-dv9eV8Y4(EB zAhdyMQ?ukf=^{7vIb}!no$B3IqNMKKz$CjseOlG_(reWFuz>K%6s@Lh6l~JXwmxQe z`^mMGjh4hU%hp4_CM+?0EXAulBI^BtwQN;vqf@(H-@x8hHi;@*nes+*&xz=z?3a3r z<~G#?*|dHaQL+;`h(u8d0um!i+xP3+%u_MpzlOlg{MOuD~`(F z8Y((X=NQJ7Qit>-k2MJQ@XFnEo`;27RM+I@D>64p&saex5b{>iF0)Fw|A}2g2dvtd z-r?Prd(RG^uN|;!Gl31hUfR;F+KZam59vUncDKHk!IE);bb`X%y+a+RwBFK5kE$&9TS8l}J!RK% zJ<0sEnSwm9-8-Uf*6KR-9cq+J`JBokzt(5f@tQIAE!(uPL4_teert##`B)U3H%R4o_sP7eb<@$rKvdE>(pDN88$(^RNbTB!(6$!2o$wZ+#94tB}`qFJQ}ohVx#aP zfiB&`J=yncDGlri3OXfCu4~vPUcdboUOY;hLW?>m$^w_4qkCyn-*RiqT9vVrV)>A} zQ+=DgAey574Qfr!zVvH_bq+qE%!cWmrxxKsLx*#4JR$XH&c1lj8T!v;t5r5(g!w-t zTX&UxNe%N$$z{?dtMgqaV-~aO13t=jZ1Cv z*W#wUM-)Ys??)FpB{mDnuS7}8dpdVdf?1dCEBmY@sGneAu_dLRo+}MMm{dv0&bxi>7+s|QK^~`kk}lBlZcj$N;JqXre zMVIW4Q*@Coh(^cbz++!BmszF9)cg2bqH(<^t>*FTV;UB|j3Jnhp6jxXNmJj_Ai!gL_yi zHy3=~Y5s}WJLcKl7v<-vS-?50r#Gmf-Sd!Y&fwP}`ivxg8E5oMiDew)n!-q1qn-&g zqH>db?B-B_QEH~*YdMu|kM8gJFt zj=##|*KM>f8WeqkC1@Y+aS3MA5Cy-eGd4V9U-RjJsNHEqnAZXXWb}V#^Ti|LN70f9 z%j1`u{s@yXEJKKWR*;ujYQp*eUcxPmZ8`hm*B&Cwj_|yuPUae8>RIs_-Q;+V6!7a~ z>D~p#u2?6m2Kj#c^8LUg74U02ZPIEJw`Q2hHkpgL9#z-Uui*Vk9rgCydv@rD^oXe4 zZFDj(Jv^{5Q?h}{QM?n?BP@?!uds)lpfEPO2tdC}y3;5;?JlQ8i`|~HuZek2T5k`A zyFKG-K!3|wy0i30<%{^a4gl-;Ec~Jg9wrZ5T>I3Do5(Ywexj|WX44~PUpYSMmZO`MErYUSYYzWU~$ z;TNnD5U`&v{G#ED?uXc}n~x!Y!NkqNuV<-_U|*I#yxnI9dYMm4h@FARDpy(VJxlyT zpSe-VdMHJU0Ay^tctBs!R?-ohjbBvf+zNa*_e28@#&r#UfUf729jrJv@Aka+__WCO zXBVH=nz@!#chNEWr}d@ZQ)lo?`6-<@!);r=>bO2d&!F=LP}ppa!UkvI*Hl$l@rddu zO=%5Omc=h>pwgb|-plw^R6`h-Fl^RLhfevDuH6#9bf3`e+4z;BAQ_>yRkV-9sjHT= zSK8u{otZ?))tj>~TbWDysg@bvV3nZ*ROKM>c#Aes)fgI=@oPxG%KDR7zH807m48K- z(v4QxTJ;>g5^J=B5%tL#{Q5CX^KjaeQYYwq6bmv5AUg+Za`(*O7XiO6IIWgvYUQ)^ zs%Xr(r`527#=Y+Q;rX*Zb7<}WLWo*KW6b26zF0N#g)hdx<@^W#+|BxZtS0xKiITF< zWc(u=peJB@CDEJL9_gX$^@vl9kXQOBtKztvQ(+urjGl6=NJ%diP73&z?mvIjpmw!vh_)vsRPpUj~`>)OLB!d45eLC^&WLb9s zzp@@OI%&AF?rdKQe!h>EnfeGjsQqNc4NWeG*)#ZM z!2{IszfQGv(hqz-;Yzi&BPQ{UAj+M=FHO&_)ex@4X`#@~VnI78AYA&4eUY>;;Ib$6 zKReA|0%PG1qq;-)@&1%bY7W1yoYJy>ezJN@`a`OB;21Bkr7#Dn(=rG-<{{>v0GsfQ3F4A(xGp0`JXGQA>R^1H$`pXe^LLg#Hsqcv66f#Sb z)iRQ4NW1r__vGd)G8gzoiyfnjjahF~)lpZ}dkq#+U_|e7&G0YUOPdnt^M=@)v{A&Z z64~eNPSv>nFRrefeSv@BudFd+n5F4qfzCIvGV!pjJAqW5e-%AT$Cbuyp3KTq^kN2h zI;7r0ZxZm!HvT1N%iv$m6dm@?=}|LmO23K9j;NpT(`_w4v^;(R8{QCMNn!kOr%f^p zdz{{e*W6ArBOY(a)y5?emdx@YcrB;Ar{*` zk;*Z)pSD=O6@et%n442wbL-vOz1*04vt}MNtJ?L~Sj&oko$HV2-dLW0!7Wo*F&^yo z?M(BUX1KUP8l7k$H&cI_v#)_`FVLT4H25Y1klEo*<0|#Vy-T?}X)I*Nw#f!w_-1NA ze^%!4YZpyB;STh0qa~eZeX z$aQ=MzpkVQl&?8gkGU#nqqRurJQlKg$ja!8S!eD!L;8IB53xMs*#Q3aE2lQ&o>J%2 z@5P>sdqepLOqw$3*Y<1YHDG~RJ}#XnmY)J00BT14GX?xQN3SLu$K4ZZm|l_iwE>M+ zw=K(fE~t6@O45H&)krC46|s#}6+?egyr*d}ZG6M^3_NBnJ>0l=oWESIuIZBD{x`Zx`tiD`(yayf)poH?`?PzUh~1XwU;Wbm#1MT2tj)TQT|HPF zpy#Z+9XuzLn|EIH5uIW!raPuq(XozZ=emk`Ks(>l;<%fk`(^u+Q4Y}s-P7&i#+Ykb zwC?hZ#m`%p^j2q$R1K)syO5 z+Q$#IiaC?zQ_)Lw)5)!wJbo3uLZ_6h&gQ2#MMGs-lNz88Bfb$hqP%{%1J)fp0vD%g zF{;+|E>>yovj)=v&b+zz?9gF)TGU2CyZ#pV^|i%UP2K!v_Y(vDcQA_741SGTgABTj zl!9Ygowc^5IIZmyen(e}^ZMbBr7IA%w%Unxcv#d;7-z(UT#ysSvw8fYF)d8D_1tRf zr>TKF-Bd*zlqT>mb~}Z#zQsIE({@8w&{X|!?_sBOAntI7ynOWzqo5zsK@pA8_Lzo+ z^lgr*{1LpducOpdtr`9mq=QN|4~*TsL~MzEotJET@po)9)pUUD&*+C*5#qzDcCZpa zfZ6$Zh{HY9%{qC>z>IxK{xvLih9U{Wr}dB2nWbXoyLNi$+1dKxl^@e*JiMWPJN(A< zyW!5SkCmtBG=m_}p+26A4=antfnSYOCh-eeH^($Bv@lX2nk$cA4qSmRkPy114G-2) z!eUkCFx^0jKgTbMu5_93btydvY=S?0nnO`cBBssSMdiF6ycWQg=;k++Xjq(X%)TAu*3%KNgU5Mx<;w_q-MA z*(6j)`w*)aanxn~kcvK~OQJOsoKhhhiamDlnA$*>Qq{J51GdS%D+ zR3-FpvTLmU=3r!1M}dEB$33-(7+Hn6%&ZnAlf~E2zTllsA{xu%mjlWf%pfKq+9#00 zAS}O>5~WpofqxBh#8K}e-mvJry*ODa44*j#BSIWL3%@X54)7~O=hub1%TmT^x=F*8 z?FIb$BVCN$=&V*$FTH9viq(^93!O#W5*&|<_N)zdYkx2HWqg@P&x2K~f1LqM7Htrw zw2;7?pTRH0htHWc8BAr+ijz-N5+Fe4fb{)sc5W^ZAJTIabpUNTJxsO;q*l2pMLRhd zSRTLD(|M)Y3EId7oS?lT7*d1gdEi%2s6x%n`?VJ;z*8KsE$C4Sgef$%3kn3BS^Vpd zG-};MZh6lLUZ?w{x)fw>nE+B>#xDoCiA1MQ=D#wKHPF}w@$)$}jI%TNl`hH%VFn0& zc5E3w>Rvd{eYD;&7PCBlJ&v%#$8-^MtOWOwo{R-K#-0KHx{O~P^G;AYePc!N7v-O{ zjW~_%!GDLL{gIYUdS>yj{WRr-El)yymoAuxqn-f(G)Brj_s{UJ4)dpATYIlT*jy#j z)YR^-P=j=y!ed}AdHz+8u*bI;{i(7NZp8CRZ%}*QLUb`~g`y+`0#6YFyI&1)|?CcH&RG^AMu8q!8K>&GyJP)f{w)+oYkq7LCkx| zaog2?|9P_|x_ZCzLC(I?;9py0v?FESO*H7}mek&n@k!jrUe95QphvAuPE`i@HJ{=F zo$p+D1s$;KGnE^PC$rr_{_7Q2JYh-va!VrSVA0mCfW^r;>h)aQBJ*Fb9BBZ483A^j z8j@}svc@^8$KqGd&EVI&;4+6yX!u8HlESQhq#AKAg{}Gm|1!t6x z`1v6CS2*J7&FhESSLw%2-3G{p*PELK=IeVh5w@<5BY$eo;MW4SxulLK#^AcQP&LfhXpw5-g=o`cC6=r%OY`GK04SHH2otRdu z^a(v&bKNZc@Nf*YtD}DV%HPKzOm%p6sL&6w4viDD^~0B;Y$KcexcJ3TkMJggWQ+brkf&`PNHfFa!DMZ8Vzfx((Iy>C*%l+1f(>t6MHVDwV7R zu0WK^9Q3)U^!!F1zh0+TW6N#Ow`O{^yV35Ss`?@IZ)?qHr<7Uv^#Iip)Qn07`|8oZ z5xa(;oLf8MnuT8}{v&x$h^>VU0^_>aA*t$1)XU@73o+Y7%pYQ0+Lx%TU~c{}?8{{q z@N27hUu5&$>#0x58uQp;ERyhqdw2#b1)ZkvM=**M!nr?UTnMPLx~Su6TA9y(U7&wg z8YiJcPNA4#Ujo`r3te!)+J@E3{7Yze#)e|Pfm>7TxAX%9_Qn8f!F<(aO2*n|@TD`Ht$t=<2T}ekGU>p5G$lw=?)9`PV+v$FEF!N4p0pfUi-70?s(( zD&)WB?xyFWzC@+XZ2ehY7D(ciEAMjU9bJ-+Dz!$>tmRx|ud)^G5o5zkJ@J|FUCx7%K6MNS}4 z1S8Ai7gCUpmD1-UmT)Y}AQfJQ`VAiiG6nv%8u$29y+LM+hN!-W<}p<~L{^h-&DIY$ zZNBU7#3|VN76_L52kbt2L{z<}cY5>q<)#;Ci9p%L7JkNT>UWze(U=4vt5CnOgGm%F zbE?PqpG*MRnd(FIo{0$Lojm`-`#E7@Jy(_oLFgKst%zG_S~O(bkH;_LSLDhav?&7H ziNX$`Z*U`u!1ZYjiG#am@Jr^uHrc4(fP6xaB&uv<11qQJ#bcSPI@u&ya*;)}QHrPQ zK&TOY2^&IU6LVYpxHYlLD&SXwMvowau)Dg3-aNWbcrtxg(#2$BtSnl zPg)lULOq-wO_^buGaJ7sZG)8zsN)*^YTKIa>OwkZ%HY3x7XR9u@pb7tyyLNM#n)j} zu!Ul?0DdK5JErV2>NnuJeP7Z)WoILh&f1M+%+Ir`<1GBrkoJOX*uhTnO(Z2a;9$2F zTyH!yn}4MzLMTg6-@$9xE7m~YU}@R;2mA8%8zT&9uZj9(`HNy&LHIPLoUQy5EuUEP zXaT>@(uGW;=I%f=c!ZYnpjqwLUZ(2^(ejJAcq3cCVOxPMg0Yy?ICR?=qJ&a+1Ay$6 zT$~{DUn$cPz%TM|p#>bBuaJmFhPm*l(v=-M^us+-A1LSXAZ-@acj#l@C17M(?0zv9 zOUU|-Y1#|?D)(DQRxRy7oKT!RHW-d>O;%4_=1sJVrgR`tvicqAQn)91!+UK|6#eM) z@!Z;w^&4OTmb=HO;-gk0b35@6-cN&fYXQHsCOSmbScj|;T*}(3Td_s-AXh`kh#{pa zKY^kM(#k#ue!kvHa@*21ml}F~uUp zv(M45qW?-Pz5uyzzVD=191X5jub`L2o)0`5j8#AkeDrIF=zR3BQ=e2n61n<~yVBC( zk9a<(#)_lz9zO3)dR5#c<;RQG%c9YSka&h)OxBJEFQ{g2zJ{(Gz_O`wN~7#8+GtjF z1UlGTV+U>oHg$O~b0VSvK++=F)&Hb_r9q+pBW~WW{ev9oW&Db2X^J~Fr%KG&sJ@L` zZMx20fHLs)Gl&l>bMrnlZ;1L%HIKQss~?LuGYwY1h`$ee4^O%$XYns~p03Dv`T<+- zw}nr7QgeP6o#GhREd6jw`7c^Ff~@psv{i3SyHPWccvZBH;W?M_t6S@&=T7-11O4m| z+K>pEf0JY{!9Ukc22$_AeQ^kgM!ga&-$R-&>_#Ztyq5=Ke_^>wf>NA`zx$Xo1dr?SyI*wzJ5 z#pSeBk}UXnXDjr>IoUPu6rqG~apUCH7Z8WPM2(rUZ>nMO3N@1Z16W-49s&L}9A!t0 zxND*Ll!Lf;lKq^+OOXCi0l!ANQ`|~lO(;=|xA{<~SL~MfMFGn-!@uV4Qcwrt82zZ{ zdWzNwSBmwszO2E{;1{2VT9FeCV3iwq^2UA(^SLT0JSf|{d zAl~Ssou~9nA^){TqRm&R|C-w0l)J3uWbFsbt9;>L~bE%Ub_4)j{z-HP~*uFRvd$yC}Mm!*N>z)*5WKU(G+6+6zBda zj6Gk!F+>+dI97LBoo+i$Eq2gW1N1R18-Rfn@?RX*WEN#%i^7^mllY}SO8_!xsdBz_ z)VNL$Vw#fW;9p6pAF3K1bC8!YOY-=I`VHH+7G-sF%r`_`Brrh09T1IK_@(&yL8VhF zW`0YOk&h&9}j?k zQFptAk+#k7FWA>X+#|yMWs3};NCkuri#A`%m*Wj=ks4SrQKnDwJ6WP?R?vd1&J4hC>!r5&%bVT z9$ZnE1Z|)89v8JDFpm7!gQ7ZVbgHi0Tm+C`ewgmfz_Y#LAOT_Ni(_^030B5vab3nQ zTWNq=SUZOGe1TAZm`sG&HC3D1tBx9X%;H}%|Mf0p!#C;QleJOzT4O#N5sNdPfO-!Q zL$0xFhZq>W`sm=`TW-ok`{+67tp9}OLP?fittzB>Mr!glKrtNKBhz$ z!lzKo;W4_Gmk2gO!m+x5-H93edR)K?BF2=och-_bx@w#qO*gDVwP9XA%v6B>6UOxs z#ubiXIOFUbKU|4Mo_|eZb{e}plj=qO2S9-P9M<7Qy)o)JTfnb%S|Z`|LJdQ~1J&8R zDTo-)I?&nn7w~JL1?huu&uMxpQD^HY8l_>!H(=~<%kwXd2{14tgwjOR3~-mp+%&Ao zD+T>9N@)ewosyU<9a_?8kr9!=l^On33bfJ?_fEpAXXUjq0NJ5hg_ z*`PYqmgdifZtFK5^G^+&J5y>SZ0Nfj<5bVW zuQYGa++rm`xNG2L`&S0re$5ei?l0h%oBI9}vEP2RPV{l#5b~!C`!x_bq#!VJxyCX@ zp!Op+)4i@au~>TH)YUDq)rgubI1pdHexsOBEk6#=e-%BDxZb+umfqW`2h|a%<;(Lg z8C!)af&?pY_5rpr08DyjmJq~qQ7j)SG5qnDuvyy~5yMEqoKwhT2$2;HbW9}8O|ntC*6%R+0X&6%C> z#_JZ)<`Jtyzef6S#V7r9hD+dY}sLTd(CSoq~9Xz59hL@ihNA2ejaF5_Fz0dG&+$oZ_^A*JI%M5!5;NvwL{)B zaP0`29t?M`d35D_J=43wonLrVg`Y?Lp=Vb8;aM6rrA()0%V^P9`7OH8o~`I8@Gq9I zVP8Vp7wsfHc`GAHRBl&G0X&AL6Z+Zd1P+eZy>ME8U@fMNFqFc-eM!B4=L#r6&pgwZgMaMNm-^ zZYzE0;rIBI9bS)7%*HRJL4hW`81mIkrhBA(P)kRiG0S@L_47qd)K5O453)eCmn`@+ zcF^i^ZV*M1e{uN^CI5nbW%L&2p~om7Lv&D#u_1vqme&s<(^XcD>EB`|_2|`1cQ!tQ zg?)oqw4s1sSJ4YYjhVVBBTPT*zA+QrQ2s;qlDKggNK^yFz(>C}0e6u_D}+zfB8vyw zvG1ly)ISr?;}_~Ta{MbyzY(b4m{Pw@m)=~Ka!);$$FBkWdKE`xXSR)))fC}a5Wf#$ zU%)ridvbn^D8V+#;h3z1diY>cKgRxsKTlr~`eZDRU&lmW##)O?X2em#iUyuxoSxDl zBsQ_g41WEXPGp)Lc&$1C!+*CwHRm3X$7RC(tpa{c$Z^?F0y8uLS;Lc<1E%SOd$y+H zdHg!XUZrJ@d(vp(AJR<|Ws~Z&bm?fLaD(r(hvfT_{0sIjB$G0;^0iHekX>L>@~_(R_@zt#1LneXW@FxUX`50=1dnUW*%zUH;{{sk zz`8A(AQ{%EyD*A8hTT6>h@QH4DE2ZmV(9eKhVx;IZ80 zzM!`7(U2Tz0l$7ri7}}0{oXq2jn#G3e9E2|_UGUefXlh}oG5bO`B}Pz;8K9Ogp{9~ z4_bZ)jT!zm?+HC2d^~}&=bm1UEjbd%ehmA2~@SqVMmb5k;6@u5^(zJ9~2 zJm6GCjV~2{hqfl~%m4!BQ?{aGLqR{(_-lOl#XgE_*oGF0xkKQUubJR>p?v*D>2`@< z+|vP?yo^A^CNZvD1!)1l#$kGhjlnDFpGCuvd#@UFj$8LTs6U*AUk9|>_Bdcm|1K@+ z@icnf&J*rhC(tz;zp|Wh1G~cdxw9yv|8LiP+9>K%=?%U-evOKK$**&x*{dtt5`i%U zU2b|TiHLd@emzGQJHk6X>$ur!1IY6EuXi~54B60lM?Xb%`WgX4!xe@` z9>0(|@!LFMl{hFQaaPyU=Ayc2;Lq?2dm`l0@{5C2 zbt{oZ(LhG(BEYyjerdG0C^({dI1(t2&BCv#p*pj!H*U$TYBzya zR2@Y|ta?K)e?vwbnluC)oMqN0N__O*$CFopj7B4ir1wbmxzYyF8O!$N@ z>3`(@ugxZ2%eJzGv{@|VCE2l;1hcg(IlpSpeb0A{gDRTn#t~|e`k|j4)3W<+I`jA? zrnPW8))?TJq<)C{d3Z=(Zx--t(3xugHX&;A$*D9;363b;6_!`>^&2eO@s7Hd z4)@gmNVnBa>gDwUjO;jZ*=NbW_F2JW$dTPNn`WM17{Vv;42r9mj4dr7R@rnFS9V&Tz?+FF4A#<622~Y_0Oo$fg5zABC(zW$ebDc zS{;R3wyqv#J`_sr%)p3(+MC+-ras9sGx!B*+C&ZTZnn@GcGg8BxJRy4xtTYUn^Rf8 zkyEy1tq}q$R|xs9hiDUQ$_A$V?8nckQ5`6VtB z@?SP;T!%F6y$GZD6QLol%fQc{r+Tqw+}J=- zId)Dzr4J-eu~i%R-b@G-ZSzC$)9iCBc~82ilzQL6aGpji(bwT~^iVmnUCIsJ`tJCB zxw*jpWos~FLD6M>LDX-Y>1~SjmplgN7#V_)mwnHc5~lBpYD+)G!b-oW_9NE1Z^aYI z`d#{Ic3Gd7^@r~(7JxmTu-?@Ju`(;(ul$yl2;{%EG1(o|ZychJ%;(!Z9Yz+mR$Mps z7q6SYDZNq5%6}DMWr_w`ZL7NZ20g>eOqDATNWX`1<@LiIsC}w}HUX1)9FoP_=oQx# zZL*L=ju!O8N0b9jwN=uIy*b;_`I_|Y_bHFWEITsM7RuRIq{7km(asF^jbbahX5syK z-4Dp3qlk{@gk+y5=A!;kG-AVOxlV5;LOWlnss8`0Q##_h4~*uVEu(&3AnjFw-6%E| zj+d7>Nl>?pEiT-m7raGi}(8W z5)^yzhrEGy*W4L>Ue+J(=Sxx2Yz$I{H_PIaJ(K|>>+dmU@?TdW_^nM~cuHpiI$^FZcf3XBu2pSnW#djippS}OO#bzgjtOH{XM?>axy!3q95b$R0%i1E$bX&<}rSO;f{KyjAok zif(*Q9oOIYqLHuP2q=%EA~D>B;pFfOVc|GCD8hWrHf0w7g4-eY5jEtDMsH&7o;ZSk zdBrK{hfU&Htd_tKWW(MB;_zK<6F_R84PKe&U$=;T-PSvL%2mqx_)sPgDjucBgq6_) ztT$(0wo<7b;8jO;&P))xDicGNLSog?lJ&Fs*Cl~!@F_K{ZR-Bt8TW?x+w`$W+3qRh z$((%wzXs1Y&e>}b%M67YlJ*jSh&fh5DMf3dYF3e6{68;(C z6UT-Q4dl^9H3GVyJ%e90CZxrqh8go~F>dirJJy-yAjs8PIiIO(Is<+=hE*H@kOf2u zc${pkxK+&5M@jtZBT!(0gE$~067V!a6QB)Pb)**XE9>Wt3)&@m+9~4@5)a8M9eMmx z#+=b@jTX>KZV+g6%F-%!@QIr&cUtXQk+loQe8<^rHDp!~tlUW;P!{5Z)hJL|=pYil zj9=*@XKtSjKW`R~pw?P87%Do7YXoBBb=^_v>zsK{us&L7-ZIQ4w9N|e!iJrqcBR9W ziluU~AIOm zZ(+C7_U(UfUA>m2C3hx@=vvz^sf8KrXnW!)9->>SAcwbb54cRuzWBBK=?@@YrHyDnc$2Hn=shGQi%~_By4>@_Q9jyu_}{=hoBE4`Dk; z4Bl439;YSBswhj+A?;3nbqDyDC7&ZuzwvZWZ3ug=nX+Fju=Lf%+i1V2vQWrzIX;X) zKYVWN-YMg{t4cxaEyvXazWf|nuNzm*JZECwLAvO`E;8yO?>Wsc+(T@Lo<$*|5oPCc z^A(|Yq#h-Y-59fWo2^vltVm%7u@1XezMivX-5lY^Ea>6M@^N;AHALMAaui&VppeI} zuh3@hi^9IfwKr%f&fieKqP($UX|!y>WhvSBT&ehF>Svvi^p3MF+FcQdg!{Qv6cHs9 zn_P|^@nKuH8Rb`-?4O_ME z$>O?M=2f!41^y)tt^oH;ZVMvi=gZy(kvWU3J@YWryuZI9~5y zpEwUn{IcXdoysnnPKFU4sK2N8bsW2a`g!)ouEVQ5-&fzv%~!U5qX%xMr#eFr>aWy9 zyo%D6+{iqOe<4Pxw)r~tYq61*CG`wzb{^ELg?^9sxcnu_zgAoOgf^xxWiN||z4ln= zlB+ySb!^8KV8?T|V=MD2o_4N3T8VtF_q%ktb_Llbfq3k)eGTbX&?WIS>gUzB>6apu zLES|&y&}GuDT}DbfqVGqr8ekf6M1ZQTF)lJY;^*06jo-wex4UyBu}i>_Pl{I>{s?K z&H^I6Di&w-_l=qQjk()-PqbDT{}`)md%Ww$;?mdRC!g&I?)hSI z1$#KOz=1iK)I%sfiNe|~*`H{|JB~OK^r0*YTa7vbNu;N{$>u?Cz*nf>_$eJrgg1a8 z*2I3zm!_%@dF!dq@pZZ%gnpQvcR{~{9+lm%Hy(K33a?%BJ@t2DI@;VJkviuOWevk= z9okL?L(Y~r$XwDTD#wN?@ULutP=6>APMz22Z+nTvQPh(>TD@DmPt6fvQ=WhM=*OaN z#7MArDbeFgKpdW+y?PB9F_y{sLtT^pC3wUj=AdCIIx$Y$G(X|WQGAJy0DesnDvR)B zN+awE3hZT=q-O>C?BwPv%fC?RG>6|c3D;Rqa~$MTPHPB&`Ha@>C{u|M(P$w%`E6|X zyDdBm);`}HP&-l)&KUBV|-9C1Oztm!N@ccf&I`MV%zw>QXUruG2f_^xGMS(I} zQlsSH-Iu1+SLg(y3%9N2^}}JPD^(%@{sj>pWryEjZ_$6avlUZka_`x}dU6ZwP)oD> ziu%R%R>=l-k>Yk$1{twT&b}fQe~>!%NJ&=GA^#EA=X@_~50mv4RN{R7{IGSLQg*F> zLx@{j$i}FGrvzJP@JPrX+78zoLq$z)^vS@+WOgHe&W4%kY zf7PmSk8d0~pq(73SDc#*UDMjO;45rxUJ9P_6+i$R!97^Le}-SOEc^>XwX{=&awefd z^Bh8aI2*tErp;ZVe_{Vuebo4b-JF{X;ForcQW2ED?qcW<_)*qrA#qp$6DX%q2 z+sWyo9=lLKe~$l!Xw0Av|1h4jEK@dtb39OwZEsDhdHfof+_a*~Np$&k=&&y>5@lo9 zMLQ@AzOjH`$|kygq~sHJ2&v}}lh z@FdwjY_QGOA0p~@mN=z*joq;mv^2AIoB9VjLHDK0Qibz3KB7MsH_LH-MCUugx?E!+ zur_&RJm;Sk^Q83ZPT7U{{nj56Xq?K%#;6UOR5Q6X)~$Vwo@(=*K`i0ce!0RT{YtMN za{=2)VXb8CODKzYpMTwmE5+`OJ{5(l6s%JpR>0Ac@Ecr?3;YXJ4L&CzrA5@?6CeN) zAz9ss7>_FQ79!NoW80TgmQwH4KSZNWsGT_Mw;OsrL$W9Iakh5Xm<_QcJ;IeH>Cu@>Q_q7TF}Rv$f?1|VL} zf6+YXknQlslG?u+-QQK3V87=tP>lm4GH38BrC;K$*3UBN>SuFXQ*iia*(G~f23dxw zoPBW<`_^gi6{st)ICPTaZKApsS5WAZD%5Y(S-@Pd$XJkK0{+nUY3Os=5q)1F|Fv5B z@KDy8y16AykATb2sJGA5&qtL8y&qEfTI^q@2RC0I)zfS~+a&5U`dWZEm(vx|b#k;2 z51K}4+fgfI-WD;O$}?eRo0O>l!4PB{uWP`^=MIDeyP6!?|O;g{5n zu>hd2iu)YQdtN_GO8nvyzvzHcB@noxkVC0*ZXGMm?_YkDdc<8mboF+Uw5xZ+%~vU# z#DdJN8`|>v;iw)zW{v4BZ77>>_o4BVmo{;YkWeuHhPMCroi{a+ooKx4EvulPEz zNfq!5@|pr@!#&y-rK&yhkPG|2peU}IRX^XE4GY00EHw7u{3un?98^)FK4FG`U5jiN zGDmpxviucwdT*A08v6|TVQId8V*vTDe+Qzi?pXO{9NGX}en`yek!zNm(h+4yynI4r7?`Z%kkjRGlt z+ZQ0IA0iR9in#1E_!sT#vNDmyJIg4pTPWpXWhiE#N!?nP$1kLi#9&PCVAm3WLl$ye zOOHrJF~d4@&%yao+MnRZfL~Y9FGRH+oG_Z%+hR`!=SSu7OY*O<_*v38?K;oG!egrw z$TDOV#iPYh*&oTjUKEW{_XpLV>Mw3XB5bYtzu*rWtcP&?SE>T5(*!w>Wxe-Em;I zMIbfI8cJFVASCKJzdAf`3q56f$AbISKd=*~PeRgdggl579FAYcN4P7`%0P@81yj5lTn&L|FeQglO$q}d#s=zepLwgc|-RVo4rU} zB0y-O2MLkG9fkTsA4x1gS7lLO9lshn38E&80;!mln+sjDR*KwIjvHvH(@!c! zN>|7Lcx)DaQESJXlNjD55KLndjqhNI;7pY~e*KtFMG+QutCo`vHR$+rztp<<))by& zVfjEmyusWTh4)Kl`)nP7E?UC(oC+Q&+j2CoAFiU*ir}t<<@LDYM~0vu7VG97fjyWy zyR08t%5~-eQ9r3)@HRO8u|+{W;=00mM$|@8$dS&?DfB}=sUVAI87P%en%u$A^=^(6 z5gpXQ7W6|C_~m#$VPnn(^B-TnEyPS`@y&ZinL0sggpP+ zZXTf0BYIccTiPaq$#l84(=#$wpH;u{Z?s?3+pbP_hWZmogr#HHa~*>UI;;K=E1rVR zlOf;BBht`HmSQ=kC`iU^{*}!jl-a6OPnU{X%NxjEfpeJ6zx1%OK+K&qFIdl08S-D+ z{aBD|9Ca3c$!ZPghj8yo19uPP{5(e_lh+U1NtVPLW*J06#g_Y*HQ2*`ZkYxCbe@Sb?+rT|+3$P&YnoAOv>m{OHwlA6glKEv1Y*o5t z;U1ZT1}v`Msm|ky|1CffN;S}l*!L~#_ZyGCJqW(mw;g!ka?b_4yH4f)_bOyhk=3rYqi`_q= z8o984uHnj2<5z7j&hRfB6@sqf)M!n6pN4ObB#j^8N*(uX$NsM@4rcRT7*{D^i{4<* zbj(S`*PGJ=s7M@$Nhy0+JaUIm9-%P(Z_BHX}FSGW5=mO+NrG|45NCdWRl%a|3)_)DVg-$ zp)DhvDAk1^nag{IaDMN8u{?_K`*!-3xX~{ClKNNlsrWzkzjYSQ-`Gv(kx9QTr0#~c zvs8GzXiRJ0mh*KPzvTIcpNZwR`xfBfxVUkBS*O~-U*6Vgc}}TLjxP_*-NB!s(g?~n z=E*>DwZ5)*JAYiSb#9HuKFGaiq9i@d>m71@P1a8EUks)Jwx+;BG2J8-AmLWsYj*j_N!0uQyt+b)cDK4 zCFq@=>6k=e<9+>2>xy*Ie&rotTzDJ6?lOKU@GKXt)|H-f@g>%)$}&t`_x<#3y3SdX zi97At-|E)x>_J(S=zEYYA`wN473l&~dAFjDaYtH8hR#ax7)H7Nt<_hK&K$3|tQ&)J%)cGTRw zUki7^S{1CQNr_($8XM#q1CSN)>vh0ZW5%;#dx=i)y?l*b{fdS{sj=Ir+K=<|9u;M?_}2kV*6F<}%QmtHRyf9| z;v(V95EBW$sC>`d{0W`75_!?ww(f7ILEqjbB+vysi8+H`K@soveM|4d{^f%>Xx-S( zKB8W#u!{x&;#@u_Q`AO6SgFJk9}|0R(5HpIV^)j;yYwqrQ_j9Dr9tbrt8IOnc?qy( zUENuHhJGSyZHRJ_8T=yd@KnNWGQ#kJCiKHJy`VG+)E|2Bs_?=2^X!7PTp+rbG*OqL zd8XJ~?B6l2HM95^6niXfcc46~Pf|93krgl5apm!Afc8@rAwD#-4TD2(*+h#37}@3X zHynDD4vDIeo_2ZZkTYl*YuP!%o=_W`*CuoJh4VM86q?vpKqMPRB^&LDiyEOf7xcsD ztTSZW!Cfj`lYsDRZ<>}7Eb2FA;TKJTxp+j}&NW8VcNq3B<4OU)-ov)9rAWs}Im>MB z+`3&I=h<_X%mRMhtZf#)E`593d$h;#b(C#K5O`4dZZCZZ4nJ#Om9VeP`t@!4Yq7K9 z=lq5?W2|^wJIJ$9Qy#zE$W2HJQ~VbFT&v>H;^gVmb~{9a0)DZCvJ^H44=_y4B97ikUfE5A5LUs%t3(l(F*abwxxE{*Fadv?3ad`!ausnX@G|0+*4BM8m z0S9ZR+V$V&3K&x{AvR2DD zrk>%Kwt2>JkZ%FMU{-@1lHf^thS!c5-#}^Ufl&P&I7ljwUpp|Bi)3_h5;x1x(L1Ig zEA32l`SSSn3vG`Avy#LEfub<hF-7@EnKpl(DhlPjzl{PJ6lM4ruJ!#~!eG%eAc@8Ifc$$8l?YweYn*u3zr)Je}fR})60l)OiVSEN_qbEF(kvfOrONBA9Uk5kzwy|wc!WqLeTv( zT6XM-q7fv=g3hg>;%rdiAW!u9Y;=J}o_{?KT@+EJTsGfFqeQTA1^7;Cs=&YALtZaT zGDTv-WYAF82~3JSH9F6~_S0L`dIWQE!Mv!*#>zkD09wvYb{%H%D>tW7>&Bn&!2&pE zU4D)w*J`?`4D*%k&pW(nZL_IvA;b~_XQ9lh-?*8`7xdmr{HPhy+(jz!UUvFSZ1g#=AHK{` zsX_)7JA|@cG<+{3CK>t_>XGvL;d2(YEsHg_I$?g$j{nV#t^Pf9iDn!8E3Y4-0*8CB z4rSs8e0k*vW&8tFEJrbmf1TH}^@s4Q$?*FBzrCvuj;p%v=e~U_KS?X;t-Z@E;Umwo zfW-)T{edBlV_mI25MaU@upu3H=9$op+mcqMoz|IY$klpn1U6;)DC07uS%OQP7SaVA zFr~nguv~>Pi9?tSG#(JtO&kV@L)^qbvHCmreeBADhClirdVgqsx;nb=zI*SvzjMw# z@4nm1nAlHJ>rv!XjQMjc$Uk(g`wXPaDJ1cJlWjkO?Y9#%%I7c9p`Nn-yw7^^+q{M^ z!Wv!-WbQEb`)eKczmN-|&yPA} zA=>tn=8fjQp>|H2N~~WRP}<#`E^#ytsKuPY&%7k^dF&m*!=HsjnR|ey-{7 zf6bWPdfhwCZFmhYGGnf4{sI?ZK1co+zx}b8 z!+k#me=TPIdXbK)FI3v<{I4BI_gW?Alw(KeYXBexy*Ti5MgG^T2tO{pKJiPWf4~t# z+95VpPN=1B=PUL6wN=7C+)zx}k2~j=nudx8F(~IMSd0;W-A&l-@-8VfzVbR@ z(K8$^9Lm@D%TSh6ZA=;DAQ6$8EW@)O*_X9(s9?lj53|+%XiGNMZXSPQRcB&&9@HoU zJBn)l7q%(snR06-_Ljt2=V?+{;jfvI|HW+e1tam}2k@ONt6SZE6a)8y2|IH#7V+2h zw6}mfB78{)YPACW183w`-}a063n%`GE(2#Mu?$p?WneY29ToAHiIu-gX7Md8dQ@Z; zD8Mt7aPY99eaQP?h=wV=w%p05`Jz5O+zml)hPiVQ<^>3JC{CY3c{4nL^a%=UTW(wnndo8$Ks_poB$E^?J-Mly) zr4wvN@#$VJ-%FyQ&lgrn{Ff`AH0K8*ijKr&p@#@*%`+ z47Jx=?v3m%zU%APWW29;OQnncczaXA-XgPAYw@i}#;Z7Ta4#GdtzVPk6tT6usH5?c zrkm(Cg`nK={AcJ{6`!;=Um4|ZBxnptG?x!Inb6d|#m@Fv0t;GIBviYFMw%;1N_0BVue^B&wZGm}r7(XZzE^6`x6*trj-6k=JK@B313b1nQ6E3#*D8~( znhW|?VA~6czHdp8!VWAlIlh;L6h4H(hg!;wyghWLOx$}O;#$rs*;kGHFNye}>cZPh zvFnXn{(ke7P_(n@$x4^J?Vgw$`d=MA+Y6nt(Vly^`7nGC>tMqk@ierlsV;wm}X_*Y)uk_=GE6bN7f8N+FyO_v0`G4h#*4p`pr?UIMXk+ue z##hvPl@+qBN=W1|u>XaO`UX7~JHcQ7O&7x9?&asg251?H9DESR>VvVbkd_I)|0S%E zeEaT^-3wtXVky``IvOANUwr=IBXqX3t}HGSe-~RItwMeeyhv9LmTUPNyXZ-r;WlC$ z%lfxUrY)QwbsN1=?|&uXNm*qm}^J=JkI9b&iRK0o*UpVu}6GaTHe_Ox|`0i z8>Mm7+Cli1RvmwxLXRs>+razFI0vti0FhaTN4}59QhogJeOf8!U>+is3v|r-^_zAc zxRAf(+7qCy?$=?)-$eLqire%x34*KJT_@S*`;2RBF?Q*`Wv@LP>AU;Y` z2>HuKL!Ypae<qjZJBcYOA$RaN-Q0aupkuy-7v27}H2Fbg9D*Za2p zGr6pcpi{tKihkSl!(#WJtUikH8XPgV4dIc>k8WAD+j@C{1;q}Ed}`B1}lJZbZuue@X9SV)QR2wtLcy1dh>HUDcL z;X8<oL7;m~6an<=9xqcu*q$s|t&#d#vqX?=c%h#*Wwtg<0nTMEnJG?AecVJy~-H5Q^JM^+z?qW;pmuytL(Ohkh_-l}gJvR&?bT&@P zaSC{m8Rt!qey+&>I@8#y&aYgy(fBQWOP$3o%ufkl1e>h$zpz4&*((pVCAYlLF?wol ztZngK2Rh!Rm0sQc*B{=;;ZU<}GIoegm~3WTr9TA5&lU1lJjj@;g4TIE5AMJOJ@2lZ zOjKiG{7~p`52-C2HvGPT5)BzIS>Hi?zNs#Lcu%<7^=jDE6ZST=xjugQ+yq9Dwl_8$ zpt9XbI2;ToX6JFfXs#AN#QR_VR``4JUA0nS;EvGq5|&jRe__^Hi+E>bQcu4tI3R$t za0!hM`O7{m-op{N-_l1|@Vd%zHtdM?Va=@fzb^f=YqxXk>q&eQr^Sx-S+5Wb#WKjn z<~1P`$BFBL-7c0%V4X*t&A~S=Ayf0en5_c0>uGFzHS)(U@1U%NcT*Hx4egD)9LmG8 z1JCX_s08ycM-va}Hi!P#m)M0lQ=)~@Mi`f@;06D|20iC9$lm}j^KREJGXN|DqpRNk zq7hmI9c!Ni=%Vcv1McHbU-4fbPQ_?7EcrG5b;-r{uP#1a|Js$|KYS&@VUS@S@BTZbyu(qg1;1YSdPb{_~B0X z7u+6qF1uZrNUUg2*!r}n$p6}jXx;h5O=YmJd8l|Fo=eL_{?`OOQ0Ppb7B{?7m2Svk z{TZ_#Gx_A(n*a4r@&jz6++K=}(q=-E#*Wyxoe$&^@3YW%e@qn}u|6-KP5NVMnOVfyCOwR@OLqtiB}l=1 zOz3rE%-1i%`5Rc4>Go=j^CfgswJ*$L;f4IAkB!1I7|@mmoFUM9G>jk8cu#Cd9_r*7f_3|1!y{`_?A(X8378kS(_}Ec{FdfX|44~#~5zJ5F(zVFN zh^q)-ohVQWC5|sMJ{Z4IoUSf*k`n;y)iq9-Fb7?$3T&P@~O*R480BJ)=Wmm86OjGz=32_yz_0qZcY99;%T!YQ5BsQ9Z zHY*}TKFB1D4S)c!00_U!p5WQXUBiOy=_oj+H6V%vKdC3U*SN&jO}|9z&>KFGX%)X- z45B0*wOPjWmrJQdX@Jfg5lDn0>?lVvc{4YhaC$8pD}Mx3Vm?a3K2$_GwtfiKPXv|( zB@XFJ7oV$R(ea^Rk}n4&o!Dq`MJ3# zhAk&%QC*we;fyn2C5vVRmW{R`iwltjDv%v>poBIc1o75rq!c5El*rwq_?q6r(`-KnA@RELe z`njI<8?MQ$)%5_R_nVv4YJjAd^!1C38ERD&xst^i=V9LIt3hnwm(?@zZOIKP;|>7C zxnx}?tpbsL86Ohs=^9FVh-R#(d6e?vLvg<(xL1FkT$OPeEKE-ZdcwMxxhPR#n++U) zZ#j9(E}A^48!&JwXKRK_BAI+#4j1rVZrWgwODEEKAx8^N%8FBPFQj!AysPo2cy9Z7&qj z`X%f2>mYTI~02IeP67?=ZMjp}pLnbLqrMl#f2 zNM3EO6=?~OGUGzX9tK z7vx%2Yanu#4^UFOm$;E43Rthc3@(@xkb)Ohv>-FM-(FnWu^|A74GV1P&CQi|%nwDV zd+Lg*pG+N_`fw(QWIhS#{8{tz=iaV9b_0X47wSRu?@L#%{?WYO>^tyl4VKn}Napi5 zeet!so;dvWdkpTp@bGQ#eSY)c{&|lae(P(Ij4+1eefBwK<7ge|K}o973x&)&I<65k z^Kv?p`KWaxU}_cCL-a9xngPQGmt}^$Tn9)qwHL~KY(31>!DWSX9Pu&$CT-reBbkNf zrNeV8eY=zOKG5TGGE|#Le`+9-F)Xg`@HN|gE5`X%Xt`^VTlT4Fc0y%g~P{XnlN_( zdH{wcmr(dzF)DbeTs$FqX8;-01J3bz8B}vJ@I`nYPUGc>pc#bs5)zIW>sOsxMT!>O zt4_c0r<$S(*0?|heRz>*rCw!E8W)Mb)gUYh`mjLId=5IBG&%!#K|N-i7Ry8-mZI?) zU@W{>uj!6vas!Fv7IHlwge5BILqSx}%e8gIV5ZiW6q=Vy%**mR8+05HG=os4U-mHz z_lu;I1=|NvNpLSSw8bK$ECOhTe=!~7EKBC)_(=q91|qWm^4L}KrGpnNYq?y6AS{vL zbJe&YaWW}*K}E!LJU8U!X`m+*`G4i*>2w?t^w*<%&7|Y7IkNtFXUT>63#EQGzTf( zq~{sPQYw_OhG8x8hj~WSLI8(3xhn_5w;lhbFN-WJ-ugBfyy!@zX2&rjmga zlb(e(1G6F*+Mg-Sz2DmnfSdAV(M5V)?`7ZI5LSs@u?D^|fG+|Wr-Zk5tX{(|AoImc zNMWn3DKWx57S?0ibC!t%vj4&eP}2liB83Tcz!|MPv!W( zG?Agg;t2Q!4q+njWl@LUB%4lZQuox3QxK2h z3Zn~iPCKxKSs3WD!$fI>5~1d@bEg$A$$))h3|}AxJyk{yZws>uvkTbHVBs?Tl71wE z92Ni18EQpM?X1iAs190CtEZ{d3SEZgLYE(5V15QlJ@HVzE?ZcmNcBKz%;f-hu0eAN zo~z(QdJ0`8XdE=x_LWhb?v-*-YWJgb`JkC%T^5<6b2`L?ebqEw<~0GjTrSaKlYvv} zm`{nGs2Tb#5HDd%ZY8NE9S5GfPB4J_iw6SJdE#Z?xP&*?WU$7@J zWUTJEGN=uM_z}9yf90!gEcNg8x-31V1>m0gpiY++I-XTHCWY2y{%6TQrd`VaO$!5B z!S8-4|8zplZ4Y%BcXVoh2Z}TWz*mRvsnHbkXnrFJ1nX$G3=T=3n#`l>kJ# z?1NCG_FwhFAKRX1qje(yQ9ZvOAT1KhH~UxlOMbufti)^&%=W-+56t$!Y!A%#z-$kE z`g%ayOE8#VFUe2e)6YKfY!A%#z-$l9_P}fp%=W;iy$5nStpCI1IZ_+|jO9o+ev&>3 TVg`G5ZxIDs@G literal 42175 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 Date: Mon, 28 Aug 2023 15:36:01 +0200 Subject: [PATCH 248/299] text --- client/src/cmdhw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index 1b2cd5459..4b26bc00e 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -1294,7 +1294,7 @@ void pm3_version(bool verbose, bool oneliner) { return; PrintAndLogEx(NORMAL, "\n [ " _YELLOW_("Proxmark3 RFID instrument") " ]"); - PrintAndLogEx(NORMAL, "\n [ " _YELLOW_("CLIENT") " ]"); + PrintAndLogEx(NORMAL, "\n [ " _YELLOW_("Client") " ]"); FormatVersionInformation(temp, sizeof(temp), " ", &g_version_information); PrintAndLogEx(NORMAL, "%s", temp); PrintAndLogEx(NORMAL, " compiled with............. " PM3CLIENTCOMPILER __VERSION__); @@ -1333,7 +1333,7 @@ void pm3_version(bool verbose, bool oneliner) { #endif if (g_session.pm3_present) { - PrintAndLogEx(NORMAL, "\n [ " _YELLOW_("PROXMARK3") " ]"); + PrintAndLogEx(NORMAL, "\n [ " _YELLOW_("Proxmark3") " ]"); PacketResponseNG resp; clearCommandBuffer(); From c8cfd4a517cfa83c0ce5697fdbc66eba9804dffc Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 28 Aug 2023 15:36:29 +0200 Subject: [PATCH 249/299] text --- armsrc/appmain.c | 1 + 1 file changed, 1 insertion(+) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 5908ed855..900cb6517 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -2723,6 +2723,7 @@ void __attribute__((noreturn)) AppMain(void) { SpinDelay(100); BigBuf_initialize(); + // Add stack canary for (uint32_t *p = _stack_start; p + 0x200 < _stack_end ; ++p) { *p = 0xdeadbeef; } From 70bd5b80b59521e5f396d8dde2274ce5953310a8 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 28 Aug 2023 17:59:48 +0200 Subject: [PATCH 250/299] limit clearing the bigbuff for 14b raw commands only to clear_trace flag --- armsrc/iso14443b.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/armsrc/iso14443b.c b/armsrc/iso14443b.c index adfd52491..c2516c36a 100644 --- a/armsrc/iso14443b.c +++ b/armsrc/iso14443b.c @@ -2093,7 +2093,6 @@ void iso14443b_setup(void) { // allocate command receive buffer BigBuf_free(); - BigBuf_Clear_ext(false); // Initialize Demod and Uart structs Demod14bInit(BigBuf_malloc(MAX_FRAME_SIZE), MAX_FRAME_SIZE); @@ -2417,6 +2416,7 @@ void SendRawCommand14443B_Ex(iso14b_raw_cmd_t *p) { if ((p->flags & ISO14B_CLEARTRACE) == ISO14B_CLEARTRACE) { clear_trace(); + BigBuf_Clear_ext(false); } set_tracing(true); From 0810f07a4177e25b37bf635e23d993397dffbb4e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 28 Aug 2023 18:00:32 +0200 Subject: [PATCH 251/299] improving false positive for 14b SR tags --- client/src/cmdhf14b.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index e8d48751a..4e808a969 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -440,8 +440,13 @@ static bool get_14b_UID(uint8_t *d, iso14b_type_t *found_type) { if (resp.oldarg[0] == 0) { memcpy(d, resp.data.asBytes, sizeof(iso14b_card_select_t)); - *found_type = ISO14B_SR; - return true; + + iso14b_card_select_t *card = (iso14b_card_select_t*)d; + uint8_t empty[] = "\x00\0x00\x00\0x00\x00\0x00\x00\0x00"; + if (memcmp(card->uid, empty, card->uidlen)) { + *found_type = ISO14B_SR; + return true; + } } } @@ -964,9 +969,13 @@ static bool HF14B_st_reader(bool verbose) { iso14b_card_select_t card; memcpy(&card, (iso14b_card_select_t *)resp.data.asBytes, sizeof(iso14b_card_select_t)); + uint8_t empty[] = "\x00\0x00\x00\0x00\x00\0x00\x00\0x00"; int status = resp.oldarg[0]; switch (status) { case 0: + if (memcmp(card.uid, empty, card.uidlen) == 0) { + return false; + } print_st_general_info(card.uid, card.uidlen); return true; case -1: @@ -1399,7 +1408,6 @@ static int CmdHF14BDump(const char *Cmd) { return switch_off_field_14b(); } - if (select_cardtype == ISO14B_SR) { iso14b_card_select_t card; memcpy(&card, (iso14b_card_select_t *)&select, sizeof(iso14b_card_select_t)); From 4e411bec2284aa578eb99f8e5f539c0f8fb1b9ce Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 29 Aug 2023 10:57:05 +0200 Subject: [PATCH 252/299] fixing false positives --- client/src/cmdhf14b.c | 45 ++++++++++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index 4e808a969..536fa2ce3 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -442,11 +442,12 @@ static bool get_14b_UID(uint8_t *d, iso14b_type_t *found_type) { memcpy(d, resp.data.asBytes, sizeof(iso14b_card_select_t)); iso14b_card_select_t *card = (iso14b_card_select_t*)d; - uint8_t empty[] = "\x00\0x00\x00\0x00\x00\0x00\x00\0x00"; + uint8_t empty[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; if (memcmp(card->uid, empty, card->uidlen)) { - *found_type = ISO14B_SR; - return true; + return false; } + *found_type = ISO14B_SR; + return true; } } @@ -918,6 +919,11 @@ static bool HF14B_ST_Info(bool verbose, bool do_aid_search) { if (status < 0) return false; + uint8_t empty[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + if ((card.uidlen < 8) || (memcmp(card.uid, empty, card.uidlen) == 0)) { + return false; + } + print_st_general_info(card.uid, card.uidlen); if (do_aid_search) { @@ -969,13 +975,14 @@ static bool HF14B_st_reader(bool verbose) { iso14b_card_select_t card; memcpy(&card, (iso14b_card_select_t *)resp.data.asBytes, sizeof(iso14b_card_select_t)); - uint8_t empty[] = "\x00\0x00\x00\0x00\x00\0x00\x00\0x00"; + uint8_t empty[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + if ((card.uidlen < 8) || (memcmp(card.uid, empty, card.uidlen) == 0)) { + return false; + } + int status = resp.oldarg[0]; switch (status) { case 0: - if (memcmp(card.uid, empty, card.uidlen) == 0) { - return false; - } print_st_general_info(card.uid, card.uidlen); return true; case -1: @@ -1011,12 +1018,18 @@ static bool HF14B_std_reader(bool verbose) { } return false; } - int status = resp.oldarg[0]; + + iso14b_card_select_t card; + memcpy(&card, (iso14b_card_select_t *)resp.data.asBytes, sizeof(iso14b_card_select_t)); + + uint8_t empty[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + if (memcmp(card.uid, empty, card.uidlen) == 0) { + return false; + } + switch (status) { case 0: { - iso14b_card_select_t card; - memcpy(&card, (iso14b_card_select_t *)resp.data.asBytes, sizeof(iso14b_card_select_t)); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(SUCCESS, " UID : " _GREEN_("%s"), sprint_hex(card.uid, card.uidlen)); PrintAndLogEx(SUCCESS, " ATQB : %s", sprint_hex(card.atqb, sizeof(card.atqb))); @@ -1111,13 +1124,13 @@ static bool HF14B_other_reader(bool verbose) { if (status == 0) { PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); - PrintAndLogEx(SUCCESS, "unknown tag type answered to a 0x000b3f80 command ans:"); + PrintAndLogEx(SUCCESS, "unknown tag type answered to a " _YELLOW_("0x000b3f80") " command ans:"); switch_off_field_14b(); free(packet); return true; } else if (status > 0) { PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); - PrintAndLogEx(SUCCESS, "unknown tag type answered to a 0x000b3f80 command ans:"); + PrintAndLogEx(SUCCESS, "unknown tag type answered to a " _YELLOW_("0x000b3f80") " command ans:"); PrintAndLogEx(SUCCESS, "%s", sprint_hex(resp.data.asBytes, status)); switch_off_field_14b(); free(packet); @@ -1141,13 +1154,13 @@ static bool HF14B_other_reader(bool verbose) { if (status == 0) { PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); - PrintAndLogEx(SUCCESS, "Unknown tag type answered to a 0x0A command ans:"); + PrintAndLogEx(SUCCESS, "Unknown tag type answered to a " _YELLOW_("0x0A") " command ans:"); switch_off_field_14b(); free(packet); return true; } else if (status > 0) { PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); - PrintAndLogEx(SUCCESS, "unknown tag type answered to a 0x0A command ans:"); + PrintAndLogEx(SUCCESS, "unknown tag type answered to a " _YELLOW_("0x0A") " command ans:"); PrintAndLogEx(SUCCESS, "%s", sprint_hex(resp.data.asBytes, status)); switch_off_field_14b(); free(packet); @@ -1170,12 +1183,12 @@ static bool HF14B_other_reader(bool verbose) { if (status == 0) { PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); - PrintAndLogEx(SUCCESS, "Unknown tag type answered to a 0x0C command ans:"); + PrintAndLogEx(SUCCESS, "Unknown tag type answered to a " _YELLOW_("0x0C") " command ans:"); switch_off_field_14b(); return true; } else if (status > 0) { PrintAndLogEx(SUCCESS, "\n14443-3b tag found:"); - PrintAndLogEx(SUCCESS, "unknown tag type answered to a 0x0C command ans:"); + PrintAndLogEx(SUCCESS, "unknown tag type answered to a " _YELLOW_("0x0C") " command ans:"); PrintAndLogEx(SUCCESS, "%s", sprint_hex(resp.data.asBytes, status)); switch_off_field_14b(); return true; From 44fc77ec3beee66ffcb6220447d6b5637f6704b7 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 29 Aug 2023 11:24:32 +0200 Subject: [PATCH 253/299] Newer Atmel define file, fixes some typos, adds a few new defines --- include/at91sam7s512.h | 284 ++++++++++++++++++++++------------------- 1 file changed, 150 insertions(+), 134 deletions(-) diff --git a/include/at91sam7s512.h b/include/at91sam7s512.h index b43f0dbb1..25e03506e 100644 --- a/include/at91sam7s512.h +++ b/include/at91sam7s512.h @@ -1,7 +1,7 @@ // ---------------------------------------------------------------------------- // ATMEL Microcontroller Software Support - ROUSSET - // ---------------------------------------------------------------------------- -// Copyright (c) 2006, Atmel Corporation +// Copyright (c) 2008, Atmel Corporation // // All rights reserved. // @@ -27,14 +27,14 @@ // ---------------------------------------------------------------------------- // File Name : AT91SAM7S512.h // Object : AT91SAM7S512 definitions -// Generated : AT91 SW Application Group 07/07/2008 (16:13:20) +// Generated : AT91 SW Application Group 01/23/2009 (11:51:35) // -// CVS Reference : /AT91SAM7S512.pl/1.6/Wed Aug 30 14:08:44 2006// +// CVS Reference : /AT91SAM7S512.pl/1.6/Wed Jan 21 10:52:45 2009// // CVS Reference : /SYS_SAM7S.pl/1.2/Thu Feb 3 10:47:39 2005// // CVS Reference : /MC_SAM7SE.pl/1.10/Thu Feb 16 16:35:28 2006// // CVS Reference : /PMC_SAM7S_USB.pl/1.4/Tue Feb 8 14:00:19 2005// // CVS Reference : /RSTC_SAM7S.pl/1.2/Wed Jul 13 15:25:17 2005// -// CVS Reference : /UDP_4ept.pl/1.1/Thu Aug 3 12:26:00 2006// +// CVS Reference : /UDP_4ept.pl/1.1/Wed Jan 21 10:53:24 2009// // CVS Reference : /PWM_SAM7S.pl/1.1/Tue May 10 12:38:54 2005// // CVS Reference : /AIC_6075B.pl/1.3/Fri May 20 14:21:42 2005// // CVS Reference : /PIO_6057A.pl/1.2/Thu Feb 3 10:29:42 2005// @@ -48,7 +48,7 @@ // CVS Reference : /US_6089C.pl/1.1/Mon Jan 31 13:56:02 2005// // CVS Reference : /SSC_6078A.pl/1.1/Tue Jul 13 07:10:41 2004// // CVS Reference : /TWI_6061A.pl/1.2/Fri Oct 27 11:40:48 2006// -// CVS Reference : /TC_6082A.pl/1.7/Wed Mar 9 16:31:51 2005// +// CVS Reference : /TC_6082A.pl/1.8/Fri Oct 17 13:27:58 2008// // CVS Reference : /ADC_6051C.pl/1.1/Mon Jan 31 13:12:40 2005// // CVS Reference : /EBI_SAM7SE512.pl/1.22/Fri Nov 18 17:47:47 2005// // CVS Reference : /SMC_1783A.pl/1.4/Thu Feb 3 10:30:06 2005// @@ -337,7 +337,7 @@ typedef struct _AT91S_DBGU { #define DBGU_RHR (AT91_CAST(AT91_REG *) 0x00000018) // (DBGU_RHR) Receiver Holding Register #define DBGU_THR (AT91_CAST(AT91_REG *) 0x0000001C) // (DBGU_THR) Transmitter Holding Register #define DBGU_BRGR (AT91_CAST(AT91_REG *) 0x00000020) // (DBGU_BRGR) Baud Rate Generator Register -//#define DBGU_CIDR (AT91_CAST(AT91_REG *) 0x00000040) // (DBGU_CIDR) Chip ID Register +#define DBGU_CIDR (AT91_CAST(AT91_REG *) 0x00000040) // (DBGU_CIDR) Chip ID Register #define DBGU_EXID (AT91_CAST(AT91_REG *) 0x00000044) // (DBGU_EXID) Chip ID Extension Register #define DBGU_FNTR (AT91_CAST(AT91_REG *) 0x00000048) // (DBGU_FNTR) Force NTRST Register @@ -1455,12 +1455,12 @@ typedef struct _AT91S_TC { #define AT91C_TC_CPCTRG (0x1 << 14) // (TC) RC Compare Trigger Enable #define AT91C_TC_WAVE (0x1 << 15) // (TC) #define AT91C_TC_ACPA (0x3 << 16) // (TC) RA Compare Effect on TIOA -#define T91C_TC_ACPA_NONE (0x0 << 16) // (TC) Effect: none +#define AT91C_TC_ACPA_NONE (0x0 << 16) // (TC) Effect: none #define AT91C_TC_ACPA_SET (0x1 << 16) // (TC) Effect: set #define AT91C_TC_ACPA_CLEAR (0x2 << 16) // (TC) Effect: clear #define AT91C_TC_ACPA_TOGGLE (0x3 << 16) // (TC) Effect: toggle #define AT91C_TC_LDRA (0x3 << 16) // (TC) RA Loading Selection -#define T91C_TC_LDRA_NONE (0x0 << 16) // (TC) Edge: None +#define AT91C_TC_LDRA_NONE (0x0 << 16) // (TC) Edge: None #define AT91C_TC_LDRA_RISING (0x1 << 16) // (TC) Edge: rising edge of TIOA #define AT91C_TC_LDRA_FALLING (0x2 << 16) // (TC) Edge: falling edge of TIOA #define AT91C_TC_LDRA_BOTH (0x3 << 16) // (TC) Edge: each edge of TIOA @@ -1533,10 +1533,21 @@ typedef struct _AT91S_TCB { AT91_REG Reserved2[4]; // AT91_REG TCB_BCR; // TC Block Control Register AT91_REG TCB_BMR; // TC Block Mode Register + AT91_REG Reserved3[9]; // + AT91_REG TCB_ADDRSIZE; // TC ADDRSIZE REGISTER + AT91_REG TCB_IPNAME1; // TC IPNAME1 REGISTER + AT91_REG TCB_IPNAME2; // TC IPNAME2 REGISTER + AT91_REG TCB_FEATURES; // TC FEATURES REGISTER + AT91_REG TCB_VER; // Version Register } AT91S_TCB, *AT91PS_TCB; #else #define TCB_BCR (AT91_CAST(AT91_REG *) 0x000000C0) // (TCB_BCR) TC Block Control Register #define TCB_BMR (AT91_CAST(AT91_REG *) 0x000000C4) // (TCB_BMR) TC Block Mode Register +#define TC_ADDRSIZE (AT91_CAST(AT91_REG *) 0x000000EC) // (TC_ADDRSIZE) TC ADDRSIZE REGISTER +#define TC_IPNAME1 (AT91_CAST(AT91_REG *) 0x000000F0) // (TC_IPNAME1) TC IPNAME1 REGISTER +#define TC_IPNAME2 (AT91_CAST(AT91_REG *) 0x000000F4) // (TC_IPNAME2) TC IPNAME2 REGISTER +#define TC_FEATURES (AT91_CAST(AT91_REG *) 0x000000F8) // (TC_FEATURES) TC FEATURES REGISTER +#define TC_VER (AT91_CAST(AT91_REG *) 0x000000FC) // (TC_VER) Version Register #endif // -------- TCB_BCR : (TCB Offset: 0xc0) TC Block Control Register -------- @@ -1727,13 +1738,13 @@ typedef struct _AT91S_UDP { #define AT91C_UDP_RX_DATA_BK1 (0x1 << 6) // (UDP) Receive Data Bank 1 (only used by endpoints with ping-pong attributes). #define AT91C_UDP_DIR (0x1 << 7) // (UDP) Transfer Direction #define AT91C_UDP_EPTYPE (0x7 << 8) // (UDP) Endpoint type -#define AT91C_UDP_EPTYPE_CTRL (0x0 << 8) // (UDP) Control -#define AT91C_UDP_EPTYPE_ISO_OUT (0x1 << 8) // (UDP) Isochronous OUT -#define AT91C_UDP_EPTYPE_BULK_OUT (0x2 << 8) // (UDP) Bulk OUT -#define AT91C_UDP_EPTYPE_INT_OUT (0x3 << 8) // (UDP) Interrupt OUT -#define AT91C_UDP_EPTYPE_ISO_IN (0x5 << 8) // (UDP) Isochronous IN -#define AT91C_UDP_EPTYPE_BULK_IN (0x6 << 8) // (UDP) Bulk IN -#define AT91C_UDP_EPTYPE_INT_IN (0x7 << 8) // (UDP) Interrupt IN +#define AT91C_UDP_EPTYPE_CTRL (0x0 << 8) // (UDP) Control +#define AT91C_UDP_EPTYPE_ISO_OUT (0x1 << 8) // (UDP) Isochronous OUT +#define AT91C_UDP_EPTYPE_BULK_OUT (0x2 << 8) // (UDP) Bulk OUT +#define AT91C_UDP_EPTYPE_INT_OUT (0x3 << 8) // (UDP) Interrupt OUT +#define AT91C_UDP_EPTYPE_ISO_IN (0x5 << 8) // (UDP) Isochronous IN +#define AT91C_UDP_EPTYPE_BULK_IN (0x6 << 8) // (UDP) Bulk IN +#define AT91C_UDP_EPTYPE_INT_IN (0x7 << 8) // (UDP) Interrupt IN #define AT91C_UDP_DTGLE (0x1 << 11) // (UDP) Data Toggle #define AT91C_UDP_EPEDS (0x1 << 15) // (UDP) Endpoint Enable Disable #define AT91C_UDP_RXBYTECNT (0x7FF << 16) // (UDP) Number Of Bytes Available in the FIFO @@ -2048,178 +2059,183 @@ typedef struct _AT91S_UDP { #define AT91C_TC2_IER (AT91_CAST(AT91_REG *) 0xFFFA00A4) // (TC2) Interrupt Enable Register #define AT91C_TC2_SR (AT91_CAST(AT91_REG *) 0xFFFA00A0) // (TC2) Status Register // ========== Register definition for TCB peripheral ========== -#define AT91C_TCB_BMR (AT91_CAST(AT91_REG *) 0xFFFA00C4) // (TCB) TC Block Mode Register -#define AT91C_TCB_BCR (AT91_CAST(AT91_REG *) 0xFFFA00C0) // (TCB) TC Block Control Register +#define AT91C_TCB_ADDRSIZE (AT91_CAST(AT91_REG *) 0xFFFA00EC) // (TCB) TC ADDRSIZE REGISTER +#define AT91C_TCB_BMR (AT91_CAST(AT91_REG *) 0xFFFA00C4) // (TCB) TC Block Mode Register +#define AT91C_TCB_VER (AT91_CAST(AT91_REG *) 0xFFFA00FC) // (TCB) Version Register +#define AT91C_TCB_FEATURES (AT91_CAST(AT91_REG *) 0xFFFA00F8) // (TCB) TC FEATURES REGISTER +#define AT91C_TCB_IPNAME1 (AT91_CAST(AT91_REG *) 0xFFFA00F0) // (TCB) TC IPNAME1 REGISTER +#define AT91C_TCB_BCR (AT91_CAST(AT91_REG *) 0xFFFA00C0) // (TCB) TC Block Control Register +#define AT91C_TCB_IPNAME2 (AT91_CAST(AT91_REG *) 0xFFFA00F4) // (TCB) TC IPNAME2 REGISTER // ========== Register definition for PWMC_CH3 peripheral ========== -#define AT91C_PWMC_CH3_CUPDR (AT91_CAST(AT91_REG *) 0xFFFCC270) // (PWMC_CH3) Channel Update Register +#define AT91C_PWMC_CH3_CUPDR (AT91_CAST(AT91_REG *) 0xFFFCC270) // (PWMC_CH3) Channel Update Register #define AT91C_PWMC_CH3_Reserved (AT91_CAST(AT91_REG *) 0xFFFCC274) // (PWMC_CH3) Reserved -#define AT91C_PWMC_CH3_CPRDR (AT91_CAST(AT91_REG *) 0xFFFCC268) // (PWMC_CH3) Channel Period Register -#define AT91C_PWMC_CH3_CDTYR (AT91_CAST(AT91_REG *) 0xFFFCC264) // (PWMC_CH3) Channel Duty Cycle Register -#define AT91C_PWMC_CH3_CCNTR (AT91_CAST(AT91_REG *) 0xFFFCC26C) // (PWMC_CH3) Channel Counter Register -#define AT91C_PWMC_CH3_CMR (AT91_CAST(AT91_REG *) 0xFFFCC260) // (PWMC_CH3) Channel Mode Register +#define AT91C_PWMC_CH3_CPRDR (AT91_CAST(AT91_REG *) 0xFFFCC268) // (PWMC_CH3) Channel Period Register +#define AT91C_PWMC_CH3_CDTYR (AT91_CAST(AT91_REG *) 0xFFFCC264) // (PWMC_CH3) Channel Duty Cycle Register +#define AT91C_PWMC_CH3_CCNTR (AT91_CAST(AT91_REG *) 0xFFFCC26C) // (PWMC_CH3) Channel Counter Register +#define AT91C_PWMC_CH3_CMR (AT91_CAST(AT91_REG *) 0xFFFCC260) // (PWMC_CH3) Channel Mode Register // ========== Register definition for PWMC_CH2 peripheral ========== #define AT91C_PWMC_CH2_Reserved (AT91_CAST(AT91_REG *) 0xFFFCC254) // (PWMC_CH2) Reserved -#define AT91C_PWMC_CH2_CMR (AT91_CAST(AT91_REG *) 0xFFFCC240) // (PWMC_CH2) Channel Mode Register -#define AT91C_PWMC_CH2_CCNTR (AT91_CAST(AT91_REG *) 0xFFFCC24C) // (PWMC_CH2) Channel Counter Register -#define AT91C_PWMC_CH2_CPRDR (AT91_CAST(AT91_REG *) 0xFFFCC248) // (PWMC_CH2) Channel Period Register -#define AT91C_PWMC_CH2_CUPDR (AT91_CAST(AT91_REG *) 0xFFFCC250) // (PWMC_CH2) Channel Update Register -#define AT91C_PWMC_CH2_CDTYR (AT91_CAST(AT91_REG *) 0xFFFCC244) // (PWMC_CH2) Channel Duty Cycle Register +#define AT91C_PWMC_CH2_CMR (AT91_CAST(AT91_REG *) 0xFFFCC240) // (PWMC_CH2) Channel Mode Register +#define AT91C_PWMC_CH2_CCNTR (AT91_CAST(AT91_REG *) 0xFFFCC24C) // (PWMC_CH2) Channel Counter Register +#define AT91C_PWMC_CH2_CPRDR (AT91_CAST(AT91_REG *) 0xFFFCC248) // (PWMC_CH2) Channel Period Register +#define AT91C_PWMC_CH2_CUPDR (AT91_CAST(AT91_REG *) 0xFFFCC250) // (PWMC_CH2) Channel Update Register +#define AT91C_PWMC_CH2_CDTYR (AT91_CAST(AT91_REG *) 0xFFFCC244) // (PWMC_CH2) Channel Duty Cycle Register // ========== Register definition for PWMC_CH1 peripheral ========== #define AT91C_PWMC_CH1_Reserved (AT91_CAST(AT91_REG *) 0xFFFCC234) // (PWMC_CH1) Reserved -#define AT91C_PWMC_CH1_CUPDR (AT91_CAST(AT91_REG *) 0xFFFCC230) // (PWMC_CH1) Channel Update Register -#define AT91C_PWMC_CH1_CPRDR (AT91_CAST(AT91_REG *) 0xFFFCC228) // (PWMC_CH1) Channel Period Register -#define AT91C_PWMC_CH1_CCNTR (AT91_CAST(AT91_REG *) 0xFFFCC22C) // (PWMC_CH1) Channel Counter Register -#define AT91C_PWMC_CH1_CDTYR (AT91_CAST(AT91_REG *) 0xFFFCC224) // (PWMC_CH1) Channel Duty Cycle Register -#define AT91C_PWMC_CH1_CMR (AT91_CAST(AT91_REG *) 0xFFFCC220) // (PWMC_CH1) Channel Mode Register +#define AT91C_PWMC_CH1_CUPDR (AT91_CAST(AT91_REG *) 0xFFFCC230) // (PWMC_CH1) Channel Update Register +#define AT91C_PWMC_CH1_CPRDR (AT91_CAST(AT91_REG *) 0xFFFCC228) // (PWMC_CH1) Channel Period Register +#define AT91C_PWMC_CH1_CCNTR (AT91_CAST(AT91_REG *) 0xFFFCC22C) // (PWMC_CH1) Channel Counter Register +#define AT91C_PWMC_CH1_CDTYR (AT91_CAST(AT91_REG *) 0xFFFCC224) // (PWMC_CH1) Channel Duty Cycle Register +#define AT91C_PWMC_CH1_CMR (AT91_CAST(AT91_REG *) 0xFFFCC220) // (PWMC_CH1) Channel Mode Register // ========== Register definition for PWMC_CH0 peripheral ========== #define AT91C_PWMC_CH0_Reserved (AT91_CAST(AT91_REG *) 0xFFFCC214) // (PWMC_CH0) Reserved -#define AT91C_PWMC_CH0_CPRDR (AT91_CAST(AT91_REG *) 0xFFFCC208) // (PWMC_CH0) Channel Period Register -#define AT91C_PWMC_CH0_CDTYR (AT91_CAST(AT91_REG *) 0xFFFCC204) // (PWMC_CH0) Channel Duty Cycle Register -#define AT91C_PWMC_CH0_CMR (AT91_CAST(AT91_REG *) 0xFFFCC200) // (PWMC_CH0) Channel Mode Register -#define AT91C_PWMC_CH0_CUPDR (AT91_CAST(AT91_REG *) 0xFFFCC210) // (PWMC_CH0) Channel Update Register -#define AT91C_PWMC_CH0_CCNTR (AT91_CAST(AT91_REG *) 0xFFFCC20C) // (PWMC_CH0) Channel Counter Register +#define AT91C_PWMC_CH0_CPRDR (AT91_CAST(AT91_REG *) 0xFFFCC208) // (PWMC_CH0) Channel Period Register +#define AT91C_PWMC_CH0_CDTYR (AT91_CAST(AT91_REG *) 0xFFFCC204) // (PWMC_CH0) Channel Duty Cycle Register +#define AT91C_PWMC_CH0_CMR (AT91_CAST(AT91_REG *) 0xFFFCC200) // (PWMC_CH0) Channel Mode Register +#define AT91C_PWMC_CH0_CUPDR (AT91_CAST(AT91_REG *) 0xFFFCC210) // (PWMC_CH0) Channel Update Register +#define AT91C_PWMC_CH0_CCNTR (AT91_CAST(AT91_REG *) 0xFFFCC20C) // (PWMC_CH0) Channel Counter Register // ========== Register definition for PWMC peripheral ========== -#define AT91C_PWMC_IDR (AT91_CAST(AT91_REG *) 0xFFFCC014) // (PWMC) PWMC Interrupt Disable Register -#define AT91C_PWMC_DIS (AT91_CAST(AT91_REG *) 0xFFFCC008) // (PWMC) PWMC Disable Register -#define AT91C_PWMC_IER (AT91_CAST(AT91_REG *) 0xFFFCC010) // (PWMC) PWMC Interrupt Enable Register -#define AT91C_PWMC_VR (AT91_CAST(AT91_REG *) 0xFFFCC0FC) // (PWMC) PWMC Version Register -#define AT91C_PWMC_ISR (AT91_CAST(AT91_REG *) 0xFFFCC01C) // (PWMC) PWMC Interrupt Status Register -#define AT91C_PWMC_SR (AT91_CAST(AT91_REG *) 0xFFFCC00C) // (PWMC) PWMC Status Register -#define AT91C_PWMC_IMR (AT91_CAST(AT91_REG *) 0xFFFCC018) // (PWMC) PWMC Interrupt Mask Register -#define AT91C_PWMC_MR (AT91_CAST(AT91_REG *) 0xFFFCC000) // (PWMC) PWMC Mode Register -#define AT91C_PWMC_ENA (AT91_CAST(AT91_REG *) 0xFFFCC004) // (PWMC) PWMC Enable Register +#define AT91C_PWMC_IDR (AT91_CAST(AT91_REG *) 0xFFFCC014) // (PWMC) PWMC Interrupt Disable Register +#define AT91C_PWMC_DIS (AT91_CAST(AT91_REG *) 0xFFFCC008) // (PWMC) PWMC Disable Register +#define AT91C_PWMC_IER (AT91_CAST(AT91_REG *) 0xFFFCC010) // (PWMC) PWMC Interrupt Enable Register +#define AT91C_PWMC_VR (AT91_CAST(AT91_REG *) 0xFFFCC0FC) // (PWMC) PWMC Version Register +#define AT91C_PWMC_ISR (AT91_CAST(AT91_REG *) 0xFFFCC01C) // (PWMC) PWMC Interrupt Status Register +#define AT91C_PWMC_SR (AT91_CAST(AT91_REG *) 0xFFFCC00C) // (PWMC) PWMC Status Register +#define AT91C_PWMC_IMR (AT91_CAST(AT91_REG *) 0xFFFCC018) // (PWMC) PWMC Interrupt Mask Register +#define AT91C_PWMC_MR (AT91_CAST(AT91_REG *) 0xFFFCC000) // (PWMC) PWMC Mode Register +#define AT91C_PWMC_ENA (AT91_CAST(AT91_REG *) 0xFFFCC004) // (PWMC) PWMC Enable Register // ========== Register definition for UDP peripheral ========== -#define AT91C_UDP_IMR (AT91_CAST(AT91_REG *) 0xFFFB0018) // (UDP) Interrupt Mask Register -#define AT91C_UDP_FADDR (AT91_CAST(AT91_REG *) 0xFFFB0008) // (UDP) Function Address Register -#define AT91C_UDP_NUM (AT91_CAST(AT91_REG *) 0xFFFB0000) // (UDP) Frame Number Register -#define AT91C_UDP_FDR (AT91_CAST(AT91_REG *) 0xFFFB0050) // (UDP) Endpoint FIFO Data Register -#define AT91C_UDP_ISR (AT91_CAST(AT91_REG *) 0xFFFB001C) // (UDP) Interrupt Status Register -#define AT91C_UDP_CSR (AT91_CAST(AT91_REG *) 0xFFFB0030) // (UDP) Endpoint Control and Status Register -#define AT91C_UDP_IDR (AT91_CAST(AT91_REG *) 0xFFFB0014) // (UDP) Interrupt Disable Register -#define AT91C_UDP_ICR (AT91_CAST(AT91_REG *) 0xFFFB0020) // (UDP) Interrupt Clear Register -#define AT91C_UDP_RSTEP (AT91_CAST(AT91_REG *) 0xFFFB0028) // (UDP) Reset Endpoint Register -#define AT91C_UDP_TXVC (AT91_CAST(AT91_REG *) 0xFFFB0074) // (UDP) Transceiver Control Register -#define AT91C_UDP_GLBSTATE (AT91_CAST(AT91_REG *) 0xFFFB0004) // (UDP) Global State Register -#define AT91C_UDP_IER (AT91_CAST(AT91_REG *) 0xFFFB0010) // (UDP) Interrupt Enable Register +#define AT91C_UDP_IMR (AT91_CAST(AT91_REG *) 0xFFFB0018) // (UDP) Interrupt Mask Register +#define AT91C_UDP_FADDR (AT91_CAST(AT91_REG *) 0xFFFB0008) // (UDP) Function Address Register +#define AT91C_UDP_NUM (AT91_CAST(AT91_REG *) 0xFFFB0000) // (UDP) Frame Number Register +#define AT91C_UDP_FDR (AT91_CAST(AT91_REG *) 0xFFFB0050) // (UDP) Endpoint FIFO Data Register +#define AT91C_UDP_ISR (AT91_CAST(AT91_REG *) 0xFFFB001C) // (UDP) Interrupt Status Register +#define AT91C_UDP_CSR (AT91_CAST(AT91_REG *) 0xFFFB0030) // (UDP) Endpoint Control and Status Register +#define AT91C_UDP_IDR (AT91_CAST(AT91_REG *) 0xFFFB0014) // (UDP) Interrupt Disable Register +#define AT91C_UDP_ICR (AT91_CAST(AT91_REG *) 0xFFFB0020) // (UDP) Interrupt Clear Register +#define AT91C_UDP_RSTEP (AT91_CAST(AT91_REG *) 0xFFFB0028) // (UDP) Reset Endpoint Register +#define AT91C_UDP_TXVC (AT91_CAST(AT91_REG *) 0xFFFB0074) // (UDP) Transceiver Control Register +#define AT91C_UDP_GLBSTATE (AT91_CAST(AT91_REG *) 0xFFFB0004) // (UDP) Global State Register +#define AT91C_UDP_IER (AT91_CAST(AT91_REG *) 0xFFFB0010) // (UDP) Interrupt Enable Register // ***************************************************************************** // PIO DEFINITIONS FOR AT91SAM7S512 // ***************************************************************************** -#define AT91C_PIO_PA0 (1 << 0) // Pin Controlled by PA0 -#define AT91C_PA0_PWM0 (AT91C_PIO_PA0) // PWM Channel 0 -#define AT91C_PA0_TIOA0 (AT91C_PIO_PA0) // Timer Counter 0 Multipurpose Timer I/O Pin A -#define AT91C_PIO_PA1 (1 << 1) // Pin Controlled by PA1 -#define AT91C_PA1_PWM1 (AT91C_PIO_PA1) // PWM Channel 1 -#define AT91C_PA1_TIOB0 (AT91C_PIO_PA1) // Timer Counter 0 Multipurpose Timer I/O Pin B -#define AT91C_PIO_PA2 (1 << 2) // Pin Controlled by PA2 -#define AT91C_PA2_PWM2 (AT91C_PIO_PA2) // PWM Channel 2 -#define AT91C_PA2_SCK0 (AT91C_PIO_PA2) // USART 0 Serial Clock -#define AT91C_PIO_PA3 (1 << 3) // Pin Controlled by PA3 -#define AT91C_PA3_TWD (AT91C_PIO_PA3) // TWI Two-wire Serial Data -#define AT91C_PA3_NPCS3 (AT91C_PIO_PA3) // SPI Peripheral Chip Select 3 -#define AT91C_PIO_PA4 (1 << 4) // Pin Controlled by PA4 -#define AT91C_PA4_TWCK (AT91C_PIO_PA4) // TWI Two-wire Serial Clock -#define AT91C_PA4_TCLK0 (AT91C_PIO_PA4) // Timer Counter 0 external clock input -#define AT91C_PIO_PA5 (1 << 5) // Pin Controlled by PA5 -#define AT91C_PA5_RXD0 (AT91C_PIO_PA5) // USART 0 Receive Data -#define AT91C_PA5_NPCS3 (AT91C_PIO_PA5) // SPI Peripheral Chip Select 3 -#define AT91C_PIO_PA6 (1 << 6) // Pin Controlled by PA6 -#define AT91C_PA6_TXD0 (AT91C_PIO_PA6) // USART 0 Transmit Data -#define AT91C_PA6_PCK0 (AT91C_PIO_PA6) // PMC Programmable Clock Output 0 -#define AT91C_PIO_PA7 (1 << 7) // Pin Controlled by PA7 -#define AT91C_PA7_RTS0 (AT91C_PIO_PA7) // USART 0 Ready To Send -#define AT91C_PA7_PWM3 (AT91C_PIO_PA7) // PWM Channel 3 -#define AT91C_PIO_PA8 (1 << 8) // Pin Controlled by PA8 -#define AT91C_PA8_CTS0 (AT91C_PIO_PA8) // USART 0 Clear To Send -#define AT91C_PA8_ADTRG (AT91C_PIO_PA8) // ADC External Trigger -#define AT91C_PIO_PA9 (1 << 9) // Pin Controlled by PA9 -#define AT91C_PA9_DRXD (AT91C_PIO_PA9) // DBGU Debug Receive Data -#define AT91C_PA9_NPCS1 (AT91C_PIO_PA9) // SPI Peripheral Chip Select 1 -#define AT91C_PIO_PA10 (1 << 10) // Pin Controlled by PA10 +#define AT91C_PIO_PA0 (1 << 0) // Pin Controlled by PA0 +#define AT91C_PA0_PWM0 (AT91C_PIO_PA0) // PWM Channel 0 +#define AT91C_PA0_TIOA0 (AT91C_PIO_PA0) // Timer Counter 0 Multipurpose Timer I/O Pin A +#define AT91C_PIO_PA1 (1 << 1) // Pin Controlled by PA1 +#define AT91C_PA1_PWM1 (AT91C_PIO_PA1) // PWM Channel 1 +#define AT91C_PA1_TIOB0 (AT91C_PIO_PA1) // Timer Counter 0 Multipurpose Timer I/O Pin B +#define AT91C_PIO_PA2 (1 << 2) // Pin Controlled by PA2 +#define AT91C_PA2_PWM2 (AT91C_PIO_PA2) // PWM Channel 2 +#define AT91C_PA2_SCK0 (AT91C_PIO_PA2) // USART 0 Serial Clock +#define AT91C_PIO_PA3 (1 << 3) // Pin Controlled by PA3 +#define AT91C_PA3_TWD (AT91C_PIO_PA3) // TWI Two-wire Serial Data +#define AT91C_PA3_NPCS3 (AT91C_PIO_PA3) // SPI Peripheral Chip Select 3 +#define AT91C_PIO_PA4 (1 << 4) // Pin Controlled by PA4 +#define AT91C_PA4_TWCK (AT91C_PIO_PA4) // TWI Two-wire Serial Clock +#define AT91C_PA4_TCLK0 (AT91C_PIO_PA4) // Timer Counter 0 external clock input +#define AT91C_PIO_PA5 (1 << 5) // Pin Controlled by PA5 +#define AT91C_PA5_RXD0 (AT91C_PIO_PA5) // USART 0 Receive Data +#define AT91C_PA5_NPCS3 (AT91C_PIO_PA5) // SPI Peripheral Chip Select 3 +#define AT91C_PIO_PA6 (1 << 6) // Pin Controlled by PA6 +#define AT91C_PA6_TXD0 (AT91C_PIO_PA6) // USART 0 Transmit Data +#define AT91C_PA6_PCK0 (AT91C_PIO_PA6) // PMC Programmable Clock Output 0 +#define AT91C_PIO_PA7 (1 << 7) // Pin Controlled by PA7 +#define AT91C_PA7_RTS0 (AT91C_PIO_PA7) // USART 0 Ready To Send +#define AT91C_PA7_PWM3 (AT91C_PIO_PA7) // PWM Channel 3 +#define AT91C_PIO_PA8 (1 << 8) // Pin Controlled by PA8 +#define AT91C_PA8_CTS0 (AT91C_PIO_PA8) // USART 0 Clear To Send +#define AT91C_PA8_ADTRG (AT91C_PIO_PA8) // ADC External Trigger +#define AT91C_PIO_PA9 (1 << 9) // Pin Controlled by PA9 +#define AT91C_PA9_DRXD (AT91C_PIO_PA9) // DBGU Debug Receive Data +#define AT91C_PA9_NPCS1 (AT91C_PIO_PA9) // SPI Peripheral Chip Select 1 +#define AT91C_PIO_PA10 (1 << 10) // Pin Controlled by PA10 #define AT91C_PA10_DTXD (AT91C_PIO_PA10) // DBGU Debug Transmit Data #define AT91C_PA10_NPCS2 (AT91C_PIO_PA10) // SPI Peripheral Chip Select 2 -#define AT91C_PIO_PA11 (1 << 11) // Pin Controlled by PA11 +#define AT91C_PIO_PA11 (1 << 11) // Pin Controlled by PA11 #define AT91C_PA11_NPCS0 (AT91C_PIO_PA11) // SPI Peripheral Chip Select 0 #define AT91C_PA11_PWM0 (AT91C_PIO_PA11) // PWM Channel 0 -#define AT91C_PIO_PA12 (1 << 12) // Pin Controlled by PA12 +#define AT91C_PIO_PA12 (1 << 12) // Pin Controlled by PA12 #define AT91C_PA12_MISO (AT91C_PIO_PA12) // SPI Master In Slave #define AT91C_PA12_PWM1 (AT91C_PIO_PA12) // PWM Channel 1 -#define AT91C_PIO_PA13 (1 << 13) // Pin Controlled by PA13 +#define AT91C_PIO_PA13 (1 << 13) // Pin Controlled by PA13 #define AT91C_PA13_MOSI (AT91C_PIO_PA13) // SPI Master Out Slave #define AT91C_PA13_PWM2 (AT91C_PIO_PA13) // PWM Channel 2 -#define AT91C_PIO_PA14 (1 << 14) // Pin Controlled by PA14 +#define AT91C_PIO_PA14 (1 << 14) // Pin Controlled by PA14 #define AT91C_PA14_SPCK (AT91C_PIO_PA14) // SPI Serial Clock #define AT91C_PA14_PWM3 (AT91C_PIO_PA14) // PWM Channel 3 -#define AT91C_PIO_PA15 (1 << 15) // Pin Controlled by PA15 +#define AT91C_PIO_PA15 (1 << 15) // Pin Controlled by PA15 #define AT91C_PA15_TF (AT91C_PIO_PA15) // SSC Transmit Frame Sync #define AT91C_PA15_TIOA1 (AT91C_PIO_PA15) // Timer Counter 1 Multipurpose Timer I/O Pin A -#define AT91C_PIO_PA16 (1 << 16) // Pin Controlled by PA16 +#define AT91C_PIO_PA16 (1 << 16) // Pin Controlled by PA16 #define AT91C_PA16_TK (AT91C_PIO_PA16) // SSC Transmit Clock #define AT91C_PA16_TIOB1 (AT91C_PIO_PA16) // Timer Counter 1 Multipurpose Timer I/O Pin B -#define AT91C_PIO_PA17 (1 << 17) // Pin Controlled by PA17 +#define AT91C_PIO_PA17 (1 << 17) // Pin Controlled by PA17 #define AT91C_PA17_TD (AT91C_PIO_PA17) // SSC Transmit data #define AT91C_PA17_PCK1 (AT91C_PIO_PA17) // PMC Programmable Clock Output 1 -#define AT91C_PIO_PA18 (1 << 18) // Pin Controlled by PA18 +#define AT91C_PIO_PA18 (1 << 18) // Pin Controlled by PA18 #define AT91C_PA18_RD (AT91C_PIO_PA18) // SSC Receive Data #define AT91C_PA18_PCK2 (AT91C_PIO_PA18) // PMC Programmable Clock Output 2 -#define AT91C_PIO_PA19 (1 << 19) // Pin Controlled by PA19 +#define AT91C_PIO_PA19 (1 << 19) // Pin Controlled by PA19 #define AT91C_PA19_RK (AT91C_PIO_PA19) // SSC Receive Clock #define AT91C_PA19_FIQ (AT91C_PIO_PA19) // AIC Fast Interrupt Input -#define AT91C_PIO_PA20 (1 << 20) // Pin Controlled by PA20 +#define AT91C_PIO_PA20 (1 << 20) // Pin Controlled by PA20 #define AT91C_PA20_RF (AT91C_PIO_PA20) // SSC Receive Frame Sync #define AT91C_PA20_IRQ0 (AT91C_PIO_PA20) // External Interrupt 0 -#define AT91C_PIO_PA21 (1 << 21) // Pin Controlled by PA21 +#define AT91C_PIO_PA21 (1 << 21) // Pin Controlled by PA21 #define AT91C_PA21_RXD1 (AT91C_PIO_PA21) // USART 1 Receive Data #define AT91C_PA21_PCK1 (AT91C_PIO_PA21) // PMC Programmable Clock Output 1 -#define AT91C_PIO_PA22 (1 << 22) // Pin Controlled by PA22 +#define AT91C_PIO_PA22 (1 << 22) // Pin Controlled by PA22 #define AT91C_PA22_TXD1 (AT91C_PIO_PA22) // USART 1 Transmit Data #define AT91C_PA22_NPCS3 (AT91C_PIO_PA22) // SPI Peripheral Chip Select 3 -#define AT91C_PIO_PA23 (1 << 23) // Pin Controlled by PA23 +#define AT91C_PIO_PA23 (1 << 23) // Pin Controlled by PA23 #define AT91C_PA23_SCK1 (AT91C_PIO_PA23) // USART 1 Serial Clock #define AT91C_PA23_PWM0 (AT91C_PIO_PA23) // PWM Channel 0 -#define AT91C_PIO_PA24 (1 << 24) // Pin Controlled by PA24 +#define AT91C_PIO_PA24 (1 << 24) // Pin Controlled by PA24 #define AT91C_PA24_RTS1 (AT91C_PIO_PA24) // USART 1 Ready To Send #define AT91C_PA24_PWM1 (AT91C_PIO_PA24) // PWM Channel 1 -#define AT91C_PIO_PA25 (1 << 25) // Pin Controlled by PA25 +#define AT91C_PIO_PA25 (1 << 25) // Pin Controlled by PA25 #define AT91C_PA25_CTS1 (AT91C_PIO_PA25) // USART 1 Clear To Send #define AT91C_PA25_PWM2 (AT91C_PIO_PA25) // PWM Channel 2 -#define AT91C_PIO_PA26 (1 << 26) // Pin Controlled by PA26 +#define AT91C_PIO_PA26 (1 << 26) // Pin Controlled by PA26 #define AT91C_PA26_DCD1 (AT91C_PIO_PA26) // USART 1 Data Carrier Detect #define AT91C_PA26_TIOA2 (AT91C_PIO_PA26) // Timer Counter 2 Multipurpose Timer I/O Pin A -#define AT91C_PIO_PA27 (1 << 27) // Pin Controlled by PA27 +#define AT91C_PIO_PA27 (1 << 27) // Pin Controlled by PA27 #define AT91C_PA27_DTR1 (AT91C_PIO_PA27) // USART 1 Data Terminal ready #define AT91C_PA27_TIOB2 (AT91C_PIO_PA27) // Timer Counter 2 Multipurpose Timer I/O Pin B -#define AT91C_PIO_PA28 (1 << 28) // Pin Controlled by PA28 +#define AT91C_PIO_PA28 (1 << 28) // Pin Controlled by PA28 #define AT91C_PA28_DSR1 (AT91C_PIO_PA28) // USART 1 Data Set ready #define AT91C_PA28_TCLK1 (AT91C_PIO_PA28) // Timer Counter 1 external clock input -#define AT91C_PIO_PA29 (1 << 29) // Pin Controlled by PA29 +#define AT91C_PIO_PA29 (1 << 29) // Pin Controlled by PA29 #define AT91C_PA29_RI1 (AT91C_PIO_PA29) // USART 1 Ring Indicator #define AT91C_PA29_TCLK2 (AT91C_PIO_PA29) // Timer Counter 2 external clock input -#define AT91C_PIO_PA30 (1 << 30) // Pin Controlled by PA30 +#define AT91C_PIO_PA30 (1 << 30) // Pin Controlled by PA30 #define AT91C_PA30_IRQ1 (AT91C_PIO_PA30) // External Interrupt 1 #define AT91C_PA30_NPCS2 (AT91C_PIO_PA30) // SPI Peripheral Chip Select 2 -#define AT91C_PIO_PA31 (1u << 31) // Pin Controlled by PA31 +#define AT91C_PIO_PA31 (1u << 31) // Pin Controlled by PA31 #define AT91C_PA31_NPCS1 (AT91C_PIO_PA31) // SPI Peripheral Chip Select 1 #define AT91C_PA31_PCK2 (AT91C_PIO_PA31) // PMC Programmable Clock Output 2 // ***************************************************************************** // PERIPHERAL ID DEFINITIONS FOR AT91SAM7S512 // ***************************************************************************** -#define AT91C_ID_FIQ ( 0) // Advanced Interrupt Controller (FIQ) -#define AT91C_ID_SYS ( 1) // System Peripheral -#define AT91C_ID_PIOA ( 2) // Parallel IO Controller -#define AT91C_ID_3_Reserved ( 3) // Reserved -#define AT91C_ID_ADC ( 4) // Analog-to-Digital Converter -#define AT91C_ID_SPI ( 5) // Serial Peripheral Interface -#define AT91C_ID_US0 ( 6) // USART 0 -#define AT91C_ID_US1 ( 7) // USART 1 -#define AT91C_ID_SSC ( 8) // Serial Synchronous Controller -#define AT91C_ID_TWI ( 9) // Two-Wire Interface -#define AT91C_ID_PWMC (10) // PWM Controller -#define AT91C_ID_UDP (11) // USB Device Port -#define AT91C_ID_TC0 (12) // Timer Counter 0 -#define AT91C_ID_TC1 (13) // Timer Counter 1 -#define AT91C_ID_TC2 (14) // Timer Counter 2 +#define AT91C_ID_FIQ ( 0) // Advanced Interrupt Controller (FIQ) +#define AT91C_ID_SYS ( 1) // System Peripheral +#define AT91C_ID_PIOA ( 2) // Parallel IO Controller +#define AT91C_ID_3_Reserved ( 3) // Reserved +#define AT91C_ID_ADC ( 4) // Analog-to-Digital Converter +#define AT91C_ID_SPI ( 5) // Serial Peripheral Interface +#define AT91C_ID_US0 ( 6) // USART 0 +#define AT91C_ID_US1 ( 7) // USART 1 +#define AT91C_ID_SSC ( 8) // Serial Synchronous Controller +#define AT91C_ID_TWI ( 9) // Two-Wire Interface +#define AT91C_ID_PWMC (10) // PWM Controller +#define AT91C_ID_UDP (11) // USB Device Port +#define AT91C_ID_TC0 (12) // Timer Counter 0 +#define AT91C_ID_TC1 (13) // Timer Counter 1 +#define AT91C_ID_TC2 (14) // Timer Counter 2 #define AT91C_ID_15_Reserved (15) // Reserved #define AT91C_ID_16_Reserved (16) // Reserved #define AT91C_ID_17_Reserved (17) // Reserved @@ -2235,8 +2251,8 @@ typedef struct _AT91S_UDP { #define AT91C_ID_27_Reserved (27) // Reserved #define AT91C_ID_28_Reserved (28) // Reserved #define AT91C_ID_29_Reserved (29) // Reserved -#define AT91C_ID_IRQ0 (30) // Advanced Interrupt Controller (IRQ0) -#define AT91C_ID_IRQ1 (31) // Advanced Interrupt Controller (IRQ1) +#define AT91C_ID_IRQ0 (30) // Advanced Interrupt Controller (IRQ0) +#define AT91C_ID_IRQ1 (31) // Advanced Interrupt Controller (IRQ1) #define AT91C_ALL_INT (0xC0007FF7) // ALL VALID INTERRUPTS // ***************************************************************************** @@ -2283,14 +2299,14 @@ typedef struct _AT91S_UDP { // MEMORY MAPPING DEFINITIONS FOR AT91SAM7S512 // ***************************************************************************** // ISRAM -#define AT91C_ISRAM (0x00200000) // Internal SRAM base address -#define AT91C_ISRAM_SIZE (0x00010000) // Internal SRAM size in byte (64 Kbytes) +#define AT91C_ISRAM (0x00200000) // Internal SRAM base address +#define AT91C_ISRAM_SIZE (0x00010000) // Internal SRAM size in byte (64 Kbytes) // IFLASH -#define AT91C_IFLASH (0x00100000) // Internal FLASH base address -#define AT91C_IFLASH_SIZE (0x00080000) // Internal FLASH size in byte (512 Kbytes) -#define AT91C_IFLASH_PAGE_SIZE (256) // Internal FLASH Page Size: 256 bytes -#define AT91C_IFLASH_LOCK_REGION_SIZE (16384) // Internal FLASH Lock Region Size: 16 Kbytes -#define AT91C_IFLASH_NB_OF_PAGES (2048) // Internal FLASH Number of Pages: 2048 bytes +#define AT91C_IFLASH (0x00100000) // Internal FLASH base address +#define AT91C_IFLASH_SIZE (0x00080000) // Internal FLASH size in byte (512 Kbytes) +#define AT91C_IFLASH_PAGE_SIZE (256) // Internal FLASH Page Size: 256 bytes +#define AT91C_IFLASH_LOCK_REGION_SIZE (16384) // Internal FLASH Lock Region Size: 16 Kbytes +#define AT91C_IFLASH_NB_OF_PAGES (2048) // Internal FLASH Number of Pages: 2048 bytes #define AT91C_IFLASH_NB_OF_LOCK_BITS (32) // Internal FLASH Number of Lock Bits: 32 bytes #endif From 61765cc9339df6be1658963990fa83784f5d50d2 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 29 Aug 2023 11:24:56 +0200 Subject: [PATCH 254/299] More compact notation --- fpga/lo_read.v | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/fpga/lo_read.v b/fpga/lo_read.v index c51857eb4..87279e8ec 100644 --- a/fpga/lo_read.v +++ b/fpga/lo_read.v @@ -54,10 +54,7 @@ begin if ((pck_cnt == 8'd7) && !pck_divclk) to_arm_shiftreg <= adc_d; else - begin - to_arm_shiftreg[7:1] <= to_arm_shiftreg[6:0]; - to_arm_shiftreg[0] <= 1'b0; - end + to_arm_shiftreg <= {to_arm_shiftreg[6:0], 1'b0}; end // ADC samples on falling edge of adc_clk, data available on the rising edge From 762c942e953b8f2694fb919f1e7b924f8808f646 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 29 Aug 2023 11:26:43 +0200 Subject: [PATCH 255/299] Redundant check A 3 bit counter will naturally roll over to zero on overflow, there is no need to explicitly check for max value and manually reset to zero --- fpga/hi_sniffer.v | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/fpga/hi_sniffer.v b/fpga/hi_sniffer.v index 11781ca5a..8cfb0fe9a 100644 --- a/fpga/hi_sniffer.v +++ b/fpga/hi_sniffer.v @@ -48,10 +48,7 @@ assign ssp_din = adc_d_out[0]; always @(posedge ssp_clk) begin - if(ssp_cnt[2:0] == 3'd7) - ssp_cnt[2:0] <= 3'd0; - else - ssp_cnt <= ssp_cnt + 1; + ssp_cnt <= ssp_cnt + 1; if(ssp_cnt[2:0] == 3'b000) // set frame length begin From b70092efa2c97433cec326373e839b7c68b41847 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 29 Aug 2023 11:26:51 +0200 Subject: [PATCH 256/299] Typo --- doc/clocks.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/clocks.md b/doc/clocks.md index b2ba3c995..9e0384d23 100644 --- a/doc/clocks.md +++ b/doc/clocks.md @@ -49,7 +49,7 @@ Basic units of time you will run into in the RFID world. 125 kHz = 1/ 125 000 = 8 micro seconds ``` -Given these units the following clocks used by Proxmark3 wil make more sense. +Given these units the following clocks used by Proxmark3 will make more sense. Like the SSP Clock running at 3.39 MHz. 3.39 MHz = 1 / 3 390 000 = 294,98 nano seconds = 0,2949 micro seconds From 12efd96173d4258e19e3d521a129949abd20a9cb Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 29 Aug 2023 11:27:32 +0200 Subject: [PATCH 257/299] Remove define for FPGA_MAJOR_MODE_HF_FSK_READER since there in no support for it in FPGA --- armsrc/fpgaloader.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/armsrc/fpgaloader.c b/armsrc/fpgaloader.c index 4d687f338..fefc16029 100644 --- a/armsrc/fpgaloader.c +++ b/armsrc/fpgaloader.c @@ -162,8 +162,7 @@ void FpgaSetupSsc(uint16_t fpga_mode) { // 8, 16 or 32 bits per transfer, no loopback, MSB first, 1 transfer per sync // pulse, no output sync - if (((fpga_mode & FPGA_MAJOR_MODE_MASK) == FPGA_MAJOR_MODE_HF_READER || - (fpga_mode & FPGA_MAJOR_MODE_MASK) == FPGA_MAJOR_MODE_HF_FSK_READER) && + if (((fpga_mode & FPGA_MAJOR_MODE_MASK) == FPGA_MAJOR_MODE_HF_READER ) && (FpgaGetCurrent() == FPGA_BITSTREAM_HF || FpgaGetCurrent() == FPGA_BITSTREAM_HF_15)) { AT91C_BASE_SSC->SSC_RFMR = SSC_FRAME_MODE_BITS_IN_WORD(16) | AT91C_SSC_MSBF | SSC_FRAME_MODE_WORDS_PER_TRANSFER(0); } else { From b46e1cb556cdb0e3107a0d91196d37ff3ac3965a Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 29 Aug 2023 11:27:50 +0200 Subject: [PATCH 258/299] Fix BUGBUG in fpgaloader.h, realign fpga\define.v with armsrc\fpgaloader.h --- armsrc/fpgaloader.h | 180 ++++++++++++++++++++++++++------------------ 1 file changed, 107 insertions(+), 73 deletions(-) diff --git a/armsrc/fpgaloader.h b/armsrc/fpgaloader.h index a1869d5da..b345e34f2 100644 --- a/armsrc/fpgaloader.h +++ b/armsrc/fpgaloader.h @@ -1,5 +1,4 @@ //----------------------------------------------------------------------------- -// Copyright (C) Jonathan Westhues, April 2006 // Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. // // This program is free software: you can redistribute it and/or modify @@ -32,80 +31,116 @@ #define FPGA_BITSTREAM_HF_15 4 /* - Communication between ARM / FPGA is done inside armsrc/fpgaloader.c (function FpgaSendCommand) - Send 16 bit command / data pair to FPGA + Communication between ARM / FPGA is done inside armsrc/fpgaloader.c see: function FpgaSendCommand() + Send 16 bit command / data pair to FPGA with the bit format: - BUGBUG -- Conflicts with information in ../fpga/define.v ++------ frame layout circa 2020 ------------------+ +| 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | ++-------------------------------------------------+ +| C C C C M M M M P P P P P P P P | C = FPGA_CMD_SET_CONFREG, M = FPGA_MAJOR_MODE_*, P = FPGA_LF_* or FPGA_HF_* parameter +| C C C C D D D D D D D D | C = FPGA_CMD_SET_DIVISOR, D = divisor +| C C C C T T T T T T T T | C = FPGA_CMD_SET_EDGE_DETECT_THRESHOLD, T = threshold +| C C C C E | C = FPGA_CMD_TRACE_ENABLE, E=0 off, E=1 on ++-------------------------------------------------+ - The bit format is: C3 C2 C1 C0 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 - where - C is 4bit command - D is 12bit data ++------ frame layout current ---------------------+ +| 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | ++-------------------------------------------------+ +| C C C C M M M P P P P P P | C = FPGA_CMD_SET_CONFREG, M = FPGA_MAJOR_MODE_*, P = FPGA_LF_* or FPGA_HF_* parameter +| C C C C D D D D D D D D | C = FPGA_CMD_SET_DIVISOR, D = divisor +| C C C C T T T T T T T T | C = FPGA_CMD_SET_EDGE_DETECT_THRESHOLD, T = threshold +| C C C C E | C = FPGA_CMD_TRACE_ENABLE, E=0 off, E=1 on ++-------------------------------------------------+ + + shift_reg receive this 16bit frame + + LF command + ---------- + shift_reg[15:12] == 4bit command + LF has three commands (FPGA_CMD_SET_CONFREG, FPGA_CMD_SET_DIVISOR, FPGA_CMD_SET_EDGE_DETECT_THRESHOLD) + Current commands uses only 2bits. We have room for up to 4bits of commands total (7). + + LF data + ------- + shift_reg[11:0] == 12bit data + lf data is divided into MAJOR MODES and configuration values. + + The major modes uses 3bits (0,1,2,3,7 | 000, 001, 010, 011, 111) + 000 FPGA_MAJOR_MODE_LF_READER = Act as LF reader (modulate) + 001 FPGA_MAJOR_MODE_LF_EDGE_DETECT = Simulate LF + 010 FPGA_MAJOR_MODE_LF_PASSTHRU = Passthrough mode, CROSS_LO line connected to SSP_DIN. SSP_DOUT logic level controls if we modulate / listening + 011 FPGA_MAJOR_MODE_LF_ADC = refactor hitag2, clear ADC sampling + 111 FPGA_MAJOR_MODE_OFF = turn off sampling. + + Each one of this major modes can have options. Currently these two major modes uses options. + - FPGA_MAJOR_MODE_LF_READER + - FPGA_MAJOR_MODE_LF_EDGE_DETECT + + FPGA_MAJOR_MODE_LF_READER + ------------------------------------- + lf_field = 1bit (FPGA_LF_ADC_READER_FIELD) + + You can send FPGA_CMD_SET_DIVISOR to set with FREQUENCY the fpga should sample at + divisor = 8bits shift_reg[7:0] + + FPGA_MAJOR_MODE_LF_EDGE_DETECT + ------------------------------------------ + lf_ed_toggle_mode = 1bits + lf_ed_threshold = 8bits threshold defaults to 127 + + You can send FPGA_CMD_SET_EDGE_DETECT_THRESHOLD to set a custom threshold + lf_ed_threshold = 8bits threshold value. + + conf_word 12bits + conf_word[7:5] = 3bit major mode. + conf_word[0] = 1bit lf_field + conf_word[1] = 1bit lf_ed_toggle_mode + conf_word[7:0] = 8bit divisor + conf_word[7:0] = 8bit threshold ------+--------- frame layout -------------------- -bit | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ------+------------------------------------------- -cmd | x x x x -major| x x x -opt | x x -divi | x x x x x x x x -thres| x x x x x x x x ------+------------------------------------------- */ - -// Definitions for the FPGA commands. -// BOTH HF / LF -#define FPGA_CMD_SET_CONFREG (1<<12) // C - -// LF -#define FPGA_CMD_SET_DIVISOR (2<<12) // C -#define FPGA_CMD_SET_USER_BYTE1 (3<<12) // C - -// HF -#define FPGA_CMD_TRACE_ENABLE (2<<12) // C - -// Definitions for the FPGA configuration word. +// Defining commands, modes and options. This must be aligned to the definitions in fpga/define.v #define FPGA_MAJOR_MODE_MASK 0x01C0 #define FPGA_MINOR_MODE_MASK 0x003F -// LF +// Definitions for the FPGA commands. +#define FPGA_CMD_SET_CONFREG (1<<12) +#define FPGA_CMD_SET_DIVISOR (2<<12) +#define FPGA_CMD_SET_EDGE_DETECT_THRESHOLD (3<<12) +#define FPGA_CMD_TRACE_ENABLE (2<<12) + +// Major modes #define FPGA_MAJOR_MODE_LF_READER (0<<6) #define FPGA_MAJOR_MODE_LF_EDGE_DETECT (1<<6) #define FPGA_MAJOR_MODE_LF_PASSTHRU (2<<6) #define FPGA_MAJOR_MODE_LF_ADC (3<<6) -// HF -#define FPGA_MAJOR_MODE_HF_READER (0<<6) // D -#define FPGA_MAJOR_MODE_HF_SIMULATOR (1<<6) // D -#define FPGA_MAJOR_MODE_HF_ISO14443A (2<<6) // D -#define FPGA_MAJOR_MODE_HF_SNIFF (3<<6) // D -#define FPGA_MAJOR_MODE_HF_ISO18092 (4<<6) // D -#define FPGA_MAJOR_MODE_HF_GET_TRACE (5<<6) // D -#define FPGA_MAJOR_MODE_HF_FSK_READER (6<<6) // D - -// BOTH HF / LF -#define FPGA_MAJOR_MODE_OFF (7<<6) // D - +#define FPGA_MAJOR_MODE_HF_READER (0<<6) +#define FPGA_MAJOR_MODE_HF_SIMULATOR (1<<6) +#define FPGA_MAJOR_MODE_HF_ISO14443A (2<<6) +#define FPGA_MAJOR_MODE_HF_SNIFF (3<<6) +#define FPGA_MAJOR_MODE_HF_ISO18092 (4<<6) +#define FPGA_MAJOR_MODE_HF_GET_TRACE (5<<6) +#define FPGA_MAJOR_MODE_OFF (7<<6) // Options for LF_READER -#define FPGA_LF_ADC_READER_FIELD 0x1 +#define FPGA_LF_ADC_READER_FIELD ( 1 ) // Options for LF_EDGE_DETECT -#define FPGA_CMD_SET_EDGE_DETECT_THRESHOLD FPGA_CMD_SET_USER_BYTE1 -#define FPGA_LF_EDGE_DETECT_READER_FIELD 0x1 -#define FPGA_LF_EDGE_DETECT_TOGGLE_MODE 0x2 +#define FPGA_LF_EDGE_DETECT_READER_FIELD ( 1 ) +#define FPGA_LF_EDGE_DETECT_TOGGLE_MODE ( 2 ) -// Options for the HF reader -#define FPGA_HF_READER_MODE_RECEIVE_IQ (0<<0) -#define FPGA_HF_READER_MODE_RECEIVE_AMPLITUDE (1<<0) -#define FPGA_HF_READER_MODE_RECEIVE_PHASE (2<<0) -#define FPGA_HF_READER_MODE_SEND_FULL_MOD (3<<0) -#define FPGA_HF_READER_MODE_SEND_SHALLOW_MOD (4<<0) -#define FPGA_HF_READER_MODE_SNIFF_IQ (5<<0) -#define FPGA_HF_READER_MODE_SNIFF_AMPLITUDE (6<<0) -#define FPGA_HF_READER_MODE_SNIFF_PHASE (7<<0) -#define FPGA_HF_READER_MODE_SEND_JAM (8<<0) -#define FPGA_HF_READER_MODE_SEND_SHALLOW_MOD_RDV4 (9<<0) +// Options for the generic HF reader +#define FPGA_HF_READER_MODE_RECEIVE_IQ ( 0 ) +#define FPGA_HF_READER_MODE_RECEIVE_AMPLITUDE ( 1 ) +#define FPGA_HF_READER_MODE_RECEIVE_PHASE ( 2 ) +#define FPGA_HF_READER_MODE_SEND_FULL_MOD ( 3 ) +#define FPGA_HF_READER_MODE_SEND_SHALLOW_MOD ( 4 ) +#define FPGA_HF_READER_MODE_SNIFF_IQ ( 5 ) +#define FPGA_HF_READER_MODE_SNIFF_AMPLITUDE ( 6 ) +#define FPGA_HF_READER_MODE_SNIFF_PHASE ( 7 ) +#define FPGA_HF_READER_MODE_SEND_JAM ( 8 ) +#define FPGA_HF_READER_MODE_SEND_SHALLOW_MOD_RDV4 ( 9 ) #define FPGA_HF_READER_SUBCARRIER_848_KHZ (0<<4) #define FPGA_HF_READER_SUBCARRIER_424_KHZ (1<<4) @@ -113,24 +148,23 @@ thres| x x x x x x x x #define FPGA_HF_READER_2SUBCARRIERS_424_484_KHZ (3<<4) // Options for the HF simulated tag, how to modulate -#define FPGA_HF_SIMULATOR_NO_MODULATION 0x0 // 0000 -#define FPGA_HF_SIMULATOR_MODULATE_BPSK 0x1 // 0001 -#define FPGA_HF_SIMULATOR_MODULATE_212K 0x2 // 0010 -#define FPGA_HF_SIMULATOR_MODULATE_424K 0x4 // 0100 -#define FPGA_HF_SIMULATOR_MODULATE_424K_8BIT 0x5 // 0101 -// no 848K +#define FPGA_HF_SIMULATOR_NO_MODULATION ( 0 ) +#define FPGA_HF_SIMULATOR_MODULATE_BPSK ( 1 ) +#define FPGA_HF_SIMULATOR_MODULATE_212K ( 2 ) +#define FPGA_HF_SIMULATOR_MODULATE_424K ( 4 ) +#define FPGA_HF_SIMULATOR_MODULATE_424K_8BIT ( 5 ) // Options for ISO14443A -#define FPGA_HF_ISO14443A_SNIFFER 0x0 -#define FPGA_HF_ISO14443A_TAGSIM_LISTEN 0x1 -#define FPGA_HF_ISO14443A_TAGSIM_MOD 0x2 -#define FPGA_HF_ISO14443A_READER_LISTEN 0x3 -#define FPGA_HF_ISO14443A_READER_MOD 0x4 +#define FPGA_HF_ISO14443A_SNIFFER ( 0 ) +#define FPGA_HF_ISO14443A_TAGSIM_LISTEN ( 1 ) +#define FPGA_HF_ISO14443A_TAGSIM_MOD ( 2 ) +#define FPGA_HF_ISO14443A_READER_LISTEN ( 3 ) +#define FPGA_HF_ISO14443A_READER_MOD ( 4 ) -//options for Felica. -#define FPGA_HF_ISO18092_FLAG_NOMOD 0x1 // 0001 disable modulation module -#define FPGA_HF_ISO18092_FLAG_424K 0x2 // 0010 should enable 414k mode (untested). No autodetect -#define FPGA_HF_ISO18092_FLAG_READER 0x4 // 0100 enables antenna power, to act as a reader instead of tag +// Options for ISO18092 / Felica +#define FPGA_HF_ISO18092_FLAG_NOMOD ( 1 ) // 0001 disable modulation module +#define FPGA_HF_ISO18092_FLAG_424K ( 2 ) // 0010 should enable 414k mode (untested). No autodetect +#define FPGA_HF_ISO18092_FLAG_READER ( 4 ) // 0100 enables antenna power, to act as a reader instead of tag void FpgaSendCommand(uint16_t cmd, uint16_t v); void FpgaWriteConfWord(uint16_t v); From 85aac72855b3aa23df60f01a2992bf35964c752c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 29 Aug 2023 16:46:52 +0200 Subject: [PATCH 259/299] new fpga images --- fpga/fpga_icopyx_hf.bit | Bin 72749 -> 72749 bytes fpga/fpga_pm3_felica.bit | Bin 42176 -> 42176 bytes fpga/fpga_pm3_hf.bit | Bin 42172 -> 42172 bytes fpga/fpga_pm3_hf_15.bit | Bin 42175 -> 42175 bytes fpga/fpga_pm3_lf.bit | Bin 42172 -> 42172 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/fpga/fpga_icopyx_hf.bit b/fpga/fpga_icopyx_hf.bit index 2deb3216ce64bc0e7e8add8049df1a585632cf8e..c49849667f118837581d975e02f36224650abfd0 100644 GIT binary patch literal 72749 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 literal 72749 zcmeFa4SW>Wc`y8&nbB%?SxF;lA+jy-kx=Y4!OkF*T-j0VBUu62A)vnI`&dT4u`>xMs zzOe4M*Q~zg|GH}x-AVC;K01e-rg@O5iso@S76&O$q#_1b$Nj|35B)#Kp^- z9t#>e6&myz6B`Z3$pj0-1r>iLjZ5KT>IfCwWsy&f@r^mXE1KAZP{uLIxNgk3Y)p5C zrW8g=1w%!VsidCa=YPRsN)+N30~7%7{O4lx;-|+VOKf8fuy7+VLG?mQFGF-`(Ym#<#EaA@Js>eYp3 zcs;97SPp7yTfMsE8rp{UY@hcxtQ*?=H{P3Xrc$H3P7L$!_{rGNK;P3teFYk#^(KI!k&&T3T(4$#?|$W#lQCn7+w<9Zh26VP#@-0V?Y`ar zkUp7u@x|w}uV$wzuo~efo)yirn?>^zxLDo79Zoc52=*nr+0a+8ogiFL4G;9>tfQKE zs}pTnN2LqA%+F!5y2W){ja!Yg4iy=OT_YBBPP|Om#c)lBFY>W{4f)1jXkX058N+yJ z|E#bOr-iu9wFL=A{;Ve^*l!U{3SpANJQLi&8+nZRV2^woKU<(0o}#*?#_4jR5^*_Q zR3pgYYeqw;a=0QHrbB?I2I2i&M4mY98XtBiG|^`D z>ScXg=d@q`g4-SQaytxptEx(EG4#KBH5w+`Qs1($MfEL1iyC^z38-*t=-|oJYpO%_*)uAD1N;Dx4C95-39-Jo(_d=LSR%5M`^07KQxk znBAc|2S{t!3@;`nb+2)8ZVYVpw}^rRR{OAymd&tWGe$wE3y$45SWD%>pm1wl;t2@q z$EJYts0=6Q40Fa6QzTPKB?CXpb;!b2!U-7#LgA8tYRDx^nQU4;lD(LUL6#jY6#QGV zt2a+^;RpwwB#HtBPZlYwOT;LNbRgt1bYSHv?RC)@=};$CgC#Y>MUlB4!b1#XX`}@; z!|8C~Hi;%0BXB9Jwj-LPoGb;qgtaDPvfz@mT`>YHq!r=19*2p9x+1N-Jd*o~ zLx|AJ?|Gk|pOy|PD7Tr0&16nEBM^9S^kSAwi9mf}MnGP}kCd`{KP*=E+_Lt^f9z$& zfFz-l8LFc8d=pVxa~q9vS@>m_YM-cj!7t=YvV*WqaO{&PfC+I7L$S*h?iOueHG-cZ zx5oC%$q5h?tewN&F61Gdhc9;nYQ~NyOg9YRrma|#R`_C{OCnG3P+>{(5-6BXC=2Wj z7Qx@9h7F|4ax0v5Im#RvsE*#fql>HnVIi8~@&tK-s|3yFuE6bg7w$T!nhj-qPRLG0 zQq)LNBg33&$EtJ4a%Q65IYF=^PpMd3P#r0>Bx94R>!dd7%zFHUBWI1Jsk4Kqx5YzA zIAycQL19Il?iz9tibr1^l&sWaR$Hd*dZMI@ZbV3Ai(@HyKW%K`A}1e$mu9k>><)62 zm9k(3vJghVnhs9W*=Rt+#d3bZBVrkOR$47cQ-m#BP>@7x#8oICv|#t@VFzs@;MPq+ zbs*e^uc(aYhyDAI@-(v*aiLf!=}`mB398P|fyJ4GWRW!1bK0mz zldbD1c{wSnlOKk4dhRAdKUp*)VMR08T_8V{#x=wK6O>Q;<~?*9sT)H<&(MI;!Z=dawV)@Nb-Nt8 znc}XCF(8>m3$h%`(VeanN740?<@P!bYC>zY8~hNCqj+$`0AooD0|UHJ)&Vmpp0rRC zj;wK)xZqP=u!B>Bg;7osX;{IAuhQLUPrI3*93D(~a6~Gjp$09Cqlrfx7n7A746%3@ zMc|08W4PlO&cP98(QsR^VYC)ul_F(mt7T3UMli)FCb{i$J9Q`?%|#i5x=tGYU78o? z-h|@g8&gGO7h7;D&OsbajI7k96i>zOC^4p>K~YhvnQhp_ltE)gOz2(G<6*~8oLniP zb62==U&c@`PO6n$jPUU#@stlIiJ-vk%G5m>!zn4VoMK2A(5p!v!a$$`xsoYD{+J7P zNhqQkk-`z=O}HEF6gNC!rm#K33gyXVIyG_KoQq6-PsPB+4aYFGQ!z}>PNU%&&Iu7Y z2y}w66wrS-s;P-5%4&|IAY<# zsd5gi2;5~bBdc3#L^JT%xEXrjxDZ=H-4eya!d%ifDr3=#EABzi=MR5T&X)2_>|zU8rZuD<1o z)2=Oq!Tfx*tS?;ISU41_LqprP@u~#3p`nF4ca|!h+Yz_25QB#8?Vm^gdFhG5H{K}} zmMtr_M|NR6S|}`B7`91X842+%l?{xH#?eBiprN7XvwQZ8`p;*N9(^eQ7l7*XS*&lI z`bOVqeD`j6d1ovy6Y62i?(7;JI{8Hv!(Z`)=VOQ(CH3j1!-4=`3mx{pD{6jyI> zpi1O}!-LIPNQ~Rtn5QR;X5`bO@|?EYAMt9-v4&DRS8O;`ZI@g2&$6B60GReLe0DTG zN!E8T`$kTlvTenIDK;#(8|?#ZLe9(`c0^yH0eddlPu12Qv&(h)zPT?4-xXB;a%1=4 zp}~(FIbeB8{)Rri-&=@?&CirmOI)#w5jU}ia%3>B|(hVDA3!#E6 zienPO^G8pSRtW^*pzV1SXsMN}ddTbT$qK|DbF|a0Dbh)B+BOCIQo=oFy$$DKQ zfw~^51r@WFDly8u+${nooOxtJy%?qh12kj@>31qE2|!cc zdF6F`|8*@=aaCFb%dUM{b3wZ~ve$so+C#v7!(?HOJ!_R~bLqwPE&}??SN4*U}Iyc*pYdh5x9x#tE*+WS#SZc|1yHD(WVZsL<#DZ+FxkE~;4Y zL{%b7&aFs@Xf=)CtLYY^rCv`HMdO(2c1ocg%tSHY#N1O6sR+4WQ4WwGX4$US?FxN~ zAT$lqF;~bkWP||EoNm>Q&^ur#W&sd{oh*NL9p_eRKnZ2$qXJ+uH0z-;*yaMyDJ}F z0vRSSJ983lX)Z#1EvC=g*QrXlk{*I`Dy4C95SqO6N^w8hQV|?2R+fMOh4Ft zx3bcL3jn8y+Nj2zZz+%OQsRbk%J^*Ja?(aMTBCPSo#;7Cm74Eys@hyiA^Hw%mb+M; zLMj~UcQ8gnh4Evs_#}PCc!3$&N3H~F9Uef=2#>-TlZBgPh88dUj)p8`GTOPwUg`>I{}i7ThDwpmSu*)fD2s!us_EM8;G4 zP!h^>{e?qqZIE4ke&p22{Ah3@doq6_%fEvkm?zuB`FFJ|>eg~EDP znVbV_M@OoFEDHCIa7SaiWiKszY>h{D~e{ z!jL6=$$q0nTv>8wb>d}s;XgV*gKJ%wjv}U=7*~|7DDa}etU{KU zp&A*bHM=InnI()m`{%%xB|cVb&}>ALBEH7-X?SP5Waw_}p)c`JSr;%f@aOnd!Ms!f z`!jLrL_A&0#Y)rl!j==FMPAKVUs#sn`rNo~G>8*mW&y(Rp@Rp%_NQC#p7`6jyo6IB zJ!h_ED^{?|RQ)O~40Yr88$NKu2Vh!XviZOVB)2a}K8JYaqexX~RZP5^!L|kBRgG|6 zW7#s~&QPRO4`~>=I~F@q$(otQmm=A8cG4ux_{tCfH~#&J|sKbB+nOWN6sA>oyDV^0@EALgg% zq9+cH#%_vy?(wk#;sV66F(KH#HD-V>;sKB=SV;qO+u-Ku((ImYC?W z+Te84CpKa_;b1vKE$0F)qbHXNF}A?U_jja27Lu0RrkL$!MwYdN$ajH8w_Jr`z< zseFJA9^FtrNC#-|OPpyMwC6G_oNEsWZ2|L&gH&5vyWyA}i0{BYBrYgJ%G~i}f<{}~ zlql||sMwCJ6ildWP@Z~C-X&lG!A?Q-Ak(riuU2))oyMZQqk^6QdJ~3lC~%}nk>c!k zaWEmJ(0*8#Kp|zJx+*XhK)f({z+ITD2;J*=N}$A$B`G}UN~B>Gl49jLT>Y@R2GcPm z#T;!v1bmwY_WX*-$SNr$^04o=0iqPD>)CscY5b!%A?urrSmNB zCzQzcKJd6W902+&h=RyXSY^beh&eZ&4CM)=y^g1dNDEgMZZ&V+gS1D(k#-u^E}IN#1UE*mg4TgI3EN+HIm7$e-p6lBIq^vIWcBf6-O}LfymNrFC7RKWPW`8MLiFnwdrcd+zW5Sa*6f>%Z4-c$%CbPEk$b zo4Q6(Ifv8G7w*2y}}^|x;z<*$Meh=F=0UC z|MA~27VVF4!ala`YiZu@kYN^7CIeXb)1+OOTUm_UY3j323@y@e zu8M!i$Tab?t>wx%1{vWwniKY{Z)T7Io6)KZJ_+!L{c2;sq1r_p@Heg-4`gcHRGh{xbm030W68u} zg$!6HGg`$~+0>>zx&;tTemJhk$voUM}w33Q}53q+D-QzMbfNDOd;zR{Vze4aV}+$nc5A z!YCxHkH5umwMeCS&!?g-*PM@M+}(%v{8tHIGPW$?P9a15XzU;#WqGJ^ONZgHxfHhH zHTL5%pHn9Y^IsBJKGf&rV@JqMZ^fRj<{}QApc)w{<53idsbyA6`ck-}Nm1$IJ-X&9 z@-q*xu-T_;cx1`fIaQ<^$qKuS>Y(;gzdx%duHsi;{c+ty3_4N2ZFS$W!duJG7Dh*@ z(pvO}T}5B~;b;H-%ik)T`r;1@r%G*v)uFyOf@ktWeRF?W@heSxo>v&G-zr#CSWj+= z@2m+KcTkJQ^+f53hIdKNHG)gza6#RY(<~3PZ+3tsF}f2b>88@yJ&aPbl7%HdN~c9> za0!psM=uU>I#Jmy2X*m0zY%-8ohQjQa!@4te$r+vvyoha=88i^v{0hVH5uFH(=&{tF%d)@2a8&v%SJ58_qmriD} z852*Ncrj?Yq{?ZJm8o2%1~<=o-`uA^O)o#1%l&0!l{)-S-u6e_j$Nd8b6Cgimh0n> zbgU7*D^%L*aKzs34@m%Qkk24e`rTo-vaY3; zya#q!voes}tAxGtqFO)(rx%%_;CLa+Y zSpd89Ifj&EbeY2sx%Z24#<9bja=05T#{H8;;*k0Rjr%-0Igl|Bw!Y50#=R=(NHPc( zn4>I3TvlZ$MsMxzX0$=8|cRDPHX512EV zPqW#!b?fS#TSo&{2Zn~)jvwE;d|Tf?{KLuo*5#u?NiKS1PT^!B^V|Qq@D_fBEcWYu z_TL#peDQ}TW20*|z4P{rLvLyS27mPR*VhA>o@_4Rg^B801xP`sNn@4UJsl5R`qR6{ z@TeT;FTEpb-YbPn)a>KM!WiSz(#3mx#h9PzqzOD@jdGg&kX>H(-mckaUN=AS{CjVP zO!H=5Tq7ZI170|7uWdyMgTj@B#H~o8Ng16;!ybB8r%SHzrprpaYO!NwaboNy=U>B#Ru zQ;`nI@oxYhmX~#p;ZN$GgpeeXz{?s51{QUCA!ftgSlA1gEzgsphh)sV9nVPwFipCE zEO3ZIJh@j71W(ydJz4v5?RN)WK6vQZp}RI5I@rB`Ztzs?z@e8lOF60bFmBj>_wrt< z-M`_$%hp_7D}n=MaBI|aEwam~k;9_^Y_?XHZ44TRX}B>;g9kbx1*N$(9V}{szyogj z{Q*9dQ0>~*ma>$i$->KJXca0D5{c7}XDg{m5r}VC2jCZY$X0kLXtWc@So8A{Er}Fb zncM5Or(B&UD=c@ZEu=>|67Cm3V|mc$^JJaeG{+Y&Mf@Fs^u9b`#s1r@N1Y@8^2jPH zn0Zyhjkm1wXh!ASomuQuleAJbrqSM8*IjvyCFdnt?io&6$72;qu|M97thdsQ5tImo zLz{0=n3LBa8EGV-H5I0!HQeVG8qRkgYfM};=b>Su7d9Tavih6(M9zMoC;j9s?6ocL zX)V*@uZHcvdR9iZi+g%=Wy6srk7kqw*&fZ5x(@GtA{G?;kpWEF%dFuesI(c+e%=~h z2IJip^kV{^7KeE+gL`<q5m~^#?p3Bg#Q#$s zbwb`@*zw-o=@QpjYK$4tpN(p$riQ$Ez`WR%fn5}6$W}}90xW@f?p2=WD-H?G2Th}f zESUovpr?gx;>jl0(l=X=V!c8lg^zPPi&~euZjXm|O|W^u^<*7HjXX+93l)>3I_@UZ zqhgYMaEJLgM;-vACHN%oXYwi~U6FpmG}^nqNk2x{C+P0AcRNulaUE))A4627Q~ zVjALuGX_Qs#M}i?tv-ikE-2?BZ5&1Sxp>a)CXKTiXEGKO%;PRxyXUCkaYoiTitmzd zzb2C7@o3gczF}CIL;@zhCX>b}#Q%`S{D5)VV^T5D@fKAI?R;vnM7aUVsd&S=#8fV) z*>SSRs%I<@?L_yH;LxW@dYXJ-`}2SKwwc;v2k)CF^M%6GpM30h|IN4QM0Vpk;L+8E zUyY7_W0!3+(dbSrO9s(cUC*|-; zn3UCNQ?Wr!mtV+`^K^_^@-LbcMVoLQ5mJ9TPsuG>41@jDNNh{N{ zCHGDpRx8?s8CifuAOecsF?deTCPX#W^Vh#o27TKH*#NEy5!oe*YFnPs}voS1c&Lny=l!rPR z*a&=1H~8V-(aFvY)GZ;d)0?mn5r^ws9O50d7B=7h;6;V^DQmH3wpP$n1cYfxphsJI z*za!&1u(QcPjiona`A(`_CO$N_s+G;Yf0ENHwa8li3Vm23=dFk9=Soe4B)pHz;qx8 z26t>YI(X>Fc{3qP9MkU)>;r%kiPSB$ZIE!eAEfs?oxF7=D-l^dI%Ndg`5wsrEZp}a`UH}CPqDq3kqmy+JYRJQoO z3|_hPGR{WY_n@37o~pMjC0i(u2uNN?cOZ^wnxuv)@!_@FaO-r~AauF1+`vohw(nBU zp+?#h+N%=-{oAsuE%>%wwH9(Q2wC8x<-C>B8c69&%8Pw?g7g+$3@d z$kG{C?D%>D%$3-C>!9%3sKbh-7=8YOCNws3l#g}_GYj7@4pn;;y-o)l1FytYid3B6 z2PNwxao2Oollwi<-eO_E6^~bLpz^qd4Y^n;1GX2+0UuRtU7;X@?`qt;Z_VpX$kdH~ zf6lh(;9k9UhDQ3Sz76#RTEK>jL5V!6RP`{m2F{8#_92wJo7G1Gq|v24M>o|eiB-K` ziI*sGQUKZQ80+Kc`8NUUTI+_fqk6B_E?qu5bA_(I_Gcf>W@bFFsfO&dupg>)@$xD8 zG`|fCW=MNH!0iGE(*oj_a9;A|C$O3bcnK`iNXkoie%(AuU{Aj(LKh7HP!FY!8=ijB z!Xm4pTWbJ35rM{&Q9$ES4bDw)>Mluahlr7+^zeF;hx4!=2P91)A$6ulhhyD&({!N> zK3;G1(?DyC$B-D$ySBxl55wRqg^}tKE=jngv5yuFC+DvL4#-HlyC2wJS-IA~h3mH{ zbp`#cqWPXzpH^IUvemm*$}9RIY2Uv6o?hi3yJfXLbFHuI!3St;2;R}A?QaWdNJwb5X)U8M&Lyjop`@1V z&rl`XnA@1bHq#)scfwl=f*JI!0D?_gU2b>yu z@$br5Eu2U(|0zwUXg%H}{rdrM9xmuF{*d$#LyLP0&-3}ZB=BA;y}6&{$Sc#xgkg!7 zin4neK7bz?Lx#N?Sd!n_jPu#K>#$6WbByqgXB2h@cQ%E5j6XyEq6+^;W(q%it`WPH zc=+ty5_S#anMRr}lm&9msGQnUG#T1Q=Yt1Wl&{mUXz3iHvBf}^n~o9daWRH1U1M(N z(YT`6rq091&Zqh+-v9kVCiUi9?r#hq{Dik32Z5@)3B?CV>8@|jcLIOUyk zzOifQ#ZVr~?|-sPlrKi7RaMxmJ498A^8TxbA$dRf%+$eSFz@2+fdtMHYB2GeCSrVecIXRqHz}59OpY zwhXZ-RHU8Fz?_=%=Vyy;TyfktW^G~9>7SOP!; zavG6@+F0YuFaPI*8wM653&5zho=bqK0`gD*O{aEl59XtfFo1wPzZnKpx5J_Gxzq?) zTb|eX^5MCdv>%|m*c~M>eYzmIs3VnvINTF?A&CNQDNOruS!fhEkP?_6AD3R9TZ!94 z+*-hnIh+N34`zbeQNn_wAS)n+xu9{eFnxpub!SnTBc!QlO&3D&J6($8JZzv=*Wyd9$ttg$N7ho1c8b)Jn~Z=(CTdji*@dF0&_NVKO} z&k^34{Ke{+>wLWOb2Tq@B{L62AOa06`%fPHuTE7xH5@=*9?B;#IdIK%lQqs~t8x9* zx_GeIy+Q79KeOY&93jDD58@acyMpI*Um7lVaW<85($<`AaoD{{KJs~hxB4V67*RPm zFn1;T3>rz&c@lVI-j#Fk7TNt@mOUSjJLUBY8+vSKSdsUJesI;Z|C+!&l520eH0_EI z^X{ud-(xAbu(~Y;!Il|ga1Ob{nuHyE^@>{UzXuz z=I;$5HAtueXt4STNfNaitu=1>!+5c~frjl-MNkRDXPV{|w;uZR=X&Y79teJ=x3r^s zqm_nZvf=SLOLh`nYwJ0lI^Zg2)58~%wqjkM*Gq7frY!v~&U_~KdRdl5QKw%(TM=$d zx0P??H#03IetKtM&8lDb_4gxV5%O)lgwW-wT%(S#mUB$ID^=y%ZdzsifsELq_Tfc% z zq(XLOaYHPyIyarhAkWPmx=I|+#F5YyV3$&+-F`UCgFc5Wzyi_2! z>lMBuVPYQ$21O+MjoIAT{;XtTJ*(@~4qTd3&{?d-r96!DTs$4-_JyHWPia;sQq{-} z!N?nh!nUCye#_60MU9C1zYOi!jn5r27?t%!JUYt?aVcX^ z<}vuSs5f@Nr^X&?373Yv7aV!ZM zoWfH~houOHQfV@Ok?_dVmf7_tm3ee?b%5{h;~~~9@m&lxo9Jcnr^T3;A9ezHF%P|B zWIP@^IOC_s>1AwbYsc`H@-a4CS_vW1CO2r(@R8)RayVR^ryF8jm@XdKdU!6dr0ldu z(saPaTdZ{B;sA{iQ&5go;apYTnTs1Fi7d9VyJ$xMhebQsok;@B)ebIdBnwhjqPh7F zRv6K`ciB4#XA&V8t{BSm?Of!X%kgY(()f~u@{_jbYDANiIdJm@TL`GNz|LI8_!{S- zvPzCd!l4C8m{gfjI1FP!fr7@uWw=}q=k{QW_4Iow`!|QdurZN!N`AM9grNqJA`41%5dr*&8+7vm5-8EFB zT7Y4Mv_4}E0*a+ki0BG5Y`JxZk;|1D-+U=2F6c~tFXilq@L30McJ+anTj9qyU%P2u z65GGYeQ86yGO%fnwBr7Ix3*9dKIw50sN29$vScxA6tJf?>cb)D8q823r7~r%={9iG zY;>q5Afb>$bX!P(DcPtMsl9k3Q!DfxLEVc`*jO{TAHpECt{%z*NWrB#EyBe$_5LQ5GU~5r|1X{MI)h!%9JPDH?Q4i zX?!tp*|qWVNKM%vk@MQdc-lKGD6qG8)wd5(+J3UF=Ei92k(Za4VBY0h1|2guOpIve zUyramap*nvd+SV7Y>7Ma5t$}ZYnJCk+Iq01ZP-Ss5`Ezdhuu{~_#%&vMBFkZD6P>w zmJEI>$hU|GJ^Jm3K6BiujJkGkli%1|`RMuqmEN%_u7B?-?sC(m8X0ox^Lo&vF^F;% zVCp7)U`kodMk%Fgx?iHvafc?fu`0&N!Rhto;{U-r+bNW-|Q(u;nq z(^B$eTDr=2z>#@sse~ z&}*+fe*C%Tjvv44u9GJVgFE})jGe+}$c2TfBLI~PS-!P!b=$i2g~2SEeR&D9YWnFj ztp9n{wrxNZ&8JRj^ZgBsE%Z?3LzRq0Pn;MA9v!6T_l)EVZ=UMQ1%0E>JaiH}F7vuD zGzfK=3M04*`qZgk-SMmOluu|%6EPvA|Blmy=olGK0AS5$k1a+HJG&MpIy-4F{42mrlR5q$WGXJTPS^vcKo}d zg+gN$Nq4R10%k{#?ZxdhSQGM3elOJNrURS~ zsEbSXrSLgEj<;mKpL)4SO}g3seqdo%&q?syn7yV<=HN%T1uA?co^9dYdaH5nYyy9VD5 zC4s$+*4M}zDX;0y&s*YLsVgn@{%ZPkfOxK$LsS)UgX_KE$P&5}?*QuD!z)(ehz?5r z3E+06r_((a2YouF1DfwrKH04zC}Dd(>Q#U-o{_${phe%#{BC*RSyxw!wT(;T`;RzF z=cPNfily<5in13_K=sdQ$BGAWU(F1za`26tWu|Q$@bOmk{d{)rwQ2iS$^)z799D8( zMu_E=85Y#7)$kXYjZZ6h@!%E`2Y6yw-WGK<#T%ZQjl~qa81dtJe`P>x4=-+uX4J!+ zp3_OSqAsl_Gf)#w^m}S=VC_jGWmYm> z!hY{^S@WIyAc5nae7EHe+x4EJW!!GH7k%1W!$QCNb=h0ruglcQk>=ray?5+iE7UO3 zT>T@uDQ)|f=(QGjDmOXtMbmIJ{sQH&RzdQGT1{yjS=&~Jlei$FOrlMRNS)Rwz|Nc9 zSu|XxI@@1g($dh;KfEvKPpkn8zav=vkm)3bgv4s7rD6%IGwQ~jo9QNvWOTX|%{nGQ2>ASjmu8T52m~KT>0^^ZoN&4j zzV7n)<9`TD8IS)hRm6X*vQj>AeLtrZZ@g|zL&Aw6Gaa23gJ{rCMb>$-enR~tPZbpv zI3i8PxGz-XNctI7L4=n{BRTkPE2igf=eA; zssi;@h6IB6j#Gr=zK6>6QKddCd>4XO_(8C1C62V_0$u<G}9VDBcRiX2lez+$ZpIr1+aikbeIj=-}jT_RWI?(ShPwAII;SL|`L99QybT5TwR^ z?cUx3)kQSdAsjs0Z^veAPS9jR1)fgobc?f?L$6~2$g{AW)mokDG8WjGP8Y`}tYnm6 z7_)vCVlfr=YtP8Lknndqh>_9JDt^~)2;!>3|LiRkw%(2RK<~!aMEl69`e~u?=Bs_n zhuYqZ4UC-3^LJhN3oj@0dA)4?spfzR?~Dw$eTEUh)O7E?&p%%{wca>Fx|L)Zn z_U^u!e-&SR+`aqg(HCFjvs2$HjQV{;%iH$s;nQi_mgA$OLr0Ik5xkncZTBm$96ick zj2zFt=~>1Y1>Q54TnDr1*yAeP#?Br(-OZTC{hTg0Wz1P|#oJ?Hl`tq{(~=yNWvHdg z#Ld`q%6KNG3oNHmv>}3TqMC1s^7lXado4!BDVh}VRYP5+p>E7)bBI})*I-w6V3}uh zzCu?CzfD@=DXLop+@g}Ohxg{kp1=C$*&o8iZX8DO!goz+3>QB;3G;^Enc;ZGNQ~D5 z+R(!AtF-);QU1D1TU(*;#0gXRxbZ}X+tBgjd>uc&efyvODStPp^gUbt5=>uy;b%r6 z!x|VUK(ZNrOO$!|8@LOH_=`i>&kcG$`**=z2S5Gvr=Py-Apf?WMk6Pd4Qzj88?LWC z_O-{NzifZ~b62joE&9ubvYUd}(xCZaN_k-I$*ntjB{eN*qr|&3SeC3?gJT zz*x=pXAs;b1Vfu1$6nm{C5FvlPUuQ1TdH_6upB9Pz2VR~FK0BaeaBmzq&oA@SBHK9Zvk< z^EMbVfI*<9rDR7-;j^O>lGOGde(et@kUIE!y#SVlqe+8;2PLbOaum=>H72B5Nw^Wm zH%8-mz-T7BghHe;ZixWrfM5|V~wDWEfy`JxVJ~y!msY9<~qo4N{Xtqwa=iL@1A%ECdEVoR_s99FFW^*%oz^ zm}h|#;PA;MLM56|Js6eJ0-OoifN#@aK*Zim?TH)d6OAo+yFI8&lJh;UG1q13j#Li< znKTf>I7YAGeOkK*G2ivKbP|gHuW>i9kaW8e;o`H8m6g{G)8qC)MEPk>P}HrB<|}^> zOA(o%yhZ^?y5;*S88r9^bR7jBbcazOBEVimLOn)x58-{@2qpT-@s>nHz31DrmNXrv zZ|0n>xhsS_f5R@oyzkOg>6(c0f?0UsK>J=`Etrw$P~Y6>XS4-WU{eooBcFoOL1jIj zp6N8)blHDFNmd4E*)S%MI*nH4CVn@87gevo-rF5t`_xR4y?OV_ue`_Kkp!Z-z02|O zU6b4K@+#Id7%OI?I$nwHxu#4*a!r@75m}n&0Z(Al2{;+gEPcU=Ey6mC(AXipXyG%8 zMrL3QuKd9dj+8yr5~-Y-{8`@WEW>%oSAE?IusYID9a&VSjskHZiZcjZknOsKipOQs zm@~!>j8mPRmPF32rkWNjrL6AG&7HYUZcn;{@1MZFThuSw1V5~Bw3gaIkn*$q(GgCy|MUyT{c4GhA7 zfHBci7Mzqsp^l~UbWO%Qipulu6ep+q8Jz^V-TAS}^4tqOL*2f2`kGT2NYw}a=3J@vqw{3M8FLN|#uEOP6x z-h`my3CEA)rF*ZX6>qI-a9rA^N0ey89%S%wMViWFuX*zpvaCbr!2S!eXohTw$7JRE z__JJ|?>ne5s+0+wVicqP`Tk#!`Mk>ljk;`$N!RBFjLQ<|-8>+e{>cg~xo+ zCd|wKQjR8uUDRXLoA{naY#0cn1dv8m8;XYkpRq;XKz-C~&@WQuA zw=f2sh)qkF^s=k}@UeHU{zJTfIqAZHRf;QAIn1An4?-q+#uW~hochz6Cd)5xH8_;` zo1un}C)$SaZBfRB&2Y!XxDn~K%(q2ZW+|GKVf%TAOAQbBwloVP7u^DE`WVc{Km0ub zJ%?f9s6p5q_Y~K7S`oV0_iJLAa1-8`VKf+Md;9G-A3QQ=+v=S=k8Iqwnp@KG)5Pz%u%5pyI`omSO`(nHp&@Qb+?H7FL%rXCUApVhn3nay8o$-6 zm-Q`Q&MKqRzM<+9+(LNQFF`gNwwsa;Z<-EW`N~VdLzO2}qw&{X+q37H{K?o$!PVSg zLYj~VdK}e)M<(T3ryMqR3al@>9%G!gj#wIF+ioghfj#>=kpt z++I{!A%KK)kgLz(Xq*gYY(Uyzniy2p!5+s3tZ5^E@dh|?J}2-Qc_yr~CY14;2}c80 zAuy*K;fAUz+IJSsi%Y7B6!O#Y5GLy|=*r19Q<;>2Od|*bQIyA%kUf>>oq>I}Jq)0_ z=tjJ{L`Q?gc*_$*VZeCPAx$`gNEtEEcaQ`g-~+By5H{-uY*N*j{thg*_8D8Y2Q3P0 zMxG#RfDYi^h&Kgo&SF58!h_yXbhxZzLpyhLB&*KO>+VB1oW$!Gm{iIW8VyMYn*;gX z9V7!ng79gMz$o7<8?gV&!`GEmK#r2goWl(cQ((){ih3=nG_oa0NT{%3az&D=@lI_H_5gT@JDaFZ>vX@yI&~ji=f%Eu#8xR$Bp_yrl<+TOH4iGr_ z&Y-m})#F1e3T-0sK6_)MC2x5#b?irS)uA8in%5RbXh&a5i{(^iUA1KJwcg5gqA&hj zPhGsV?7o@1bX9~RF-79z_4H>CL3{|@cl1a@3uZ))rA1Ps9%8Pagj^ID74#KSCIz-G zbxsx8v;ovehZ*b591u8=f;F(5d0e zaYl@TSzOPOb>cwVnqz;htl02p5_pd=^UJ`c;I7ZMh>`2BlCdkX^zlQTwh@2I2m>h^ z07+0%e3P)3H~)Sr%hj)iIH*N@j~+#ybe=Ji$J5{zoZkv;Z3tgITw)>o%9i0_q#1|; zEzSducChC(Dj^V8M9#>2aGGjA-g^Z8n1Y^E_(qOm94K*?CccNLEg3=80XD8e<`4pP zN@qU8wz{O%AiF)Q6OJfahr4)$sNKY7|$K{qQaA zBkB5ib9){X-ofo|w&(glwv%($1{~kI8XN0-=hR^qE`Zg%<|~rUYl}A%-E;Rcd;c69B# z?iRY|jo-Qn7?O59^;+`I8U%H?FHT2iB{E;{1pLFpBkz8U$|~b2YU=QI=(SxVNQ}_c z-bknG3zB=t(O8qAY>sAsj-yU@)u&lqL-lW4aH3i^X$-2Nc{xeToWEKh~(xQB%XO~%{jL5cUqp*PMc?q#&u$F5l}lMmwo z0ylh3i6AMC$04_*IEG_LZnNMoiatI%aedd3ZG%S}X`ZxPAdL?OlRV0zsiaPDoZ1Iso=`7f=Y+$CQ>1WB zO_RKYGnP`boZ7=wwn)&FX_7_ek~;2pO7?N*G2NKY3oqBLcOQT7?yb*4N(CL{Rg6Uk z+D3z&J4b`NxBeq+{^t)<|9tNs{C=vk(D-wflR}^gGLlU`p9nNG6yk=yWg!+F8QBRk zpuyk?=9xh7{fE4l(#S@4?;aUqY%l~I+Bc+6jQ}}R&-v)O*+)OR?vr1e^ADf=+DF&1 zZt)&gSEE;!$SY}}awVSUVtHlp3NdK77nl99`RBl)z@P??G8TmySZ&O%f_X~#^n7tK z=Dk(;*hf3n)jR>;jpu=J;H?H9j^oe?8N`}lmjnD*!kDaXp^C1=J6GRQI+uu5q*Eb3 z3cHoM5|DX5!LmU>F_)W0iHI0=vV?W{@{+`r z{S*qNue`9oaMx~l9xoavjSQVky_$XHm60k&vf;ID_2l0xue_NrWr4(aJ&f6%MHA%k zSZ4OeF>K(GiuXx0#rZ4XGQc!dFL9tk9{Ts>YYw8TWN*|GryNsMq)_shWBT;qY?-_E`CK;NFnbC407GD!GTI$#)F0UNz>In3LGN znUG7w47}l(m|uAy06xJkS*vl}Q-}N9@L79Iac6*UEyq0N^~46HlS` z?AkzYkO9uqEvJEC-vQh19DKz1)7T%!=kX41KxC50nd>NoUe;aPcx=Ofu=oCC!(0Rp z(WyxafFtGf1`hZKYFzkxvZ~CDUuQ+vTRYf?Hg>Hdt@uo%qzHU6O=n|- zx+1s65q3tzTq^|(Cot`@yvhX)e^F5bTvgLBZ#GV;scufi9*u}QuP_0fc2iG&pXkU& zqHhjtPaa_msI6p=Ld50dO1tj0otHB>yTUyj$x(bG9u$I81T2bbJ_a3jFMNjRgSMoY z&n~zBn2>f{3cL2~)!bj_i#%5pCAnn`!*!TY7N(hCSGm0uB3X*(k^VLEnmVrOqco@W z$p>byAzfE@Rr#z8tXdnMu5|6P#n7HXWo-_ZNCGdWde^BOqHLi{9Ipd=5#;s2F^;TO zs8k$vS`Czrs41cy+#Rnsi<;&U#AP!I&vDC;Bf>0~ZCNIRnXM;Tt2qWgMLlRk8>mbu zYywnhR1SjF`$^PDaaknmq=d?<{w((7dhz}FCMw65JLq3!TBoT3n}5+Q5!#uQIohxw zerz-LduOy0yvJ+v4rj_{Su308i6s_w9R9+{ZNAUnX05K??$6Nm`zfN5X%mh|dmkgEgqujIAk;vNYa=h5~+}Thq|h{f=rOdk!*6^qzh1 zM;QgJB8xMhW(|7j_-5~we@n!V+I8u-MY{?fy8~P$LexdV9^KZreh}>*j!5?n-GwuJ zB-K3h|F(C1p>Z5%e0Fao?VT^Dl{pu+b?uR&2NjCh5Iwj?EhEQ`6^PvuI^r_&;lv2~sUVq=r z?4Miho$qX?TABOUoqylV>^J{*cjo)%8z`I|XAo+2>(|b4>*iIf-YlJ9&%Io%vvKy= zX*E?SEV5l{wGufU$4w`N0LH7W!eJqr%>Cl#*{`FJ?wi4cKpFPEVN+2{f?4mlXfQ0q zNupyfyMAfe`@2N3{&3vhzz$!lIZ1+ zCrN(XHAzoCMG`Rz6oq9J7{FZ>Nx7+6shu1qDI;_p%wWqL??T^^PTAq*#WF|GB1J5N zXN(qBdFj+-7GmcRE-^%06P0Hq3B#04EsK7V1Uu>J?H({%Dg&PK58#yJo{=tV?mR~d3axuu6!L`&KqA%=9^t9%A|tm@;5h-rTUHI(ySR0H(yorJVMi5to-hKhYx zkukUF0-8eI3%F->0b(dG{JN_w)i1m;%ruk8?fMnv6q16}+Y4SK(Sc@G0Oqk;M~f2j z$Ths9kxJ4k3xOFGxSRpz_pH)l!Uorr_@fBMRaXh9HR=?geKoRL#@ke3WHfNsaYL+} zy!B)oQV89Rn$EHXU#mvZ?f~T0G^^^{knH=4KZ=+tvT7qT$miiUAVUXgJqeDaX2mQW zVCKSDq{6<@M5IJEiO@TDI=p|{6p4r|vAz+fk+IXbwuWqpa*qS7Rb)u(ZVIS3bK{Oe zy8Q5nu!7TwZSzw_M|5+{CwYRDt*wwiZm+Y-oHe2V@?EQJdYoOu`b%Kw4cJVhcBHKc zq@W|pr3_ny?#K}a3}>hErNpJ?a9N;FM+rRbrd$n3WmE4mI1?TZ>9FTTh#?(uzF4Ci z>q@){a=`ABoz5-jce>Jr%Y(=8!4)^#DSf1brCo_t-7eyM_>y-Qa@##hClw@DwEiff z6Cjlt86>X^{x9)>Nrw4n5h5oJYfdn_3GgS7=)NjQ8N@Tz^34}6kj#9H$%iZCdY|cZ zek+qCtt379b|1sp?N-EjjA_+BSFu0Ot{1^mLkBw2mqsYCDL`}>aV8plBW@2;EznyJ zzJsS{j)jn_CYu^#oVYcHJs2W#VB@!sdXgYglD~l6q;cp`6}F&27r)VY13|18@FTBI zLi7X7$`EAeP_vmzHNb@9DM??6{0$ZS)QdtB9cg^(q4V}5n(~5(OQ2kWc1m(;1twFd z9C(H1S*;YP(CC}3)PXan$(^9L3BRTA#R`^^9GH#5n*iqP-M!@FtM%m-~q zDdh~>%)5+U;$Ix!yXbiH-PFzCmFi}M-PaA2GDf|x%IGHCKmH^qQt2rMYFhmkMv{IvmRu|#@!=c^2wF8z(`O_`KT zy;EW3@!hHk=cX(~WIv!$!}~?p9$Yw>dys~oS^`L(;=Y1iZBqI3Wc-V@Bovce`$qlO z@;yu@w$NsUAwC@89fsw^##yo}|Er9?lqW)a&|=Rqi8Fbg$H!M%thmu5TCRh~9g8!Z$y0DG z?nuZx_kgvgM#vucZ4I`BEms7NAh}pvNf4sus0n}QR0AjU7YG36vP>p<2sE6VnU@z?(ZVi5NxiYCOli|85_sc0m}swMfs+Wm8P75<<-y* zw!4588vk2qU0ztm2MCLU?#Z&S&v~x()io8EC*v_zK3Vu1=Ae%4fBWiEiZt8!i51K- z2jU_XAs1dv6qfF59JA_NkTf(Afuh@Ehf3)5Je}M{00girB!fvUmHQwv zhXf8zQZB#0gOh*X#H5a&1`BUgf`=8e2zrVCd+XMF|G;6aIfH-VaFot}Izr4obLRJ* z&J7~ZUGcEI8ZU5%x`k;kLlHwee?Tzu#BFxa?_D2VQ<6<>ut)KGn3Cn#W~%k$?RJx^WvKp=_$`bZ zNTaviwUn|kt z?P3zDX~lkE&u;Fw4?eQ?DchUhpRW>tOqZAJ=}9-Z;Nmkauy$ldu=;eHej~9xnuGFr zKEpWo^Hv7bwdc$-ujUhx=z>e41Dh(R0^ANDNH^L4l?l8;ktUsXW_nIU`u`PxWdVJ{;*RUCH^?<)Dn#79@W68 z21Ye7s)11rjA~$11EU%k)xf9*Ml~?1ft_3f`g9V_&!Uqw2QAB`m-a25zIi>g)*p(T z-3a5`f*f0*np$^5MN*K>Z^{@=X;E!gY z`Ud^PfkfpDJ4%JeBaUQ7#$Hk2p#YW_HX>CGnKAD+5F2(F!=0?n+voZAMqz>#niR23 zMmCJOVupA`wopZd>rR2%f*`TFt^}VYP71K{W zIhh@&cc?_Y;t7^y)qM+`;#thwAX_~U;c9J{@O1Vnn%u%sk%S!#T1fN2%)6C~ZBb!d zE@!2(*hIP7ZdPz!3!9(D*{#DtC>^0~(@O+&EE@o~RdJsb9z#>tzc=`22wCoRe(=J+ zC2lQz|1YcA{m}JhEyGc~M2 z3U1DGxb(O`XO2pdTi?%u1r)!u%mNy4BQK>k_ zmK8vrXD_&gwZ|2yKtlEYy5i7&M#m(Rq;=eNvwQWY7@96LoI@+Rfd!xM{Q|N^*>Omh z?kC7R14KsHT?Ofqk{P>tXBexER4LGtbgJGddSPTQ#6aOu%_U;fOO)=g9h7q?81Z-< yidrK9mUw{-m3*g0KJcPXFFK4cV;49)JN-6g8N(6Ss&D)1i}dW*O!x!o^8F7EI_X#d diff --git a/fpga/fpga_pm3_felica.bit b/fpga/fpga_pm3_felica.bit index 626d1779299843e0951a7354481b41e5e8f3cfdf..a60a914d230912790937c2bc969cb4cbd8ff69da 100644 GIT binary patch literal 42176 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 Yn~_P(pDt2^KL=lm@cZ;P=YIBo0Jbn{)Bpeg diff --git a/fpga/fpga_pm3_hf.bit b/fpga/fpga_pm3_hf.bit index c824711fd4b50ad0bd973c85f06631f0b0e10d19..1fd05b3e15c1f1c2c0bfb86a972ade9ee706cc90 100644 GIT binary patch literal 42172 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∩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 diff --git a/fpga/fpga_pm3_hf_15.bit b/fpga/fpga_pm3_hf_15.bit index cbf58183570e2503332d0f5e04d47d3bb186866d..c19f86bedfdf8151f9d0ee0be6e171581f44ce13 100644 GIT binary patch literal 42175 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 TVg`G5ZxIDs@G diff --git a/fpga/fpga_pm3_lf.bit b/fpga/fpga_pm3_lf.bit index 98f309c67fd8f14aabc17d4908cd4a1c0d8ce4ec..c00af088cf4ee01358073153de6869b84b2cc8f5 100644 GIT binary patch literal 42172 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 literal 42172 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%0DfdsfKT+ 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 Unk41;_uxzMdqyj1DZl0a3pfQ2?EnA( From b90326be612e1de85c24ee3b5ebe199858fd4f78 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 29 Aug 2023 21:21:26 +0200 Subject: [PATCH 260/299] remove file not used anymore --- rdv40.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 rdv40.txt diff --git a/rdv40.txt b/rdv40.txt deleted file mode 100644 index e69de29bb..000000000 From 0cbc0c2f8b8a220cbd4e46cd293d5757bad14a20 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 29 Aug 2023 21:45:15 +0200 Subject: [PATCH 261/299] fix CID #416734 --- client/src/cmdhficlass.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 5e271a743..36144abbe 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -1238,8 +1238,9 @@ static int CmdHFiClassESetBlk(const char *Cmd) { int blk = arg_get_int_def(ctx, 1, 0); - if (blk > 255) { - PrintAndLogEx(WARNING, "block number must be between 0 and 255. Got %i", blk); + if (blk > 255 || blk < 0) { + PrintAndLogEx(WARNING, "block number must be between 0 and 255. Got " _RED_("%i"), blk); + CLIParserFree(ctx); return PM3_EINVARG; } @@ -1247,18 +1248,17 @@ static int CmdHFiClassESetBlk(const char *Cmd) { int datalen = 0; int res = CLIParamHexToBuf(arg_get_str(ctx, 2), data, sizeof(data), &datalen); CLIParserFree(ctx); + if (res) { PrintAndLogEx(FAILED, "Error parsing bytes"); return PM3_EINVARG; } - if (datalen != sizeof(data)) { - PrintAndLogEx(WARNING, "block data must include 8 HEX bytes. Got %i", datalen); + if (datalen != PICOPASS_BLOCK_SIZE) { + PrintAndLogEx(WARNING, "block data must include 8 HEX bytes. Got " _RED_("%i"), datalen); return PM3_EINVARG; } - CLIParserFree(ctx); - uint16_t bytes_sent = 0; iclass_upload_emul(data, sizeof(data), blk * PICOPASS_BLOCK_SIZE, &bytes_sent); @@ -1805,7 +1805,6 @@ static int CmdHFiClassDump(const char *Cmd) { uint8_t tag_data[0x100 * 8]; memset(tag_data, 0xFF, sizeof(tag_data)); - iclass_card_select_t payload_rdr = { .flags = (FLAG_ICLASS_READER_INIT | FLAG_ICLASS_READER_CLEARTRACE) }; From 32f892e512d97be402c0abaf6f00675686ed0893 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 29 Aug 2023 22:37:56 +0200 Subject: [PATCH 262/299] fix 14b dump --- client/src/cmdhf14b.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index 536fa2ce3..ae3dd5002 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -443,7 +443,7 @@ static bool get_14b_UID(uint8_t *d, iso14b_type_t *found_type) { iso14b_card_select_t *card = (iso14b_card_select_t*)d; uint8_t empty[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - if (memcmp(card->uid, empty, card->uidlen)) { + if (memcmp(card->uid, empty, card->uidlen) == 0) { return false; } *found_type = ISO14B_SR; From e3cc8a98e94547a0579e29e4e42144fe775f37e1 Mon Sep 17 00:00:00 2001 From: Thomas Pedley Date: Tue, 29 Aug 2023 23:56:23 +0100 Subject: [PATCH 263/299] Fix MFU authentication to send PACK correctly. --- CHANGELOG.md | 1 + armsrc/iso14443a.c | 40 ++++++++++++++++++++++------------------ 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cae4e6507..6854aef6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -48,6 +48,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Fixed the timeout of TCP connections (@wh201906) - Changed the connection timeout configurable (@wh201906) - Add hf_cardhopper standalone mode for long-distance relay attacks (@startrekdude) + - Fix MFU authentication to send PACK correctly (@shallax) ## [Seven.4.16717][2023-06-25] - Change `hf 14a info` - now identifes QL88 tags (@iceman1001) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index c3ee6f050..8e7988188 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -1284,8 +1284,16 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r if (memcmp(pwd, gen_pwd, sizeof(pwd)) == 0) { rPACK[0] = 0x80; rPACK[1] = 0x80; + } else { + uint16_t start = (*pages) * 4 + MFU_DUMP_PREFIX_LENGTH; + emlGetMemBt(rPACK, start, sizeof(rPACK)); + if (g_dbglevel >= DBG_DEBUG) { + Dbprintf("PACK loaded from memory: "); + Dbhexdump(4, rPACK, 0); + } } } + AddCrc14A(rPACK, sizeof(rPACK) - 2); static tag_response_info_t responses_init[] = { @@ -1703,33 +1711,29 @@ void SimulateIso14443aTag(uint8_t tagType, uint16_t flags, uint8_t *data, uint8_ } else if (receivedCmd[0] == MIFARE_ULC_AUTH_1) { // ULC authentication, or Desfire Authentication LogTrace(receivedCmd, Uart.len, Uart.startTime * 16 - DELAY_AIR2ARM_AS_TAG, Uart.endTime * 16 - DELAY_AIR2ARM_AS_TAG, Uart.parity, true); p_response = NULL; - } else if (receivedCmd[0] == MIFARE_ULEV1_AUTH && len == 7 && tagType == 7) { // NTAG / EV-1 authentication - - /* - // PWD stored in dump now + } else if (receivedCmd[0] == MIFARE_ULEV1_AUTH && len == 7 && tagType == 7) { // NTAG / EV-1 uint8_t pwd[4]; emlGetMemBt(pwd, (pages - 1) * 4 + MFU_DUMP_PREFIX_LENGTH, sizeof(pwd)); + if (g_dbglevel >= DBG_DEBUG) { + Dbprintf("Reader sent password: "); + Dbhexdump(4, receivedCmd + 1, 0); + Dbprintf("Loaded password from memory: "); + Dbhexdump(4, pwd, 0); + } + if (memcmp(pwd, "\x00\x00\x00\x00", 4) == 0) { Uint4byteToMemLe(pwd, ul_ev1_pwdgenB(data)); - Dbprintf("Calc pwd... %02X %02X %02X %02X", pwd[0], pwd[1], pwd[2], pwd[3]); + if (g_dbglevel >= DBG_DEBUG) Dbprintf("Calc pwd... %02X %02X %02X %02X", pwd[0], pwd[1], pwd[2], pwd[3]); } if (memcmp(receivedCmd + 1, pwd, 4) == 0) { - - uint8_t pack[4]; - emlGetMemBt(pack, pages * 4 + MFU_DUMP_PREFIX_LENGTH, 2); - if (memcmp(pack, "\x00\x00\x00\x00", 4) == 0) { - pack[0] = 0x80; - pack[1] = 0x80; - } - AddCrc14A(pack, sizeof(pack) - 2); - EmSendCmd(pack, sizeof(pack)); + if (g_dbglevel >= DBG_DEBUG) Dbprintf("Password match, responding with PACK."); + p_response = &responses[RESP_INDEX_PACK]; } else { - EmSend4bit(CARD_NACK_NA); - if (g_dbglevel >= DBG_DEBUG) Dbprintf("Auth attempt: %08x", bytes_to_num(receivedCmd + 1, 4)); + if (g_dbglevel >= DBG_DEBUG) Dbprintf("Password did not match, NACK_IV."); + p_response = NULL; + EmSend4bit(CARD_NACK_IV); } - p_response = NULL; - */ p_response = &responses[RESP_INDEX_PACK]; } else if (receivedCmd[0] == MIFARE_ULEV1_VCSL && len == 23 && tagType == 7) { uint8_t cmd[3]; From 3e034e146aa290c88c5dfbffe02d4c4aa9dea13f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 3 Sep 2023 12:36:30 +0200 Subject: [PATCH 264/299] remove unneeded line --- armsrc/iso14443a.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 8e7988188..5af71bef3 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -1577,7 +1577,7 @@ void SimulateIso14443aTag(uint8_t tagType, uint16_t flags, uint8_t *data, uint8_ // block1 = 4byte UID. p_response = &responses[RESP_INDEX_UIDC1]; } else { // all other tags (16 byte block tags) - uint8_t emdata[MAX_MIFARE_FRAME_SIZE]; + uint8_t emdata[MAX_MIFARE_FRAME_SIZE] = {0}; emlGetMemBt(emdata, block, 16); AddCrc14A(emdata, 16); EmSendCmd(emdata, sizeof(emdata)); @@ -1591,7 +1591,7 @@ void SimulateIso14443aTag(uint8_t tagType, uint16_t flags, uint8_t *data, uint8_ // send NACK 0x0 == invalid argument EmSend4bit(CARD_NACK_IV); } else { - uint8_t emdata[MAX_FRAME_SIZE]; + uint8_t emdata[MAX_FRAME_SIZE] = {0}; // first blocks of emu are header int start = block1 * 4 + MFU_DUMP_PREFIX_LENGTH; len = (block2 - block1 + 1) * 4; @@ -1675,7 +1675,7 @@ void SimulateIso14443aTag(uint8_t tagType, uint16_t flags, uint8_t *data, uint8_ // send NACK 0x0 == invalid argument EmSend4bit(CARD_NACK_IV); } else { - uint8_t cmd[3]; + uint8_t cmd[3] = {0,0,0}; cmd[0] = tearings[index]; AddCrc14A(cmd, sizeof(cmd) - 2); EmSendCmd(cmd, sizeof(cmd)); @@ -1712,7 +1712,7 @@ void SimulateIso14443aTag(uint8_t tagType, uint16_t flags, uint8_t *data, uint8_ LogTrace(receivedCmd, Uart.len, Uart.startTime * 16 - DELAY_AIR2ARM_AS_TAG, Uart.endTime * 16 - DELAY_AIR2ARM_AS_TAG, Uart.parity, true); p_response = NULL; } else if (receivedCmd[0] == MIFARE_ULEV1_AUTH && len == 7 && tagType == 7) { // NTAG / EV-1 - uint8_t pwd[4]; + uint8_t pwd[4] = {0,0,0,0}; emlGetMemBt(pwd, (pages - 1) * 4 + MFU_DUMP_PREFIX_LENGTH, sizeof(pwd)); if (g_dbglevel >= DBG_DEBUG) { Dbprintf("Reader sent password: "); @@ -1734,9 +1734,9 @@ void SimulateIso14443aTag(uint8_t tagType, uint16_t flags, uint8_t *data, uint8_ p_response = NULL; EmSend4bit(CARD_NACK_IV); } - p_response = &responses[RESP_INDEX_PACK]; + } else if (receivedCmd[0] == MIFARE_ULEV1_VCSL && len == 23 && tagType == 7) { - uint8_t cmd[3]; + uint8_t cmd[3] = {0,0,0}; emlGetMemBt(cmd, (pages - 2) * 4 + 1 + MFU_DUMP_PREFIX_LENGTH, 1); AddCrc14A(cmd, sizeof(cmd) - 2); EmSendCmd(cmd, sizeof(cmd)); From 276bd29da9faeab53eb729a2047e5feee777a751 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 3 Sep 2023 14:43:38 +0200 Subject: [PATCH 265/299] cleanup and fix shadowing var --- armsrc/iso14443a.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 5af71bef3..21393b206 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -1276,21 +1276,15 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r // EV1/NTAG, set PWD w AMIIBO algo if all zero. if (tagType == 7) { - uint8_t pwd[4]; - uint8_t gen_pwd[4]; - uint16_t start = (*pages - 1) * 4 + MFU_DUMP_PREFIX_LENGTH; - emlGetMemBt(pwd, start, sizeof(pwd)); + uint8_t pwd[4] = {0,0,0,0}; + uint8_t gen_pwd[4] = {0,0,0,0}; + emlGetMemBt(pwd, (*pages - 1) * 4 + MFU_DUMP_PREFIX_LENGTH, sizeof(pwd)); + emlGetMemBt(rPACK, (*pages) * 4 + MFU_DUMP_PREFIX_LENGTH, sizeof(rPACK)); + Uint4byteToMemBe(gen_pwd, ul_ev1_pwdgenB(data)); if (memcmp(pwd, gen_pwd, sizeof(pwd)) == 0) { rPACK[0] = 0x80; rPACK[1] = 0x80; - } else { - uint16_t start = (*pages) * 4 + MFU_DUMP_PREFIX_LENGTH; - emlGetMemBt(rPACK, start, sizeof(rPACK)); - if (g_dbglevel >= DBG_DEBUG) { - Dbprintf("PACK loaded from memory: "); - Dbhexdump(4, rPACK, 0); - } } } From e5941bcf3af0af371dc3d725ab36bf438114280e Mon Sep 17 00:00:00 2001 From: Harry Sintonen Date: Tue, 5 Sep 2023 16:38:33 +0300 Subject: [PATCH 266/299] fix crc render position when data len is multiple of 16 --- client/src/cmdtrace.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index e71ca4445..9182608ae 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -655,11 +655,12 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr if (crcStatus == 0 || crcStatus == 1) { char *pos1 = line[(data_len - 2) / TRACE_MAX_HEX_BYTES]; - pos1 += (((data_len - 2) % TRACE_MAX_HEX_BYTES) * 4) - 1; + int delta = (data_len - 2) % TRACE_MAX_HEX_BYTES ? 1 : 0; + pos1 += (((data_len - 2) % TRACE_MAX_HEX_BYTES) * 4) - delta; - (*(pos1 + 6 + 1)) = '\0'; + (*(pos1 + 6 + delta)) = '\0'; - char *cb_str = str_dup(pos1 + 1); + char *cb_str = str_dup(pos1 + delta); if (g_session.supports_colors) { if (crcStatus == 0) { From cc846216d28b2bc9db44bdea1e78b21d90de27e2 Mon Sep 17 00:00:00 2001 From: Ernestas Kulik Date: Mon, 4 Sep 2023 20:10:58 +0300 Subject: [PATCH 267/299] dictionaries: Add keys for Vilnius public transit card --- client/dictionaries/mfc_default_keys.dic | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index b2d656969..421ab14ae 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -2193,3 +2193,15 @@ DDDAA35A9749 # Mercator Pika Card, Slovenia 97D77FAE77D3 5AF445D2B87A +# +# VilnieÄio/JUDU kortelÄ—, Lithuania +# A +16901CB400BC +F0FE56621A42 +8C187E78EE9C +FE2A42E85CA8 +# B +6A6C80423226 +F4CE4AF888AE +307448829EBC +C2A0105EB028 From 9ddbdad8cb74f71300c1b982c558622f1494bf83 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 6 Sep 2023 10:59:21 +0200 Subject: [PATCH 268/299] added keys from #2019 unknown if they are static --- client/dictionaries/mfc_default_keys.dic | 77 +++++++++++++++--------- 1 file changed, 47 insertions(+), 30 deletions(-) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 421ab14ae..088ab80d0 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -1829,6 +1829,37 @@ E19504C39461 FA1FBB3F0F1F FF16014FEFC7 # +# +# Food GEM +6686FADE5566 +# +# Data from Discord, French pool +9B7C25052FC3 +494446555455 +# +# Data from Discord, seems to be related to ASSA +427553754D47 +# Keys found on Edith Cowan University Smart Riders +9A677289564D +186C59E6AFC9 +DDDAA35A9749 +9D0D0A829F49 +# Mercator Pika Card, Slovenia +97D77FAE77D3 +5AF445D2B87A +# +# VilnieÄio/JUDU kortelÄ—, Lithuania +# A +16901CB400BC +F0FE56621A42 +8C187E78EE9C +FE2A42E85CA8 +# B +6A6C80423226 +F4CE4AF888AE +307448829EBC +C2A0105EB028 +# # Keys from Flipper Zero Community # Last update: Aug 13, 2022 # @@ -2175,33 +2206,19 @@ D201DBB6AB6E 09074A146605 151F3E85EC46 # -# -# Food GEM -6686FADE5566 -# -# Data from Discord, French pool -9B7C25052FC3 -494446555455 -# -# Data from Discord, seems to be related to ASSA -427553754D47 -# Keys found on Edith Cowan University Smart Riders -9A677289564D -186C59E6AFC9 -DDDAA35A9749 -9D0D0A829F49 -# Mercator Pika Card, Slovenia -97D77FAE77D3 -5AF445D2B87A -# -# VilnieÄio/JUDU kortelÄ—, Lithuania -# A -16901CB400BC -F0FE56621A42 -8C187E78EE9C -FE2A42E85CA8 -# B -6A6C80423226 -F4CE4AF888AE -307448829EBC -C2A0105EB028 +# Travelodge by Wyndham Berkeley +0000FFFFFFFF +4663ACD2FFFF +EDC317193709 +# Hotel Santa Cruz +75FAB77E2E5B +# saflok brand HOTEL key +32F093536677 +# A WaterFront Hotel in Oakland +3351916B5A77 +# Ballys (2018) +336E34CC2177 +# Random Hawaiian Hotel +A1670589B2AF +# SF Hotel (SoMa area) +2E0F00700000 From 5abae85edac425059919ae08679e3c54bd6a7f3d Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 7 Sep 2023 12:54:46 +0200 Subject: [PATCH 269/299] legic sim should work now.... --- armsrc/legicrfsim.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/armsrc/legicrfsim.c b/armsrc/legicrfsim.c index ac207ebaf..1f6accf4a 100644 --- a/armsrc/legicrfsim.c +++ b/armsrc/legicrfsim.c @@ -215,7 +215,6 @@ static void tx_ack(void) { // - receive the frame // - detect end of frame (last pause) static int32_t rx_frame(uint8_t *len) { - int32_t frame = 0; // add 2 SSP clock cycles (1 for tx and 1 for rx pipeline delay) // those will be subtracted at the end of the rx phase @@ -241,6 +240,7 @@ static int32_t rx_frame(uint8_t *len) { // backup ts for trace log uint32_t last_frame_start = last_frame_end; + int32_t frame = 0; // receive frame for (*len = 0; true; ++(*len)) { @@ -353,7 +353,7 @@ static int32_t setup_phase(legic_card_select_t *p_card) { // wait for iv int32_t iv = rx_frame(&len); if ((len != 7) || (iv < 0)) { - return PM3_ERFTRANS; + return PM3_ETIMEOUT; } // configure prng @@ -375,7 +375,7 @@ static int32_t setup_phase(legic_card_select_t *p_card) { // wait for ack int32_t ack = rx_frame(&len); if ((len != 6) || (ack < 0)) { - return PM3_ERFTRANS; + return PM3_ETIMEOUT; } // validate data @@ -464,24 +464,23 @@ void LegicRfSimulate(uint8_t tagtype, bool send_reply) { // configure ARM and FPGA init_tag(); - int res = PM3_SUCCESS; + int res = init_card(tagtype, &card); // verify command line input - if (init_card(tagtype, &card) != PM3_SUCCESS) { + if (res != PM3_SUCCESS) { DbpString("Unknown tagtype to simulate"); - res = PM3_ESOFT; goto OUT; } LED_A_ON(); - Dbprintf("Legic Prime, simulating uid... " _YELLOW_("%02X%02X%02X%02X"), legic_mem[0], legic_mem[1], legic_mem[2], legic_mem[3]); + Dbprintf("Legic Prime, simulating MCD... " _YELLOW_("%02X") " MSN... " _YELLOW_("%02X%02X%02X"), legic_mem[0], legic_mem[1], legic_mem[2], legic_mem[3]); uint16_t counter = 0; while (BUTTON_PRESS() == false) { WDT_HIT(); - if (counter >= 1000) { + if (counter >= 2000) { if (data_available()) { res = PM3_EOPABORTED; goto OUT; @@ -501,7 +500,7 @@ void LegicRfSimulate(uint8_t tagtype, bool send_reply) { } // connection is established, process commands until one fails - while (connected_phase(&card) != PM3_SUCCESS) { + while (connected_phase(&card) == PM3_SUCCESS) { WDT_HIT(); } } @@ -512,14 +511,16 @@ OUT: Dbprintf("Emulator stopped. Trace length... " _YELLOW_("%d"), BigBuf_get_traceLen()); } - if (res == PM3_EOPABORTED) + if (res == PM3_EOPABORTED) { DbpString("Aborted by user"); + } switch_off(); StopTicks(); - if (send_reply) + if (send_reply) { reply_ng(CMD_HF_LEGIC_SIMULATE, res, NULL, 0); + } BigBuf_free_keep_EM(); } From d74e264250f33d2f99e3abfdb030b586507a0b03 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 7 Sep 2023 20:13:18 +0200 Subject: [PATCH 270/299] style --- armsrc/fpgaloader.c | 2 +- armsrc/iso14443a.c | 10 ++++----- armsrc/iso14443b.c | 12 +++++------ armsrc/iso15693.c | 4 ++-- client/src/cmdhf14b.c | 2 +- client/src/cmdlft55xx.c | 48 ++++++++++++++++++++--------------------- doc/commands.json | 4 ++-- fpga/hi_flite.v | 2 +- include/iso14b.h | 2 +- 9 files changed, 43 insertions(+), 43 deletions(-) diff --git a/armsrc/fpgaloader.c b/armsrc/fpgaloader.c index fefc16029..ccc47bcde 100644 --- a/armsrc/fpgaloader.c +++ b/armsrc/fpgaloader.c @@ -162,7 +162,7 @@ void FpgaSetupSsc(uint16_t fpga_mode) { // 8, 16 or 32 bits per transfer, no loopback, MSB first, 1 transfer per sync // pulse, no output sync - if (((fpga_mode & FPGA_MAJOR_MODE_MASK) == FPGA_MAJOR_MODE_HF_READER ) && + if (((fpga_mode & FPGA_MAJOR_MODE_MASK) == FPGA_MAJOR_MODE_HF_READER) && (FpgaGetCurrent() == FPGA_BITSTREAM_HF || FpgaGetCurrent() == FPGA_BITSTREAM_HF_15)) { AT91C_BASE_SSC->SSC_RFMR = SSC_FRAME_MODE_BITS_IN_WORD(16) | AT91C_SSC_MSBF | SSC_FRAME_MODE_WORDS_PER_TRANSFER(0); } else { diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 21393b206..410a83308 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -1276,8 +1276,8 @@ bool SimulateIso14443aInit(uint8_t tagType, uint16_t flags, uint8_t *data, tag_r // EV1/NTAG, set PWD w AMIIBO algo if all zero. if (tagType == 7) { - uint8_t pwd[4] = {0,0,0,0}; - uint8_t gen_pwd[4] = {0,0,0,0}; + uint8_t pwd[4] = {0, 0, 0, 0}; + uint8_t gen_pwd[4] = {0, 0, 0, 0}; emlGetMemBt(pwd, (*pages - 1) * 4 + MFU_DUMP_PREFIX_LENGTH, sizeof(pwd)); emlGetMemBt(rPACK, (*pages) * 4 + MFU_DUMP_PREFIX_LENGTH, sizeof(rPACK)); @@ -1669,7 +1669,7 @@ void SimulateIso14443aTag(uint8_t tagType, uint16_t flags, uint8_t *data, uint8_ // send NACK 0x0 == invalid argument EmSend4bit(CARD_NACK_IV); } else { - uint8_t cmd[3] = {0,0,0}; + uint8_t cmd[3] = {0, 0, 0}; cmd[0] = tearings[index]; AddCrc14A(cmd, sizeof(cmd) - 2); EmSendCmd(cmd, sizeof(cmd)); @@ -1706,7 +1706,7 @@ void SimulateIso14443aTag(uint8_t tagType, uint16_t flags, uint8_t *data, uint8_ LogTrace(receivedCmd, Uart.len, Uart.startTime * 16 - DELAY_AIR2ARM_AS_TAG, Uart.endTime * 16 - DELAY_AIR2ARM_AS_TAG, Uart.parity, true); p_response = NULL; } else if (receivedCmd[0] == MIFARE_ULEV1_AUTH && len == 7 && tagType == 7) { // NTAG / EV-1 - uint8_t pwd[4] = {0,0,0,0}; + uint8_t pwd[4] = {0, 0, 0, 0}; emlGetMemBt(pwd, (pages - 1) * 4 + MFU_DUMP_PREFIX_LENGTH, sizeof(pwd)); if (g_dbglevel >= DBG_DEBUG) { Dbprintf("Reader sent password: "); @@ -1730,7 +1730,7 @@ void SimulateIso14443aTag(uint8_t tagType, uint16_t flags, uint8_t *data, uint8_ } } else if (receivedCmd[0] == MIFARE_ULEV1_VCSL && len == 23 && tagType == 7) { - uint8_t cmd[3] = {0,0,0}; + uint8_t cmd[3] = {0, 0, 0}; emlGetMemBt(cmd, (pages - 2) * 4 + 1 + MFU_DUMP_PREFIX_LENGTH, 1); AddCrc14A(cmd, sizeof(cmd) - 2); EmSendCmd(cmd, sizeof(cmd)); diff --git a/armsrc/iso14443b.c b/armsrc/iso14443b.c index c2516c36a..db20119d2 100644 --- a/armsrc/iso14443b.c +++ b/armsrc/iso14443b.c @@ -45,7 +45,7 @@ * 1 / 3 390 000 = 294.98 nano seconds ( 0.2949 µs ) * * 1 ETU = 9.4395 µs = 32 SSP_CLK = 128 FC -* 1 SSP_CLK = 4 FC +* 1 SSP_CLK = 4 FC * 1 µs 3 SSP_CLK about 14 FC * PROBLEM 1. * ---------- @@ -1409,9 +1409,9 @@ static void TransmitFor14443b_AsReader(uint32_t *start_time) { #ifdef RDV4 FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | FPGA_HF_READER_MODE_SEND_SHALLOW_MOD_RDV4); -#else +#else FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | FPGA_HF_READER_MODE_SEND_SHALLOW_MOD); -#endif +#endif // TR2 minimum 14 ETUs if (*start_time < ISO14B_TR0) { @@ -1596,7 +1596,7 @@ int iso14443b_apdu(uint8_t const *msg, size_t msg_len, bool send_chaining, void // SSP_CLK = 4833 µS * 3.39 = 16384 - int len = Get14443bAnswerFromTag(rxdata, rxmaxlen, iso14b_timeout , &eof_time); + int len = Get14443bAnswerFromTag(rxdata, rxmaxlen, iso14b_timeout, &eof_time); FpgaDisableTracing(); uint8_t *data_bytes = (uint8_t *) rxdata; @@ -2107,9 +2107,9 @@ void iso14443b_setup(void) { // Signal field is on with the appropriate LED #ifdef RDV4 FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | FPGA_HF_READER_MODE_SEND_SHALLOW_MOD_RDV4); -#else +#else FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | FPGA_HF_READER_MODE_SEND_SHALLOW_MOD); -#endif +#endif SpinDelay(100); diff --git a/armsrc/iso15693.c b/armsrc/iso15693.c index 9a1f5be49..54aaa16bd 100644 --- a/armsrc/iso15693.c +++ b/armsrc/iso15693.c @@ -296,9 +296,9 @@ void TransmitTo15693Tag(const uint8_t *cmd, int len, uint32_t *start_time, bool #ifdef RDV4 FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | (shallow_mod ? FPGA_HF_READER_MODE_SEND_SHALLOW_MOD_RDV4 : FPGA_HF_READER_MODE_SEND_FULL_MOD)); -#else +#else FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | (shallow_mod ? FPGA_HF_READER_MODE_SEND_SHALLOW_MOD : FPGA_HF_READER_MODE_SEND_FULL_MOD)); -#endif +#endif if (*start_time < DELAY_ARM_TO_TAG) { diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index ae3dd5002..1ba73e797 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -441,7 +441,7 @@ static bool get_14b_UID(uint8_t *d, iso14b_type_t *found_type) { if (resp.oldarg[0] == 0) { memcpy(d, resp.data.asBytes, sizeof(iso14b_card_select_t)); - iso14b_card_select_t *card = (iso14b_card_select_t*)d; + iso14b_card_select_t *card = (iso14b_card_select_t *)d; uint8_t empty[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; if (memcmp(card->uid, empty, card->uidlen) == 0) { return false; diff --git a/client/src/cmdlft55xx.c b/client/src/cmdlft55xx.c index 75475d161..5033b5d54 100644 --- a/client/src/cmdlft55xx.c +++ b/client/src/cmdlft55xx.c @@ -4158,7 +4158,7 @@ static int CmdT55xxSniff(const char *Cmd) { usedPassword <<= 1; if (data[i] == '1') { usedPassword |= 1; - } + } } // Lock bit 34 @@ -4167,7 +4167,7 @@ static int CmdT55xxSniff(const char *Cmd) { blockData <<= 1; if (data[i] == '1') { blockData |= 1; - } + } } blockAddr = 0; @@ -4198,7 +4198,7 @@ static int CmdT55xxSniff(const char *Cmd) { blockData <<= 1; if (data[i] == '1') { blockData |= 1; - } + } } for (uint8_t i = 2; i <= 33; i++) { @@ -4239,7 +4239,7 @@ static int CmdT55xxSniff(const char *Cmd) { usedPassword <<= 1; if (data[i] == '1') { usedPassword |= 1; - } + } } blockData = 0; @@ -4247,7 +4247,7 @@ static int CmdT55xxSniff(const char *Cmd) { blockData <<= 1; if (data[i] == '1') { blockData |= 1; - } + } } blockAddr = 0; @@ -4255,7 +4255,7 @@ static int CmdT55xxSniff(const char *Cmd) { blockAddr <<= 1; if (data[i] == '1') { blockAddr |= 1; - } + } } have_data = true; @@ -4271,26 +4271,26 @@ static int CmdT55xxSniff(const char *Cmd) { if (have_data) { if (blockAddr == 7) { PrintAndLogEx(SUCCESS, "%-22s | "_GREEN_("%10s")" | "_YELLOW_("%8s")" | "_YELLOW_("%d")" | "_GREEN_("%d")" | %3d | %3d | %s" - , modeText - , pwdText - , dataText - , blockAddr - , page - , minWidth - , maxWidth - , data - ); + , modeText + , pwdText + , dataText + , blockAddr + , page + , minWidth + , maxWidth + , data + ); } else { PrintAndLogEx(SUCCESS, "%-22s | "_GREEN_("%10s")" | "_GREEN_("%8s")" | "_GREEN_("%d")" | "_GREEN_("%d")" | %3d | %3d | %s" - , modeText - , pwdText - , dataText - , blockAddr - , page - , minWidth - , maxWidth - , data - ); + , modeText + , pwdText + , dataText + , blockAddr + , page + , minWidth + , maxWidth + , data + ); } } } diff --git a/doc/commands.json b/doc/commands.json index 895998486..bbe8f8b93 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -8786,7 +8786,7 @@ "-1, --ht1 Card type Hitag 1", "-2, --ht2 Card type Hitag 2", "-s, --hts Card type Hitag S", - "-m, --htm Card type Hitag \u00ce\u00bc" + "-m, --htm Card type Hitag \u03bc" ], "usage": "lf hitag eload [-h12sm] -f " }, @@ -11837,6 +11837,6 @@ "metadata": { "commands_extracted": 686, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-08-24T05:14:06" + "extracted_on": "2023-09-07T18:12:46" } } \ No newline at end of file diff --git a/fpga/hi_flite.v b/fpga/hi_flite.v index d93d67d21..8346e49f2 100644 --- a/fpga/hi_flite.v +++ b/fpga/hi_flite.v @@ -296,7 +296,7 @@ begin mid <= 8'd129; else if (adc_d < curminthres) mid <= 8'd127; - else + else begin if (after_hysteresis) begin diff --git a/include/iso14b.h b/include/iso14b.h index 10995eba0..e809ef2c0 100644 --- a/include/iso14b.h +++ b/include/iso14b.h @@ -69,7 +69,7 @@ typedef struct { #define SSP_TO_US(x) ( (int32_t)((x) / 3.39) ) #define HF14_ETU_TO_SSP(x) ((x) << 5) // 1 ETU = 32 SSP -#define HF14_SSP_TO_ETU(x) ((x) >> 5) // +#define HF14_SSP_TO_ETU(x) ((x) >> 5) // #define HF14_ETU_TO_US(x) ( (float)((x) * 9.4396) ) #define HF14_ETU_TO_US_2(x) ( (int32_t)( ((x) * 9439600) / 1000000) ) From d97f417ee642b547ab1daa65c9e2861d23fd0ca1 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 7 Sep 2023 21:00:07 +0200 Subject: [PATCH 271/299] Fix clang warnings on increasing alignment requirements --- client/src/cmdhfmfhard.c | 3 ++- client/src/flash.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhfmfhard.c b/client/src/cmdhfmfhard.c index 9b4cf4858..713a658e9 100644 --- a/client/src/cmdhfmfhard.c +++ b/client/src/cmdhfmfhard.c @@ -406,7 +406,8 @@ static void init_bitflip_bitarrays(void) { exit(5); } - uint32_t count = ((uint32_t *)uncompressed_data)[0]; + uint32_t count; + memcpy(&count, uncompressed_data, sizeof(uint32_t)); if ((float)count / (1 << 24) < IGNORE_BITFLIP_THRESHOLD) { uint32_t *bitset = (uint32_t *)malloc_bitarray(sizeof(uint32_t) * (1 << 19)); diff --git a/client/src/flash.c b/client/src/flash.c index b1f4a28c9..aed71f805 100644 --- a/client/src/flash.c +++ b/client/src/flash.c @@ -350,7 +350,8 @@ int flash_load(flash_file_t *ctx, bool force) { } if (strcmp(((char *)shstr) + shdrs[i].sh_name, ".bootphase1") == 0) { - uint32_t offset = *(uint32_t *)(ctx->elf + le32(shdrs[i].sh_offset) + le32(shdrs[i].sh_size) - 4); + uint32_t offset; + memcpy(&offset, ctx->elf + le32(shdrs[i].sh_offset) + le32(shdrs[i].sh_size) - 4, sizeof(uint32_t)); if (offset >= le32(shdrs[i].sh_addr)) { offset -= le32(shdrs[i].sh_addr); if (offset < le32(shdrs[i].sh_size)) { From 3aeb5c493fe4622425011c4d3040c180197b7cf0 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 7 Sep 2023 22:28:37 +0200 Subject: [PATCH 272/299] fix a few cppcheck warnings --- armsrc/Standalone/hf_cardhopper.c | 8 +++--- armsrc/iso14443a.c | 4 +-- armsrc/mifaresim.c | 2 +- .../deps/hardnested/hardnested_bruteforce.c | 7 ++--- client/src/cmddata.c | 7 ++--- client/src/cmdhflist.c | 4 +-- client/src/cmdhfvas.c | 26 +++++++++---------- client/src/emv/cmdemv.c | 2 +- client/src/proxmark3.c | 4 +-- common/lfdemod.c | 2 +- tools/hitag2crack/crack3/ht2crack3.c | 15 ++++++----- tools/mf_nonce_brute/mf_nonce_brute.c | 2 +- tools/mf_nonce_brute/mf_trace_brute.c | 2 +- 13 files changed, 44 insertions(+), 41 deletions(-) diff --git a/armsrc/Standalone/hf_cardhopper.c b/armsrc/Standalone/hf_cardhopper.c index cfad35605..0a154f66b 100644 --- a/armsrc/Standalone/hf_cardhopper.c +++ b/armsrc/Standalone/hf_cardhopper.c @@ -275,16 +275,16 @@ static void cook_ats(packet_t *ats, uint8_t fwi, uint8_t sfgi) { ats->dat[0] = 0x04; ats->dat[1] = 0x78; ats->dat[2] = 0x77; - ats->dat[3] = 0x80; + // ats->dat[3] = 0x80; } else if (ats->len == 2) { ats->len = 4; ats->dat[0] = 0x04; ats->dat[2] = 0x77; - ats->dat[3] = 0x80; + // ats->dat[3] = 0x80; } else if (ats->len == 3) { ats->len = 4; ats->dat[0] = 0x04; - ats->dat[3] = 0x80; + // ats->dat[3] = 0x80; } // Set the SFGI as well as the FWI - needed for some older readers (firmware revs?) @@ -293,7 +293,7 @@ static void cook_ats(packet_t *ats, uint8_t fwi, uint8_t sfgi) { } -static bool try_use_canned_response(uint8_t *dat, int len, tag_response_info_t *canned) { +static bool try_use_canned_response(const uint8_t *dat, int len, tag_response_info_t *canned) { if ((dat[0] == ISO14443A_CMD_REQA || dat[0] == ISO14443A_CMD_WUPA) && len == 1) { EmSendPrecompiledCmd(canned + RESP_INDEX_ATQA); return true; diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 410a83308..346669398 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -2529,7 +2529,7 @@ static int GetATQA(uint8_t *resp, uint8_t *resp_par, iso14a_polling_parameters_t bool first_try = true; uint32_t retry_timeout = WUPA_RETRY_TIMEOUT * polling_parameters->frame_count + polling_parameters->extra_timeout; - uint32_t start_time; + uint32_t start_time = 0; int len; uint8_t current_frame = 0; @@ -2584,7 +2584,7 @@ int iso14443a_select_cardEx(uint8_t *uid_ptr, iso14a_card_select_t *p_card, uint uint8_t resp[MAX_FRAME_SIZE] = {0}; // theoretically. A usual RATS will be much smaller uint8_t resp_par[MAX_PARITY_SIZE] = {0}; - uint8_t sak; // cascade uid + uint8_t sak = 0; // cascade uid bool do_cascade = 1; int cascade_level = 0; diff --git a/armsrc/mifaresim.c b/armsrc/mifaresim.c index a44220209..eddb59dc0 100644 --- a/armsrc/mifaresim.c +++ b/armsrc/mifaresim.c @@ -523,7 +523,7 @@ void Mifare1ksim(uint16_t flags, uint8_t exitAfterNReads, uint8_t *datain, uint1 uint8_t rAUTH_NT_keystream[4]; uint32_t nonce = 0; - tUart14a *uart = GetUart14a(); + const tUart14a *uart = GetUart14a(); // free eventually allocated BigBuf memory but keep Emulator Memory BigBuf_free_keep_EM(); diff --git a/client/deps/hardnested/hardnested_bruteforce.c b/client/deps/hardnested/hardnested_bruteforce.c index e4b203f4d..f55d8885a 100644 --- a/client/deps/hardnested/hardnested_bruteforce.c +++ b/client/deps/hardnested/hardnested_bruteforce.c @@ -304,12 +304,13 @@ static bool ensure_buckets_alloc(size_t need_buckets) { while (need_buckets > alloc_sz) { alloc_sz *= 2; } - - buckets = realloc(buckets, sizeof(statelist_t *) * alloc_sz); - if (buckets == NULL) { + statelist_t **new_buckets = realloc(buckets, sizeof(statelist_t *) * alloc_sz); + if (new_buckets == NULL) { + free(buckets); buckets_allocated = 0; return false; } + buckets = new_buckets; memset(buckets + buckets_allocated, 0, (alloc_sz - buckets_allocated) * sizeof(statelist_t *)); buckets_allocated = alloc_sz; } diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 4c8200ee6..6eb3fcb85 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -2224,7 +2224,7 @@ int CmdNorm(const char *Cmd) { if (g_GraphBuffer[i] < min) min = g_GraphBuffer[i]; } - if (max != min) { + if ((g_GraphTraceLen > 10) && (max != min)) { for (uint32_t i = 0; i < g_GraphTraceLen; ++i) { g_GraphBuffer[i] = ((long)(g_GraphBuffer[i] - ((max + min) / 2)) * 256) / (max - min); //marshmelow: adjusted *1000 to *256 to make +/- 128 so demod commands still work @@ -3218,12 +3218,12 @@ static int CmdNumCon(const char *Cmd) { int hlen = 256; char hex[256]; memset(hex, 0, sizeof(hex)); - res = CLIParamStrToBuf(arg_get_str(ctx, 2), (uint8_t *)hex, sizeof(hex), &hlen); + res |= CLIParamStrToBuf(arg_get_str(ctx, 2), (uint8_t *)hex, sizeof(hex), &hlen); int blen = 256; char bin[256]; memset(bin, 0, sizeof(bin)); - res = CLIParamStrToBuf(arg_get_str(ctx, 3), (uint8_t *)bin, sizeof(bin), &blen); + res |= CLIParamStrToBuf(arg_get_str(ctx, 3), (uint8_t *)bin, sizeof(bin), &blen); bool shall_invert = arg_get_lit(ctx, 4); CLIParserFree(ctx); @@ -3236,6 +3236,7 @@ static int CmdNumCon(const char *Cmd) { // results for MPI actions bool ret = false; + (void) ret; // container of big number mbedtls_mpi N; diff --git a/client/src/cmdhflist.c b/client/src/cmdhflist.c index 8e605b91f..bf67a2b0b 100644 --- a/client/src/cmdhflist.c +++ b/client/src/cmdhflist.c @@ -1362,8 +1362,8 @@ void annotateMfPlus(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) { if (data_size > 2) { uint16_t uBlockNum = MemLeToUint2byte(data) ; uint8_t uQty = data[2] ; - if (uQty != 1) { - snprintf(exp, size, "READ %s(%u-%u) %s_%s", encrypted, uBlockNum, uBlockNum + uQty - 1, responseMaced, commandMaced); + if (uQty > 1) { + snprintf(exp, size, "READ %s(%u-%i) %s_%s", encrypted, uBlockNum, uBlockNum + uQty - 1, responseMaced, commandMaced); } else { snprintf(exp, size, "READ %s(%u) %s_%s", encrypted, uBlockNum, responseMaced, commandMaced); } diff --git a/client/src/cmdhfvas.c b/client/src/cmdhfvas.c index 9d04b7477..4e4a305e5 100644 --- a/client/src/cmdhfvas.c +++ b/client/src/cmdhfvas.c @@ -28,8 +28,8 @@ #include "util.h" #include "util_posix.h" #include "iso7816/iso7816core.h" -#include "stddef.h" -#include "stdbool.h" +#include +#include #include "mifare.h" #include #include @@ -59,10 +59,10 @@ uint8_t aid[] = { 0x4f, 0x53, 0x45, 0x2e, 0x56, 0x41, 0x53, 0x2e, 0x30, 0x31 }; uint8_t getVasUrlOnlyP2 = 0x00; uint8_t getVasFullReqP2 = 0x01; -static int ParseSelectVASResponse(uint8_t *response, size_t resLen, bool verbose) { +static int ParseSelectVASResponse(const uint8_t *response, size_t resLen, bool verbose) { struct tlvdb *tlvRoot = tlvdb_parse_multi(response, resLen); - struct tlvdb *versionTlv = tlvdb_find_full(tlvRoot, 0x9F21); + const struct tlvdb *versionTlv = tlvdb_find_full(tlvRoot, 0x9F21); if (versionTlv == NULL) { tlvdb_free(tlvRoot); return PM3_ECARDEXCHANGE; @@ -80,7 +80,7 @@ static int ParseSelectVASResponse(uint8_t *response, size_t resLen, bool verbose return PM3_ECARDEXCHANGE; } - struct tlvdb *capabilitiesTlv = tlvdb_find_full(tlvRoot, 0x9F23); + const struct tlvdb *capabilitiesTlv = tlvdb_find_full(tlvRoot, 0x9F23); if (capabilitiesTlv == NULL) { tlvdb_free(tlvRoot); return PM3_ECARDEXCHANGE; @@ -99,7 +99,7 @@ static int ParseSelectVASResponse(uint8_t *response, size_t resLen, bool verbose return PM3_SUCCESS; } -static int CreateGetVASDataCommand(uint8_t *pidHash, const char *url, size_t urlLen, uint8_t *out, int *outLen) { +static int CreateGetVASDataCommand(const uint8_t *pidHash, const char *url, size_t urlLen, uint8_t *out, int *outLen) { if (pidHash == NULL && url == NULL) { PrintAndLogEx(FAILED, "Must provide a Pass Type ID or a URL"); return PM3_EINVARG; @@ -154,10 +154,10 @@ static int CreateGetVASDataCommand(uint8_t *pidHash, const char *url, size_t url return PM3_SUCCESS; } -static int ParseGetVASDataResponse(uint8_t *res, size_t resLen, uint8_t *cryptogram, size_t *cryptogramLen) { +static int ParseGetVASDataResponse(const uint8_t *res, size_t resLen, uint8_t *cryptogram, size_t *cryptogramLen) { struct tlvdb *tlvRoot = tlvdb_parse_multi(res, resLen); - struct tlvdb *cryptogramTlvdb = tlvdb_find_full(tlvRoot, 0x9F27); + const struct tlvdb *cryptogramTlvdb = tlvdb_find_full(tlvRoot, 0x9F27); if (cryptogramTlvdb == NULL) { tlvdb_free(tlvRoot); return PM3_ECARDEXCHANGE; @@ -171,10 +171,10 @@ static int ParseGetVASDataResponse(uint8_t *res, size_t resLen, uint8_t *cryptog return PM3_SUCCESS; } -static int LoadReaderPrivateKey(uint8_t *buf, size_t bufLen, mbedtls_ecp_keypair *privKey) { +static int LoadReaderPrivateKey(const uint8_t *buf, size_t bufLen, mbedtls_ecp_keypair *privKey) { struct tlvdb *derRoot = tlvdb_parse_multi(buf, bufLen); - struct tlvdb *privkeyTlvdb = tlvdb_find_full(derRoot, 0x04); + const struct tlvdb *privkeyTlvdb = tlvdb_find_full(derRoot, 0x04); if (privkeyTlvdb == NULL) { tlvdb_free(derRoot); return PM3_EINVARG; @@ -187,7 +187,7 @@ static int LoadReaderPrivateKey(uint8_t *buf, size_t bufLen, mbedtls_ecp_keypair return PM3_EINVARG; } - struct tlvdb *pubkeyCoordsTlvdb = tlvdb_find_full(derRoot, 0x03); + const struct tlvdb *pubkeyCoordsTlvdb = tlvdb_find_full(derRoot, 0x03); if (pubkeyCoordsTlvdb == NULL) { tlvdb_free(derRoot); PrintAndLogEx(FAILED, "Private key file should include public key component"); @@ -229,7 +229,7 @@ static int GetPrivateKeyHint(mbedtls_ecp_keypair *privKey, uint8_t *keyHint) { return PM3_SUCCESS; } -static int LoadMobileEphemeralKey(uint8_t *xcoordBuf, mbedtls_ecp_keypair *pubKey) { +static int LoadMobileEphemeralKey(const uint8_t *xcoordBuf, mbedtls_ecp_keypair *pubKey) { uint8_t compressedEcKey[33] = {0}; compressedEcKey[0] = 0x02; memcpy(compressedEcKey + 1, xcoordBuf, 32); @@ -249,7 +249,7 @@ static int LoadMobileEphemeralKey(uint8_t *xcoordBuf, mbedtls_ecp_keypair *pubKe static int internalVasDecrypt(uint8_t *cipherText, size_t cipherTextLen, uint8_t *sharedSecret, uint8_t *ansiSharedInfo, size_t ansiSharedInfoLen, - uint8_t *gcmAad, size_t gcmAadLen, uint8_t *out, size_t *outLen) { + const uint8_t *gcmAad, size_t gcmAadLen, uint8_t *out, size_t *outLen) { uint8_t key[32] = {0}; if (ansi_x963_sha256(sharedSecret, 32, ansiSharedInfo, ansiSharedInfoLen, sizeof(key), key)) { PrintAndLogEx(FAILED, "ANSI X9.63 key derivation failed"); diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index c322f6406..5462f6eed 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -2646,7 +2646,7 @@ static int CmdEMVReader(const char *Cmd) { res = EMVSelectPSE(channel, true, true, 2, buf, sizeof(buf), &len, &sw); // search PSE / PPSE - res = EMVSearchPSE(channel, false, true, psenum, false, tlvSelect); + res |= EMVSearchPSE(channel, false, true, psenum, false, tlvSelect); if (res) { // EMV SEARCH with AID list DropFieldEx(channel); diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 3e924a1c7..a91f74179 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -606,7 +606,7 @@ static void show_help(bool showFullHelp, char *exec_name) { } } -static int flash_pm3(char *serial_port_name, uint8_t num_files, char *filenames[FLASH_MAX_FILES], bool can_write_bl, bool force) { +static int flash_pm3(char *serial_port_name, uint8_t num_files, const char *filenames[FLASH_MAX_FILES], bool can_write_bl, bool force) { int ret = PM3_EUNDEF; flash_file_t files[FLASH_MAX_FILES]; @@ -756,7 +756,7 @@ int main(int argc, char *argv[]) { bool flash_force = false; bool debug_mode_forced = false; int flash_num_files = 0; - char *flash_filenames[FLASH_MAX_FILES]; + const char *flash_filenames[FLASH_MAX_FILES]; // color management: // 1. default = no color diff --git a/common/lfdemod.c b/common/lfdemod.c index f7f734eb4..9ed6f4e28 100644 --- a/common/lfdemod.c +++ b/common/lfdemod.c @@ -1025,7 +1025,7 @@ int DetectNRZClock(uint8_t *dest, size_t size, int clock, size_t *clockStartIdx) } uint8_t best = 0; - for (int m = ARRAYLEN(peaksdet); m > 0; m--) { + for (int m = ARRAYLEN(peaksdet) - 1; m >= 0; m--) { if ((peaksdet[m] >= (peaksdet[best] - 1)) && (peaksdet[m] <= peaksdet[best] + 1) && lowestTransition) { if (clk[m] > (lowestTransition - (clk[m] / 8)) && clk[m] < (lowestTransition + (clk[m] / 8))) { best = m; diff --git a/tools/hitag2crack/crack3/ht2crack3.c b/tools/hitag2crack/crack3/ht2crack3.c index a81d33d40..f50ea6af4 100644 --- a/tools/hitag2crack/crack3/ht2crack3.c +++ b/tools/hitag2crack/crack3/ht2crack3.c @@ -386,13 +386,14 @@ int main(int argc, char *argv[]) { // debug mode only runs one thread from klowerstart tdata[0].klowerstart = klowerstart; crack(tdata); - } else { - // run full threaded mode - for (i = 0; i < NUM_THREADS; i++) { - if (pthread_create(&(threads[i]), NULL, crack, (void *)(tdata + i))) { - printf("cannot start thread %d\n", i); - exit(1); - } + return 0; + } + + // run full threaded mode + for (i = 0; i < NUM_THREADS; i++) { + if (pthread_create(&(threads[i]), NULL, crack, (void *)(tdata + i))) { + printf("cannot start thread %d\n", i); + exit(1); } } diff --git a/tools/mf_nonce_brute/mf_nonce_brute.c b/tools/mf_nonce_brute/mf_nonce_brute.c index 161f1c749..2491c502d 100644 --- a/tools/mf_nonce_brute/mf_nonce_brute.c +++ b/tools/mf_nonce_brute/mf_nonce_brute.c @@ -533,7 +533,7 @@ static int usage(void) { return 1; } -int main(int argc, char *argv[]) { +int main(int argc, const char *argv[]) { printf("\nMifare classic nested auth key recovery\n\n"); if (argc < 9) return usage(); diff --git a/tools/mf_nonce_brute/mf_trace_brute.c b/tools/mf_nonce_brute/mf_trace_brute.c index 1d8a7c6fb..c416c006f 100644 --- a/tools/mf_nonce_brute/mf_trace_brute.c +++ b/tools/mf_nonce_brute/mf_trace_brute.c @@ -247,7 +247,7 @@ static int usage(void) { return 1; } -int main(int argc, char *argv[]) { +int main(int argc, const char *argv[]) { printf("Mifare classic nested auth key recovery Phase 2\n"); if (argc < 3) return usage(); From 27edaa6d0cd8d3446688159a34524005e7519df6 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 7 Sep 2023 22:48:55 +0200 Subject: [PATCH 273/299] forgot fct declaration --- armsrc/Standalone/hf_cardhopper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/armsrc/Standalone/hf_cardhopper.c b/armsrc/Standalone/hf_cardhopper.c index 0a154f66b..90742f4cf 100644 --- a/armsrc/Standalone/hf_cardhopper.c +++ b/armsrc/Standalone/hf_cardhopper.c @@ -54,7 +54,7 @@ static void select_card(void); static void become_card(void); static void prepare_emulation(uint8_t *, uint16_t *, uint8_t *, packet_t *); static void cook_ats(packet_t *, uint8_t, uint8_t); -static bool try_use_canned_response(uint8_t *, int, tag_response_info_t *); +static bool try_use_canned_response(const uint8_t *, int, tag_response_info_t *); static void reply_with_packet(packet_t *); static void read_packet(packet_t *); From cf16e7124437e49ddddc3b52f27029ba4fc038d8 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 7 Sep 2023 23:44:31 +0200 Subject: [PATCH 274/299] Fix cmake, stringop-overflow false positives are not specific to MINGW --- client/CMakeLists.txt | 22 +++++++++++----------- client/experimental_lib/CMakeLists.txt | 22 +++++++++++----------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 5090dab63..eaee2f0f0 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -656,21 +656,21 @@ if (MINGW) set(CMAKE_C_FLAGS "-mno-ms-bitfields -fexec-charset=cp850 ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS "-mno-ms-bitfields -fexec-charset=cp850 ${CMAKE_CXX_FLAGS}") - # GCC 10 has issues with false positives on stringop-overflow, - # let's disable them for now (cf https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92955, https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94335) - # beware these flags didn't exist for GCC < 7 - if(CMAKE_COMPILER_IS_GNUCXX) - execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) - if (GCC_VERSION VERSION_GREATER 10.0 OR GCC_VERSION VERSION_EQUAL 10.0) - set(CMAKE_C_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_C_FLAGS}") - set(CMAKE_CXX_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_CXX_FLAGS}") - endif() - endif(CMAKE_COMPILER_IS_GNUCXX) - # link Winsock2 set(ADDITIONAL_LNK ws2_32 ${ADDITIONAL_LNK}) endif (MINGW) +# GCC 10 has issues with false positives on stringop-overflow, +# let's disable them for now (cf https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92955, https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94335) +# beware these flags didn't exist for GCC < 7 +if(CMAKE_COMPILER_IS_GNUCXX) + execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) + if (GCC_VERSION VERSION_GREATER 10.0 OR GCC_VERSION VERSION_EQUAL 10.0) + set(CMAKE_C_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_C_FLAGS}") + set(CMAKE_CXX_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_CXX_FLAGS}") + endif() +endif(CMAKE_COMPILER_IS_GNUCXX) + target_include_directories(proxmark3 PRIVATE ${PM3_ROOT}/common ${PM3_ROOT}/common_fpga diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index f08ccdd6c..a5caeb014 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -656,19 +656,19 @@ if (MINGW) set(CMAKE_C_FLAGS "-mno-ms-bitfields -fexec-charset=cp850 ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS "-mno-ms-bitfields -fexec-charset=cp850 ${CMAKE_CXX_FLAGS}") - # GCC 10 has issues with false positives on stringop-overflow, - # let's disable them for now (cf https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92955, https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94335) - # beware these flags didn't exist for GCC < 7 - if(CMAKE_COMPILER_IS_GNUCXX) - execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) - if (GCC_VERSION VERSION_GREATER 10.0 OR GCC_VERSION VERSION_EQUAL 10.0) - set(CMAKE_C_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_C_FLAGS}") - set(CMAKE_CXX_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_CXX_FLAGS}") - endif() - endif(CMAKE_COMPILER_IS_GNUCXX) - endif (MINGW) +# GCC 10 has issues with false positives on stringop-overflow, +# let's disable them for now (cf https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92955, https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94335) +# beware these flags didn't exist for GCC < 7 +if(CMAKE_COMPILER_IS_GNUCXX) + execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) + if (GCC_VERSION VERSION_GREATER 10.0 OR GCC_VERSION VERSION_EQUAL 10.0) + set(CMAKE_C_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_C_FLAGS}") + set(CMAKE_CXX_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_CXX_FLAGS}") + endif() +endif(CMAKE_COMPILER_IS_GNUCXX) + target_include_directories(pm3rrg_rdv4 PRIVATE ${PM3_ROOT}/common ${PM3_ROOT}/common_fpga From 87bdbef851b7aa8398831a0987b28a68fc2e717c Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 8 Sep 2023 11:06:18 +0200 Subject: [PATCH 275/299] pm3_tests: timings of slow executions and faster aes bruteforce --- tools/pm3_tests.sh | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index 0c34360c6..479861b6d 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -196,11 +196,18 @@ function CheckExecute() { return $RESULT fi + start=$(date +%s) + TIMEINFO="" for I in $RETRY do RES=$(eval "$2") + end=$(date +%s) + delta=$(expr $end - $start) + if [ $delta -gt 2 ]; then + TIMEINFO=" ($delta s)" + fi if echo "$RES" | grep -E -q "$3"; then - echo -e "[ ${C_GREEN}OK${C_NC} ] ${C_OK}" + echo -e "[ ${C_GREEN}OK${C_NC} ] ${C_OK} $TIMEINFO" return $RESULT fi if [ ! $I == "e" ]; then echo "retry $I"; fi @@ -208,11 +215,11 @@ function CheckExecute() { RESULT=1 if $IGNOREFAILURE; then - echo -e "[ ${C_YELLOW}IGNORED${C_NC} ]" + echo -e "[ ${C_YELLOW}IGNORED${C_NC} ] $TIMEINFO" return 0 fi - echo -e "[ ${C_RED}FAIL${C_NC} ] ${C_FAIL}" + echo -e "[ ${C_RED}FAIL${C_NC} ] ${C_FAIL} $TIMEINFO" echo -e "Execution trace:\n$RES" return $RESULT } @@ -298,7 +305,7 @@ while true; do if $TESTALL || $TESTMFDAESBRUTE; then echo -e "\n${C_BLUE}Testing mfd_aes_brute:${C_NC} ${MFDASEBRUTEBIN:=./tools/mfd_aes_brute/mfd_aes_brute}" if ! CheckFileExist "mfd_aes_brute exists" "$MFDASEBRUTEBIN"; then break; fi - if ! CheckExecute "mfd_aes_brute test 1/2" "$MFDASEBRUTEBIN 1605394800 bb6aea729414a5b1eff7b16328ce37fd 82f5f498dbc29f7570102397a2e5ef2b6dc14a864f665b3c54d11765af81e95c" "key.................... .*261C07A23F2BC8262F69F10A5BDF3764"; then break; fi + if ! CheckExecute "mfd_aes_brute test 1/2" "$MFDASEBRUTEBIN 1629394800 bb6aea729414a5b1eff7b16328ce37fd 82f5f498dbc29f7570102397a2e5ef2b6dc14a864f665b3c54d11765af81e95c" "key.................... .*261C07A23F2BC8262F69F10A5BDF3764"; then break; fi if ! CheckExecute slow "mfd_aes_brute test 2/2" "$MFDASEBRUTEBIN 1546300800 3fda933e2953ca5e6cfbbf95d1b51ddf 97fe4b5de24188458d102959b888938c988e96fb98469ce7426f50f108eaa583" "key.................... .*E757178E13516A4F3171BC6EA85E165A"; then break; fi fi @@ -306,7 +313,7 @@ while true; do echo -e "\n${C_BLUE}Testing CryptoRF sma:${C_NC} ${CRYPTRFBRUTEBIN:=./tools/cryptorf/sma} ${CRYPTRF_MULTI_BRUTEBIN:=./tools/cryptorf/sma_multi}" if ! CheckFileExist "sma exists" "$CRYPTRFBRUTEBIN"; then break; fi if ! CheckFileExist "sma_multi exists" "$CRYPTRF_MULTI_BRUTEBIN"; then break; fi - if ! CheckExecute slow "sma test" "$CRYPTRFBRUTEBIN ffffffffffffffff 1234567812345678 88c9d4466a501a87 dec2ee1b1c9276e9" "key found \[.*4f794a463ff81d81.*\]"; then break; fi +# if ! CheckExecute slow "sma test" "$CRYPTRFBRUTEBIN ffffffffffffffff 1234567812345678 88c9d4466a501a87 dec2ee1b1c9276e9" "key found \[.*4f794a463ff81d81.*\]"; then break; fi if ! CheckExecute slow "sma_multi test" "$CRYPTRF_MULTI_BRUTEBIN ffffffffffffffff 1234567812345678 88c9d4466a501a87 dec2ee1b1c9276e9" "key found \[.*4f794a463ff81d81.*\]"; then break; fi fi # hitag2crack not yet part of "all" From 7b5c35008903b5afa0faff74cc77724f5499f8fc Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 8 Sep 2023 15:46:49 +0200 Subject: [PATCH 276/299] fix Tumbleweed docker --- docker/opensuse-tumbleweed/Dockerfile | 3 +-- docker/opensuse-tumbleweed/README.md | 5 +++++ docker/opensuse-tumbleweed/run_tests.sh | 5 +++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/docker/opensuse-tumbleweed/Dockerfile b/docker/opensuse-tumbleweed/Dockerfile index 04aaff64c..8a18c7d43 100644 --- a/docker/opensuse-tumbleweed/Dockerfile +++ b/docker/opensuse-tumbleweed/Dockerfile @@ -8,8 +8,7 @@ RUN zypper --non-interactive install --no-recommends shadow sudo git patterns-de # zypper --gpg-auto-import-keys refresh && \ # zypper --non-interactive install cross-arm-none-eabi-gcc12 cross-arm-none-eabi-newlib -RUN zypper --non-interactive install cmake python3 python3-pip && \ - python3 -m pip install ansicolors sslcrypto +RUN zypper --non-interactive install cmake python311 python311-pip python311-virtualenv RUN zypper --non-interactive install ocl-icd-devel diff --git a/docker/opensuse-tumbleweed/README.md b/docker/opensuse-tumbleweed/README.md index bd55e0c9d..282d3f4f7 100644 --- a/docker/opensuse-tumbleweed/README.md +++ b/docker/opensuse-tumbleweed/README.md @@ -16,5 +16,10 @@ Or if you want to run single test, ``` sudo zypper refresh && sudo zypper --non-interactive update make clean; make -j +python3 -m venv /tmp/venv +source /tmp/venv/bin/activate +python3 -m pip install --use-pep517 pyaes +python3 -m pip install ansicolors sslcrypto tools/pm3_tests.sh --long +deactivate ``` diff --git a/docker/opensuse-tumbleweed/run_tests.sh b/docker/opensuse-tumbleweed/run_tests.sh index 9002131e9..bb613ffc0 100755 --- a/docker/opensuse-tumbleweed/run_tests.sh +++ b/docker/opensuse-tumbleweed/run_tests.sh @@ -5,4 +5,9 @@ # docker/opensuse-tumbleweed/run_tests.sh; sudo zypper refresh && sudo zypper --non-interactive update +python3 -m venv /tmp/venv +source /tmp/venv/bin/activate +python3 -m pip install --use-pep517 pyaes +python3 -m pip install ansicolors sslcrypto tools/release_tests.sh +deactivate From 032e4b832eb9bf836d2c8fc9036d54791a70f284 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 8 Sep 2023 20:32:23 +0200 Subject: [PATCH 277/299] spurious exec mode on .c file --- armsrc/Standalone/hf_14bsniff.c | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 armsrc/Standalone/hf_14bsniff.c diff --git a/armsrc/Standalone/hf_14bsniff.c b/armsrc/Standalone/hf_14bsniff.c old mode 100755 new mode 100644 From 5c1b802e71841668aa2ebab3d400f7b6cf75a2d0 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 8 Sep 2023 20:45:44 +0200 Subject: [PATCH 278/299] standalone doc --- armsrc/Standalone/hf_14asniff.c | 3 ++- armsrc/Standalone/hf_14bsniff.c | 15 +++++++++++++++ armsrc/Standalone/hf_15sniff.c | 3 ++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/armsrc/Standalone/hf_14asniff.c b/armsrc/Standalone/hf_14asniff.c index 041a0b6f0..dc0c0905c 100644 --- a/armsrc/Standalone/hf_14asniff.c +++ b/armsrc/Standalone/hf_14asniff.c @@ -43,7 +43,7 @@ * 1. mem spiffs dump -s hf_14asniff.trace -d hf_14asniff.trace * Copies trace data file from flash to your PC. * - * 2. trace load hf_14asniff.trace + * 2. trace load -f hf_14asniff.trace * Loads trace data from a file into PC-side buffers. * * 3. For ISO14a: trace list -t 14a -1 @@ -55,6 +55,7 @@ * the lab connected to PM3 client before taking it into the field. * * To delete the trace data from flash: + * mem spiffs remove -f hf_14asniff.trace * * Caveats / notes: * - Trace buffer will be cleared on starting stand-alone mode. Data in flash diff --git a/armsrc/Standalone/hf_14bsniff.c b/armsrc/Standalone/hf_14bsniff.c index d342afa93..d3adaeb23 100644 --- a/armsrc/Standalone/hf_14bsniff.c +++ b/armsrc/Standalone/hf_14bsniff.c @@ -14,9 +14,24 @@ * - LED3: sniffed reader command, turns off when finished sniffing tag command * - LED4: unmounting/sync'ing flash (normally < 100ms) * + * To retrieve trace data from flash: + * + * 1. mem spiffs dump -s hf_14bsniff.trace -d hf_14bsniff.trace + * Copies trace data file from flash to your PC. + * + * 2. trace load -f hf_14bsniff.trace + * Loads trace data from a file into PC-side buffers. + * + * 3. For ISO14a: trace list -t 14b -1 + * + * Lists trace data from buffer without requesting it from PM3. + * * This module emits debug strings during normal operation -- so try it out in * the lab connected to PM3 client before taking it into the field. * + * To delete the trace data from flash: + * mem spiffs remove -f hf_14bsniff.trace + * * Caveats / notes: * - Trace buffer will be cleared on starting stand-alone mode. * - This module will terminate if the trace buffer is full. diff --git a/armsrc/Standalone/hf_15sniff.c b/armsrc/Standalone/hf_15sniff.c index 24d068275..ad1d3f8b6 100644 --- a/armsrc/Standalone/hf_15sniff.c +++ b/armsrc/Standalone/hf_15sniff.c @@ -43,7 +43,7 @@ * 1. mem spiffs dump -s hf_15693sniff.trace -d hf_15693sniff.trace * Copies trace data file from flash to your PC. * - * 2. trace load hf_15693sniff.trace + * 2. trace load -f hf_15693sniff.trace * Loads trace data from a file into PC-side buffers. * * 3. For ISO15693: trace list -t 15 -1 @@ -54,6 +54,7 @@ * the lab connected to PM3 client before taking it into the field. * * To delete the trace data from flash: + * mem spiffs remove -f hf_15693sniff.trace * * Caveats / notes: * - Trace buffer will be cleared on starting stand-alone mode. Data in flash From 5a9819ad66265f79c10a1a2e5cf6669891c075d8 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 9 Sep 2023 09:35:08 +0200 Subject: [PATCH 279/299] text --- CHANGELOG.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6854aef6c..5a0eb1497 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,8 +3,18 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + +## [Raccoon][2003-09-09] + - Changed text and adjust pm3_test case for mf_aes_brute (@doegox) + - Fix CPPChecker warnings (@doegox) + - Fix TubmleWeed docker setup (@doegox) + - Added default keys (@ernestask) (@craftbyte) + - Fixed MFU authentication to send PACK correctly (@shallax) + - Fixed list output when line has 16 bytes (@piru) + - Changed AIDlist w new entries (@kormax) - Swapped to OE1 for Shallow modulation on RDV4. Thanks to @gentilkiwi for testing (@d18c7db) - Changed iClass SIO and Legacy credential detection to be more reliable (@nvx) + - Add hf_cardhopper standalone mode for long-distance relay attacks (@startrekdude) - Added `hf iclass esetblk` - set iClass emulator memory block data (@nvx) - Added cryptorf regressiontests (@iceman1001) - Fixed `cryptorf/sma_multi` - local state used in multithread (@iceman1001) @@ -47,8 +57,6 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Changed `hf_mf_luxeo_dump.lua` - now have list of keys to iterate (@iceman1001) - Fixed the timeout of TCP connections (@wh201906) - Changed the connection timeout configurable (@wh201906) - - Add hf_cardhopper standalone mode for long-distance relay attacks (@startrekdude) - - Fix MFU authentication to send PACK correctly (@shallax) ## [Seven.4.16717][2023-06-25] - Change `hf 14a info` - now identifes QL88 tags (@iceman1001) From 6ca0ce704afc400a9682f0ce7daff24c6857252c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 9 Sep 2023 11:00:00 +0200 Subject: [PATCH 280/299] Release v4.17140 - Raccoon --- Makefile.defs | 4 ++-- armsrc/Makefile | 2 +- bootrom/Makefile | 2 +- client/CMakeLists.txt | 4 ++-- client/Makefile | 4 ++-- client/deps/amiibo.cmake | 2 +- client/deps/cliparser.cmake | 2 +- client/deps/hardnested.cmake | 18 ++++++++-------- client/deps/jansson.cmake | 2 +- client/deps/lua.cmake | 2 +- client/deps/mbedtls.cmake | 2 +- client/deps/reveng.cmake | 2 +- client/deps/tinycbor.cmake | 2 +- client/deps/whereami.cmake | 2 +- client/experimental_lib/CMakeLists.txt | 2 +- client/src/proxmark3.c | 2 +- common/default_version_pm3.c | 29 +++++++------------------- common_arm/Makefile.common | 2 +- 18 files changed, 35 insertions(+), 50 deletions(-) diff --git a/Makefile.defs b/Makefile.defs index 76409a37d..874440a47 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -112,8 +112,8 @@ ifeq ($(DEBUG),1) DEFCFLAGS = -g -O0 -fstrict-aliasing -pipe DEFLDFLAGS = else - DEFCXXFLAGS = -Wall -Werror -O3 -pipe - DEFCFLAGS = -Wall -Werror -O3 -fstrict-aliasing -pipe + DEFCXXFLAGS = -Wall -O3 -pipe + DEFCFLAGS = -Wall -O3 -fstrict-aliasing -pipe DEFLDFLAGS = endif diff --git a/armsrc/Makefile b/armsrc/Makefile index d6ab2bfc4..407b0b174 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -184,7 +184,7 @@ showinfo: # version_pm3.c should be checked on every time fullimage.stage1.elf should be remade version_pm3.c: default_version_pm3.c $(OBJDIR)/fpga_version_info.o $(OBJDIR)/fpga_all.o $(THUMBOBJ) $(ARMOBJ) .FORCE $(info [-] CHECK $@) - $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ + $(Q)$(CP) $< $@ fpga_version_info.c: $(FPGA_BITSTREAMS) $(FPGA_COMPRESSOR) $(info [-] GEN $@) diff --git a/bootrom/Makefile b/bootrom/Makefile index b6825530d..86c785cd1 100644 --- a/bootrom/Makefile +++ b/bootrom/Makefile @@ -56,7 +56,7 @@ OBJS = $(OBJDIR)/bootrom.s19 # version_pm3.c should be checked on every compilation version_pm3.c: default_version_pm3.c .FORCE $(info [=] CHECK $@) - $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ + $(Q)$(CP) $< $@ all: showinfo $(OBJS) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index eaee2f0f0..a71a2585d 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -397,7 +397,7 @@ set (TARGET_SOURCES add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c - COMMAND sh ${PM3_ROOT}/tools/mkversion.sh ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c + COMMAND ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c DEPENDS ${PM3_ROOT}/common/default_version_pm3.c ) @@ -633,7 +633,7 @@ add_executable(proxmark3 ${ADDITIONAL_SRC} ) -target_compile_options(proxmark3 PUBLIC -Wall -Werror -O3) +target_compile_options(proxmark3 PUBLIC -Wall -O3) if (EMBED_READLINE) if (NOT SKIPREADLINE EQUAL 1) add_dependencies(proxmark3 ncurses readline) diff --git a/client/Makefile b/client/Makefile index b63fdf329..0a0ca3c1b 100644 --- a/client/Makefile +++ b/client/Makefile @@ -415,7 +415,7 @@ endif PM3CFLAGS += -DHAVE_SNPRINTF -CXXFLAGS ?= -Wall -Werror -O3 +CXXFLAGS ?= -Wall -O3 CXXFLAGS += $(MYDEFS) $(MYCXXFLAGS) $(MYINCLUDES) PM3CXXFLAGS = $(CXXFLAGS) @@ -921,7 +921,7 @@ src/pm3_pywrap.c: pm3.i # version_pm3.c should be checked on every compilation src/version_pm3.c: default_version_pm3.c .FORCE $(info [=] CHECK $@) - $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ + $(Q)$(CP) $< $@ # easy printing of MAKE VARIABLES print-%: ; @echo $* = $($*) diff --git a/client/deps/amiibo.cmake b/client/deps/amiibo.cmake index c946c0682..8c524c170 100644 --- a/client/deps/amiibo.cmake +++ b/client/deps/amiibo.cmake @@ -19,7 +19,7 @@ target_link_libraries(pm3rrg_rdv4_amiibo PRIVATE m pm3rrg_rdv4_mbedtls) -target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_amiibo PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_amiibo PRIVATE amiitool diff --git a/client/deps/cliparser.cmake b/client/deps/cliparser.cmake index fccae33b7..a85cc2374 100644 --- a/client/deps/cliparser.cmake +++ b/client/deps/cliparser.cmake @@ -9,5 +9,5 @@ target_include_directories(pm3rrg_rdv4_cliparser PRIVATE ../../include ../src) target_include_directories(pm3rrg_rdv4_cliparser INTERFACE cliparser) -target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_cliparser PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/hardnested.cmake b/client/deps/hardnested.cmake index ec545e2a8..468ee4ef2 100644 --- a/client/deps/hardnested.cmake +++ b/client/deps/hardnested.cmake @@ -2,7 +2,7 @@ add_library(pm3rrg_rdv4_hardnested_nosimd OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) -target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_hardnested_nosimd PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_nosimd PRIVATE @@ -32,7 +32,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_mmx BEFORE PRIVATE -mmmx -mno-sse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_mmx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -47,7 +47,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_sse2 BEFORE PRIVATE -mmmx -msse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_sse2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -62,7 +62,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx BEFORE PRIVATE -mmmx -msse2 -mavx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -77,7 +77,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx2 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -92,7 +92,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx512 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mavx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -116,7 +116,7 @@ elseif ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST ARM64_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_hardnested_neon PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_neon PRIVATE @@ -134,7 +134,7 @@ elseif ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST ARM32_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_neon BEFORE PRIVATE -mfpu=neon) set_property(TARGET pm3rrg_rdv4_hardnested_neon PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -155,7 +155,7 @@ add_library(pm3rrg_rdv4_hardnested STATIC hardnested/hardnested_bruteforce.c $ ${SIMD_TARGETS}) -target_compile_options(pm3rrg_rdv4_hardnested PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_hardnested PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_hardnested PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested PRIVATE ../../common diff --git a/client/deps/jansson.cmake b/client/deps/jansson.cmake index c91a47047..42c701d5e 100644 --- a/client/deps/jansson.cmake +++ b/client/deps/jansson.cmake @@ -14,5 +14,5 @@ add_library(pm3rrg_rdv4_jansson STATIC target_compile_definitions(pm3rrg_rdv4_jansson PRIVATE HAVE_STDINT_H) target_include_directories(pm3rrg_rdv4_jansson INTERFACE jansson) -target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Werror -Wno-unused-function -O3) +target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Wno-unused-function -O3) set_property(TARGET pm3rrg_rdv4_jansson PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/lua.cmake b/client/deps/lua.cmake index 12870342e..5cf33d724 100644 --- a/client/deps/lua.cmake +++ b/client/deps/lua.cmake @@ -52,5 +52,5 @@ if (NOT MINGW) endif (NOT MINGW) target_include_directories(pm3rrg_rdv4_lua INTERFACE liblua) -target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_lua PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index 58b9aae23..35ee2c967 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -47,5 +47,5 @@ add_library(pm3rrg_rdv4_mbedtls STATIC target_include_directories(pm3rrg_rdv4_mbedtls PRIVATE ../../common) target_include_directories(pm3rrg_rdv4_mbedtls INTERFACE ../../common/mbedtls) -target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_mbedtls PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/reveng.cmake b/client/deps/reveng.cmake index d7e3cfd8a..1040730f1 100644 --- a/client/deps/reveng.cmake +++ b/client/deps/reveng.cmake @@ -13,5 +13,5 @@ target_include_directories(pm3rrg_rdv4_reveng PRIVATE ../src ../../include) target_include_directories(pm3rrg_rdv4_reveng INTERFACE reveng) -target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_reveng PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/tinycbor.cmake b/client/deps/tinycbor.cmake index 5a6abda25..c74618149 100644 --- a/client/deps/tinycbor.cmake +++ b/client/deps/tinycbor.cmake @@ -11,5 +11,5 @@ add_library(pm3rrg_rdv4_tinycbor STATIC target_include_directories(pm3rrg_rdv4_tinycbor INTERFACE tinycbor) # Strange errors on Mingw when compiling with -O3 -target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -Werror -O2) +target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -O2) set_property(TARGET pm3rrg_rdv4_tinycbor PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/whereami.cmake b/client/deps/whereami.cmake index d2d6a5b2a..721873066 100644 --- a/client/deps/whereami.cmake +++ b/client/deps/whereami.cmake @@ -2,5 +2,5 @@ add_library(pm3rrg_rdv4_whereami STATIC whereami/whereami.c) target_compile_definitions(pm3rrg_rdv4_whereami PRIVATE WAI_PM3_TUNED) target_include_directories(pm3rrg_rdv4_whereami INTERFACE whereami) -target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_whereami PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index a5caeb014..216f13362 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -397,7 +397,7 @@ set (TARGET_SOURCES add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c - COMMAND sh ${PM3_ROOT}/tools/mkversion.sh ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c + COMMAND ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c DEPENDS ${PM3_ROOT}/common/default_version_pm3.c ) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index a91f74179..6abc00b8e 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -42,7 +42,7 @@ static int mainret = PM3_ESOFT; #ifndef LIBPM3 #define BANNERMSG1 "" #define BANNERMSG2 " [ :coffee: ]" -#define BANNERMSG3 "" +#define BANNERMSG3 "Release v4.17140 - Raccoon" typedef enum LogoMode { UTF8, ANSI, ASCII } LogoMode; diff --git a/common/default_version_pm3.c b/common/default_version_pm3.c index d93a7ef15..376b85de6 100644 --- a/common/default_version_pm3.c +++ b/common/default_version_pm3.c @@ -1,20 +1,5 @@ -//----------------------------------------------------------------------------- -// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// See LICENSE.txt for the text of the license. -//----------------------------------------------------------------------------- #include "common.h" -/* This is the default version_pm3.c file that Makefile.common falls back to if sh is not available */ +/* Generated file, do not edit */ #ifndef ON_DEVICE #define SECTVERSINFO #else @@ -23,10 +8,10 @@ const struct version_information_t SECTVERSINFO g_version_information = { VERSION_INFORMATION_MAGIC, - 1, /* version 1 */ - 0, /* version information not present */ - 2, /* cleanliness couldn't be determined */ - "Iceman/master/unknown", - "1970-01-01 00:00:00", - "no sha256" + 1, + 1, + 2, + "Iceman/master/v4.17140", + "2023-09-09 11:00:00", + "5901f2664" }; diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index 18d931b46..3c01c9a2e 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -49,7 +49,7 @@ VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/ INCLUDES = ../include/proxmark3_arm.h ../include/at91sam7s512.h ../include/config_gpio.h ../include/pm3_cmd.h ARMCFLAGS = -mthumb-interwork -fno-builtin -DEFCFLAGS = -Wall -Werror -Os -pedantic -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -Os -pedantic -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wchar-subscripts -Wundef -Wunused -Wuninitialized -Wpointer-arith -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits From f9877f79de6ebe6ef57fcb3a52d31e2858d9276f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 9 Sep 2023 11:00:00 +0200 Subject: [PATCH 281/299] Revert "Release v4.17140 - Raccoon" This reverts commit 6ca0ce704afc400a9682f0ce7daff24c6857252c. --- Makefile.defs | 4 ++-- armsrc/Makefile | 2 +- bootrom/Makefile | 2 +- client/CMakeLists.txt | 4 ++-- client/Makefile | 4 ++-- client/deps/amiibo.cmake | 2 +- client/deps/cliparser.cmake | 2 +- client/deps/hardnested.cmake | 18 ++++++++-------- client/deps/jansson.cmake | 2 +- client/deps/lua.cmake | 2 +- client/deps/mbedtls.cmake | 2 +- client/deps/reveng.cmake | 2 +- client/deps/tinycbor.cmake | 2 +- client/deps/whereami.cmake | 2 +- client/experimental_lib/CMakeLists.txt | 2 +- client/src/proxmark3.c | 2 +- common/default_version_pm3.c | 29 +++++++++++++++++++------- common_arm/Makefile.common | 2 +- 18 files changed, 50 insertions(+), 35 deletions(-) diff --git a/Makefile.defs b/Makefile.defs index 874440a47..76409a37d 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -112,8 +112,8 @@ ifeq ($(DEBUG),1) DEFCFLAGS = -g -O0 -fstrict-aliasing -pipe DEFLDFLAGS = else - DEFCXXFLAGS = -Wall -O3 -pipe - DEFCFLAGS = -Wall -O3 -fstrict-aliasing -pipe + DEFCXXFLAGS = -Wall -Werror -O3 -pipe + DEFCFLAGS = -Wall -Werror -O3 -fstrict-aliasing -pipe DEFLDFLAGS = endif diff --git a/armsrc/Makefile b/armsrc/Makefile index 407b0b174..d6ab2bfc4 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -184,7 +184,7 @@ showinfo: # version_pm3.c should be checked on every time fullimage.stage1.elf should be remade version_pm3.c: default_version_pm3.c $(OBJDIR)/fpga_version_info.o $(OBJDIR)/fpga_all.o $(THUMBOBJ) $(ARMOBJ) .FORCE $(info [-] CHECK $@) - $(Q)$(CP) $< $@ + $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ fpga_version_info.c: $(FPGA_BITSTREAMS) $(FPGA_COMPRESSOR) $(info [-] GEN $@) diff --git a/bootrom/Makefile b/bootrom/Makefile index 86c785cd1..b6825530d 100644 --- a/bootrom/Makefile +++ b/bootrom/Makefile @@ -56,7 +56,7 @@ OBJS = $(OBJDIR)/bootrom.s19 # version_pm3.c should be checked on every compilation version_pm3.c: default_version_pm3.c .FORCE $(info [=] CHECK $@) - $(Q)$(CP) $< $@ + $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ all: showinfo $(OBJS) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index a71a2585d..eaee2f0f0 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -397,7 +397,7 @@ set (TARGET_SOURCES add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c - COMMAND ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c + COMMAND sh ${PM3_ROOT}/tools/mkversion.sh ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c DEPENDS ${PM3_ROOT}/common/default_version_pm3.c ) @@ -633,7 +633,7 @@ add_executable(proxmark3 ${ADDITIONAL_SRC} ) -target_compile_options(proxmark3 PUBLIC -Wall -O3) +target_compile_options(proxmark3 PUBLIC -Wall -Werror -O3) if (EMBED_READLINE) if (NOT SKIPREADLINE EQUAL 1) add_dependencies(proxmark3 ncurses readline) diff --git a/client/Makefile b/client/Makefile index 0a0ca3c1b..b63fdf329 100644 --- a/client/Makefile +++ b/client/Makefile @@ -415,7 +415,7 @@ endif PM3CFLAGS += -DHAVE_SNPRINTF -CXXFLAGS ?= -Wall -O3 +CXXFLAGS ?= -Wall -Werror -O3 CXXFLAGS += $(MYDEFS) $(MYCXXFLAGS) $(MYINCLUDES) PM3CXXFLAGS = $(CXXFLAGS) @@ -921,7 +921,7 @@ src/pm3_pywrap.c: pm3.i # version_pm3.c should be checked on every compilation src/version_pm3.c: default_version_pm3.c .FORCE $(info [=] CHECK $@) - $(Q)$(CP) $< $@ + $(Q)$(SH) ../tools/mkversion.sh $@ || $(CP) $< $@ # easy printing of MAKE VARIABLES print-%: ; @echo $* = $($*) diff --git a/client/deps/amiibo.cmake b/client/deps/amiibo.cmake index 8c524c170..c946c0682 100644 --- a/client/deps/amiibo.cmake +++ b/client/deps/amiibo.cmake @@ -19,7 +19,7 @@ target_link_libraries(pm3rrg_rdv4_amiibo PRIVATE m pm3rrg_rdv4_mbedtls) -target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_amiibo PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_amiibo PRIVATE amiitool diff --git a/client/deps/cliparser.cmake b/client/deps/cliparser.cmake index a85cc2374..fccae33b7 100644 --- a/client/deps/cliparser.cmake +++ b/client/deps/cliparser.cmake @@ -9,5 +9,5 @@ target_include_directories(pm3rrg_rdv4_cliparser PRIVATE ../../include ../src) target_include_directories(pm3rrg_rdv4_cliparser INTERFACE cliparser) -target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_cliparser PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/hardnested.cmake b/client/deps/hardnested.cmake index 468ee4ef2..ec545e2a8 100644 --- a/client/deps/hardnested.cmake +++ b/client/deps/hardnested.cmake @@ -2,7 +2,7 @@ add_library(pm3rrg_rdv4_hardnested_nosimd OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) -target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_hardnested_nosimd PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_nosimd PRIVATE @@ -32,7 +32,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_mmx BEFORE PRIVATE -mmmx -mno-sse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_mmx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -47,7 +47,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_sse2 BEFORE PRIVATE -mmmx -msse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_sse2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -62,7 +62,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx BEFORE PRIVATE -mmmx -msse2 -mavx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -77,7 +77,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx2 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -92,7 +92,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx512 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mavx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -116,7 +116,7 @@ elseif ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST ARM64_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_hardnested_neon PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_neon PRIVATE @@ -134,7 +134,7 @@ elseif ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST ARM32_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_neon PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_neon BEFORE PRIVATE -mfpu=neon) set_property(TARGET pm3rrg_rdv4_hardnested_neon PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -155,7 +155,7 @@ add_library(pm3rrg_rdv4_hardnested STATIC hardnested/hardnested_bruteforce.c $ ${SIMD_TARGETS}) -target_compile_options(pm3rrg_rdv4_hardnested PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_hardnested PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_hardnested PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested PRIVATE ../../common diff --git a/client/deps/jansson.cmake b/client/deps/jansson.cmake index 42c701d5e..c91a47047 100644 --- a/client/deps/jansson.cmake +++ b/client/deps/jansson.cmake @@ -14,5 +14,5 @@ add_library(pm3rrg_rdv4_jansson STATIC target_compile_definitions(pm3rrg_rdv4_jansson PRIVATE HAVE_STDINT_H) target_include_directories(pm3rrg_rdv4_jansson INTERFACE jansson) -target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Wno-unused-function -O3) +target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Werror -Wno-unused-function -O3) set_property(TARGET pm3rrg_rdv4_jansson PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/lua.cmake b/client/deps/lua.cmake index 5cf33d724..12870342e 100644 --- a/client/deps/lua.cmake +++ b/client/deps/lua.cmake @@ -52,5 +52,5 @@ if (NOT MINGW) endif (NOT MINGW) target_include_directories(pm3rrg_rdv4_lua INTERFACE liblua) -target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_lua PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index 35ee2c967..58b9aae23 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -47,5 +47,5 @@ add_library(pm3rrg_rdv4_mbedtls STATIC target_include_directories(pm3rrg_rdv4_mbedtls PRIVATE ../../common) target_include_directories(pm3rrg_rdv4_mbedtls INTERFACE ../../common/mbedtls) -target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_mbedtls PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/reveng.cmake b/client/deps/reveng.cmake index 1040730f1..d7e3cfd8a 100644 --- a/client/deps/reveng.cmake +++ b/client/deps/reveng.cmake @@ -13,5 +13,5 @@ target_include_directories(pm3rrg_rdv4_reveng PRIVATE ../src ../../include) target_include_directories(pm3rrg_rdv4_reveng INTERFACE reveng) -target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_reveng PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/tinycbor.cmake b/client/deps/tinycbor.cmake index c74618149..5a6abda25 100644 --- a/client/deps/tinycbor.cmake +++ b/client/deps/tinycbor.cmake @@ -11,5 +11,5 @@ add_library(pm3rrg_rdv4_tinycbor STATIC target_include_directories(pm3rrg_rdv4_tinycbor INTERFACE tinycbor) # Strange errors on Mingw when compiling with -O3 -target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -O2) +target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -Werror -O2) set_property(TARGET pm3rrg_rdv4_tinycbor PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/whereami.cmake b/client/deps/whereami.cmake index 721873066..d2d6a5b2a 100644 --- a/client/deps/whereami.cmake +++ b/client/deps/whereami.cmake @@ -2,5 +2,5 @@ add_library(pm3rrg_rdv4_whereami STATIC whereami/whereami.c) target_compile_definitions(pm3rrg_rdv4_whereami PRIVATE WAI_PM3_TUNED) target_include_directories(pm3rrg_rdv4_whereami INTERFACE whereami) -target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_whereami PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index 216f13362..a5caeb014 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -397,7 +397,7 @@ set (TARGET_SOURCES add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/version_pm3.c - COMMAND ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c + COMMAND sh ${PM3_ROOT}/tools/mkversion.sh ${CMAKE_BINARY_DIR}/version_pm3.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version_pm3.c ${CMAKE_BINARY_DIR}/version_pm3.c DEPENDS ${PM3_ROOT}/common/default_version_pm3.c ) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 6abc00b8e..a91f74179 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -42,7 +42,7 @@ static int mainret = PM3_ESOFT; #ifndef LIBPM3 #define BANNERMSG1 "" #define BANNERMSG2 " [ :coffee: ]" -#define BANNERMSG3 "Release v4.17140 - Raccoon" +#define BANNERMSG3 "" typedef enum LogoMode { UTF8, ANSI, ASCII } LogoMode; diff --git a/common/default_version_pm3.c b/common/default_version_pm3.c index 376b85de6..d93a7ef15 100644 --- a/common/default_version_pm3.c +++ b/common/default_version_pm3.c @@ -1,5 +1,20 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- #include "common.h" -/* Generated file, do not edit */ +/* This is the default version_pm3.c file that Makefile.common falls back to if sh is not available */ #ifndef ON_DEVICE #define SECTVERSINFO #else @@ -8,10 +23,10 @@ const struct version_information_t SECTVERSINFO g_version_information = { VERSION_INFORMATION_MAGIC, - 1, - 1, - 2, - "Iceman/master/v4.17140", - "2023-09-09 11:00:00", - "5901f2664" + 1, /* version 1 */ + 0, /* version information not present */ + 2, /* cleanliness couldn't be determined */ + "Iceman/master/unknown", + "1970-01-01 00:00:00", + "no sha256" }; diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index 3c01c9a2e..18d931b46 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -49,7 +49,7 @@ VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/ INCLUDES = ../include/proxmark3_arm.h ../include/at91sam7s512.h ../include/config_gpio.h ../include/pm3_cmd.h ARMCFLAGS = -mthumb-interwork -fno-builtin -DEFCFLAGS = -Wall -Os -pedantic -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -Werror -Os -pedantic -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wchar-subscripts -Wundef -Wunused -Wuninitialized -Wpointer-arith -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits From 8c72ef42e4b27066e886a99ed2eca35cf2ffe6ab Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 9 Sep 2023 11:02:14 +0200 Subject: [PATCH 282/299] text update release version --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a0eb1497..201f5166a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac ## [unreleased][unreleased] -## [Raccoon][2003-09-09] +## [Raccoon.4.17140][2003-09-09] - Changed text and adjust pm3_test case for mf_aes_brute (@doegox) - Fix CPPChecker warnings (@doegox) - Fix TubmleWeed docker setup (@doegox) From cee33f7fe2d93702daac2c84d84ec80c1c0ccefd Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 9 Sep 2023 11:20:32 +0200 Subject: [PATCH 283/299] wrong date --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 201f5166a..1803239cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac ## [unreleased][unreleased] -## [Raccoon.4.17140][2003-09-09] +## [Raccoon.4.17140][2023-09-09] - Changed text and adjust pm3_test case for mf_aes_brute (@doegox) - Fix CPPChecker warnings (@doegox) - Fix TubmleWeed docker setup (@doegox) From b59fad842b46464a001086b172953e747be89555 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 10 Sep 2023 10:25:51 +0200 Subject: [PATCH 284/299] reworked the decimal to hexadecimal converter. It now works. Thanks to @ATK for pointing out it was broken --- client/lualibs/utils.lua | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/client/lualibs/utils.lua b/client/lualibs/utils.lua index 00103d6b4..03862ac29 100644 --- a/client/lualibs/utils.lua +++ b/client/lualibs/utils.lua @@ -262,14 +262,19 @@ local Utils = -- -- Converts DECIMAL to HEX - ConvertDecToHex = function(IN) - local B,K,OUT,I,D = 16, "0123456789ABCDEF", "", 0 - while IN > 0 do - I = I+1 - IN, D = math.floor(IN/B), math.modf(IN, B) + 1 - OUT = string.sub(K, D, D)..OUT + ConvertDecToHex = function(decimal) + if decimal == 0 then + return "0" end - return OUT + + local B,DIGITS,hex = 16, "0123456789ABCDEF", "" + + while decimal > 0 do + local remainder = math.fmod(decimal, B) + hex = string.sub(DIGITS, remainder + 1, remainder + 1) .. hex + decimal = math.floor(decimal / B) + end + return hex end, --- -- Convert Byte array to string of hex From b57f90b524ed7b69fd7e782ed84970dde51e5fea Mon Sep 17 00:00:00 2001 From: Antiklesys Date: Sun, 10 Sep 2023 19:09:18 +0800 Subject: [PATCH 285/299] Update hf_mf_uidbruteforce.lua Fixed issue with how the command is run, old version is invalid as it is missing the -t --- client/luascripts/hf_mf_uidbruteforce.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/luascripts/hf_mf_uidbruteforce.lua b/client/luascripts/hf_mf_uidbruteforce.lua index 4835ba03b..88dca4273 100644 --- a/client/luascripts/hf_mf_uidbruteforce.lua +++ b/client/luascripts/hf_mf_uidbruteforce.lua @@ -124,7 +124,7 @@ local function main(args) local c = string.format( command, n ) print('Running: "'..c..'"') core.console(c) - core.console('msleep '..timeout); + core.console('msleep -t'..timeout); core.console('hw ping') end From 2fb281bdc10094a109135e096ea4a983f5073e88 Mon Sep 17 00:00:00 2001 From: Antiklesys Date: Sun, 10 Sep 2023 19:11:21 +0800 Subject: [PATCH 286/299] Update iclass_default_keys.dic --- client/dictionaries/iclass_default_keys.dic | 1 - 1 file changed, 1 deletion(-) diff --git a/client/dictionaries/iclass_default_keys.dic b/client/dictionaries/iclass_default_keys.dic index aea6de36a..c717cd88f 100644 --- a/client/dictionaries/iclass_default_keys.dic +++ b/client/dictionaries/iclass_default_keys.dic @@ -18,7 +18,6 @@ E033CA419AEE43F9 # iCopy-x DRM keys 2020666666668888 # iCL tags 6666202066668888 # iCS tags reversed from the SOs -AFA785A7DAB33378 # from https://youtu.be/EH7dctOPxBA?t=805 # # default picopass KD / Page 0 / Book 1 FDCB5A52EA8F3090 From 186308cb4ad6ac5887cddc430c838ae1affb7ebe Mon Sep 17 00:00:00 2001 From: nvx Date: Sun, 10 Sep 2023 22:56:46 +1000 Subject: [PATCH 287/299] Add `hf iclass creditepurse` command to allow crediting the epurse debit value. --- CHANGELOG.md | 1 + armsrc/appmain.c | 4 + armsrc/iclass.c | 157 +++++++++++++++++++++++++++++++- armsrc/iclass.h | 1 + client/src/cmdhficlass.c | 124 +++++++++++++++++++++++++ client/src/pm3line_vocabulary.h | 1 + doc/commands.json | 26 +++++- doc/commands.md | 1 + include/iclass_cmd.h | 6 ++ include/pm3_cmd.h | 3 +- 10 files changed, 318 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1803239cb..d85eb7e2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added `hf iclass creditepurse` command to allow crediting the epurse debit value (@nvx) ## [Raccoon.4.17140][2023-09-09] - Changed text and adjust pm3_test case for mf_aes_brute (@doegox) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 900cb6517..42d551d9b 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -1940,6 +1940,10 @@ static void PacketReceived(PacketCommandNG *packet) { iClass_Restore((iclass_restore_req_t *)packet->data.asBytes); break; } + case CMD_HF_ICLASS_CREDIT_EPURSE: { + iclass_credit_epurse((iclass_credit_epurse_t *)packet->data.asBytes); + break; + } #endif #ifdef WITH_HFSNIFF diff --git a/armsrc/iclass.c b/armsrc/iclass.c index 5a68a8207..953cfaa6f 100644 --- a/armsrc/iclass.c +++ b/armsrc/iclass.c @@ -1902,13 +1902,13 @@ void iClass_WriteBlock(uint8_t *msg) { // verify write uint8_t all_ff[8] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; - if (payload->req.blockno == 2) { + if (pagemap == PICOPASS_SECURE_PAGEMODE && payload->req.blockno == 2) { // check response. e-purse update swaps first and second half if (memcmp(payload->data + 4, resp, 4) || memcmp(payload->data, resp + 4, 4)) { res = false; goto out; } - } else if (payload->req.blockno == 3 || payload->req.blockno == 4) { + } else if (pagemap == PICOPASS_SECURE_PAGEMODE && (payload->req.blockno == 3 || payload->req.blockno == 4)) { // check response. Key updates always return 0xffffffffffffffff if (memcmp(all_ff, resp, 8)) { res = false; @@ -1929,6 +1929,159 @@ out: reply_ng(CMD_HF_ICLASS_WRITEBL, PM3_SUCCESS, (uint8_t *)&res, sizeof(uint8_t)); } +void iclass_credit_epurse(iclass_credit_epurse_t *payload) { + + LED_A_ON(); + + bool shallow_mod = payload->req.shallow_mod; + + Iso15693InitReader(); + + // select tag. + uint32_t eof_time = 0; + picopass_hdr_t hdr = {0}; + uint8_t res = select_iclass_tag(&hdr, payload->req.use_credit_key, &eof_time, shallow_mod); + if (res == false) { + goto out; + } + + uint32_t start_time = eof_time + DELAY_ICLASS_VICC_TO_VCD_READER; + + uint8_t mac[4] = {0}; + + // authenticate + if (payload->req.do_auth) { + + res = authenticate_iclass_tag(&payload->req, &hdr, &start_time, &eof_time, mac); + if (res == false) { + goto out; + } + } + + start_time = eof_time + DELAY_ICLASS_VICC_TO_VCD_READER; + + uint8_t cmd_read[] = {ICLASS_CMD_READ_OR_IDENTIFY, payload->req.blockno, 0x00, 0x00}; + AddCrc(cmd_read + 1, 1); + + uint8_t epurse[10]; + res = iclass_send_cmd_with_retries(cmd_read, sizeof(cmd_read), epurse, sizeof(epurse), 10, 3, &start_time, ICLASS_READER_TIMEOUT_OTHERS, &eof_time, shallow_mod); + if (!res) { + switch_off(); + if (payload->req.send_reply) + reply_ng(CMD_HF_ICLASS_CREDIT_EPURSE, PM3_ETIMEOUT, (uint8_t *)&res, sizeof(uint8_t)); + return; + } + + uint8_t write[14] = { 0x80 | ICLASS_CMD_UPDATE, payload->req.blockno }; + uint8_t write_len = 14; + + uint8_t epurse_offset = 0; + const uint8_t empty_epurse[] = {0xff, 0xff, 0xff, 0xff}; + if (!memcmp(epurse, empty_epurse, 4)) { + // epurse data in stage 2 + epurse_offset = 4; + } + + memcpy(epurse + epurse_offset, payload->epurse, 4); + + // blank out debiting value as per the first step of the crediting procedure + epurse[epurse_offset + 0] = 0xFF; + epurse[epurse_offset + 1] = 0xFF; + + // initial epurse write for credit + memcpy(write + 2, epurse, 8); + + doMAC_N(write + 1, 9, payload->req.use_credit_key ? hdr.key_c : hdr.key_d, mac); + memcpy(write + 10, mac, sizeof(mac)); + + start_time = eof_time + DELAY_ICLASS_VICC_TO_VCD_READER; + + uint8_t resp[10] = {0}; + + uint8_t tries = 3; + while (tries-- > 0) { + + iclass_send_as_reader(write, write_len, &start_time, &eof_time, shallow_mod); + + if (tearoff_hook() == PM3_ETEAROFF) { // tearoff occurred + res = false; + switch_off(); + if (payload->req.send_reply) + reply_ng(CMD_HF_ICLASS_CREDIT_EPURSE, PM3_ETEAROFF, (uint8_t *)&res, sizeof(uint8_t)); + return; + } else { + + uint16_t resp_len = 0; + int res2 = GetIso15693AnswerFromTag(resp, sizeof(resp), ICLASS_READER_TIMEOUT_UPDATE, &eof_time, false, true, &resp_len); + if (res2 == PM3_SUCCESS && resp_len == 10) { + res = true; + break; + } + } + } + + if (tries == 0) { + res = false; + goto out; + } + + // check response. e-purse update swaps first and second half + if (memcmp(write + 2 + 4, resp, 4) || memcmp(write + 2, resp + 4, 4)) { + res = false; + goto out; + } + + // new epurse write + // epurse offset is now flipped after the first write + epurse_offset ^= 4; + memcpy(resp + epurse_offset, payload->epurse, 4); + memcpy(write + 2, resp, 8); + + doMAC_N(write + 1, 9, payload->req.use_credit_key ? hdr.key_c : hdr.key_d, mac); + memcpy(write + 10, mac, sizeof(mac)); + + start_time = eof_time + DELAY_ICLASS_VICC_TO_VCD_READER; + + tries = 3; + while (tries-- > 0) { + + iclass_send_as_reader(write, write_len, &start_time, &eof_time, shallow_mod); + + if (tearoff_hook() == PM3_ETEAROFF) { // tearoff occurred + res = false; + switch_off(); + if (payload->req.send_reply) + reply_ng(CMD_HF_ICLASS_CREDIT_EPURSE, PM3_ETEAROFF, (uint8_t *)&res, sizeof(uint8_t)); + return; + } else { + + uint16_t resp_len = 0; + int res2 = GetIso15693AnswerFromTag(resp, sizeof(resp), ICLASS_READER_TIMEOUT_UPDATE, &eof_time, false, true, &resp_len); + if (res2 == PM3_SUCCESS && resp_len == 10) { + res = true; + break; + } + } + } + + if (tries == 0) { + res = false; + goto out; + } + + // check response. e-purse update swaps first and second half + if (memcmp(write + 2 + 4, resp, 4) || memcmp(write + 2, resp + 4, 4)) { + res = false; + goto out; + } + +out: + switch_off(); + + if (payload->req.send_reply) + reply_ng(CMD_HF_ICLASS_CREDIT_EPURSE, PM3_SUCCESS, (uint8_t *)&res, sizeof(uint8_t)); +} + void iClass_Restore(iclass_restore_req_t *msg) { // sanitation diff --git a/armsrc/iclass.h b/armsrc/iclass.h index ebbda2e9f..363c042ab 100644 --- a/armsrc/iclass.h +++ b/armsrc/iclass.h @@ -25,6 +25,7 @@ void SniffIClass(uint8_t jam_search_len, uint8_t *jam_search_string); void ReaderIClass(uint8_t flags); void iClass_WriteBlock(uint8_t *msg); +void iclass_credit_epurse(iclass_credit_epurse_t *payload); void iClass_Dump(uint8_t *msg); void iClass_Restore(iclass_restore_req_t *msg); diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 36144abbe..86dda89cd 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -2202,6 +2202,129 @@ static int CmdHFiClass_WriteBlock(const char *Cmd) { return isok; } +static int CmdHFiClassCreditEpurse(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf iclass creditepurse", + "Credit the epurse on an iCLASS tag. The provided key must be the credit key.\n" + "The first two bytes of the epurse are the debit value (big endian) and may be any value except FFFF.\n" + "The remaining two bytes of the epurse are the credit value and must be smaller than the previous value.", + "hf iclass creditepurse -d FEFFFFFF -k 001122334455667B\n" + "hf iclass creditepurse -d FEFFFFFF --ki 0"); + + void *argtable[] = { + arg_param_begin, + arg_str0("k", "key", "", "Credit key as 8 hex bytes"), + arg_int0(NULL, "ki", "", "Key index to select key from memory 'hf iclass managekeys'"), + arg_str1("d", "data", "", "data to write as 8 hex bytes"), + arg_lit0(NULL, "elite", "elite computations applied to key"), + arg_lit0(NULL, "raw", "no computations applied to key"), + arg_lit0("v", "verbose", "verbose output"), + arg_lit0(NULL, "shallow", "use shallow (ASK) reader modulation instead of OOK"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, false); + + int key_len = 0; + uint8_t key[8] = {0}; + + CLIGetHexWithReturn(ctx, 1, key, &key_len); + + int key_nr = arg_get_int_def(ctx, 2, -1); + + if (key_len > 0 && key_nr >= 0) { + PrintAndLogEx(ERR, "Please specify key or index, not both"); + CLIParserFree(ctx); + return PM3_EINVARG; + } + + if (key_len > 0) { + if (key_len != 8) { + PrintAndLogEx(ERR, "Key is incorrect length"); + CLIParserFree(ctx); + return PM3_EINVARG; + } + } else if (key_nr >= 0) { + if (key_nr < ICLASS_KEYS_MAX) { + memcpy(key, iClass_Key_Table[key_nr], 8); + PrintAndLogEx(SUCCESS, "Using key[%d] " _GREEN_("%s"), key_nr, sprint_hex(iClass_Key_Table[key_nr], 8)); + } else { + PrintAndLogEx(ERR, "Key number is invalid"); + CLIParserFree(ctx); + return PM3_EINVARG; + } + } else { + PrintAndLogEx(ERR, "Key or key number must be provided"); + CLIParserFree(ctx); + return PM3_EINVARG; + } + + int blockno = 2; + + int data_len = 0; + uint8_t data[4] = {0}; + CLIGetHexWithReturn(ctx, 3, data, &data_len); + + if (data_len != 4) { + PrintAndLogEx(ERR, "Data must be 4 hex bytes (8 hex symbols)"); + CLIParserFree(ctx); + return PM3_EINVARG; + } + + bool elite = arg_get_lit(ctx, 4); + bool rawkey = arg_get_lit(ctx, 5); + bool verbose = arg_get_lit(ctx, 6); + bool shallow_mod = arg_get_lit(ctx, 7); + + CLIParserFree(ctx); + + if ((rawkey + elite) > 1) { + PrintAndLogEx(ERR, "Can not use a combo of 'elite', 'raw'"); + return PM3_EINVARG; + } + + iclass_credit_epurse_t payload = { + .req.use_raw = rawkey, + .req.use_elite = elite, + .req.use_credit_key = true, + .req.use_replay = false, + .req.blockno = blockno, + .req.send_reply = true, + .req.do_auth = true, + .req.shallow_mod = shallow_mod, + }; + memcpy(payload.req.key, key, 8); + memcpy(payload.epurse, data, sizeof(payload.epurse)); + + clearCommandBuffer(); + SendCommandNG(CMD_HF_ICLASS_CREDIT_EPURSE, (uint8_t *)&payload, sizeof(payload)); + PacketResponseNG resp; + + int isok; + if (WaitForResponseTimeout(CMD_HF_ICLASS_CREDIT_EPURSE, &resp, 2000) == 0) { + if (verbose) PrintAndLogEx(WARNING, "Command execute timeout"); + isok = PM3_ETIMEOUT; + } else if (resp.status != PM3_SUCCESS) { + if (verbose) PrintAndLogEx(ERR, "failed to communicate with card"); + isok = resp.status; + } else { + isok = (resp.data.asBytes[0] == 1) ? PM3_SUCCESS : PM3_ESOFT; + } + + switch (isok) { + case PM3_SUCCESS: + PrintAndLogEx(SUCCESS, "Credited epurse successfully"); + break; + case PM3_ETEAROFF: + if (verbose) + PrintAndLogEx(INFO, "Writing tear off triggered"); + break; + default: + PrintAndLogEx(FAILED, "Writing failed"); + break; + } + return isok; +} + static int CmdHFiClassRestore(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf iclass restore", @@ -4278,6 +4401,7 @@ static command_t CommandTable[] = { {"sniff", CmdHFiClassSniff, IfPm3Iclass, "Eavesdrop Picopass / iCLASS communication"}, {"view", CmdHFiClassView, AlwaysAvailable, "Display content from tag dump file"}, {"wrbl", CmdHFiClass_WriteBlock, IfPm3Iclass, "Write Picopass / iCLASS block"}, + {"creditepurse", CmdHFiClassCreditEpurse, IfPm3Iclass, "Credit epurse value"}, {"-----------", CmdHelp, AlwaysAvailable, "--------------------- " _CYAN_("recovery") " --------------------"}, // {"autopwn", CmdHFiClassAutopwn, IfPm3Iclass, "Automatic key recovery tool for iCLASS"}, {"chk", CmdHFiClassCheckKeys, IfPm3Iclass, "Check keys"}, diff --git a/client/src/pm3line_vocabulary.h b/client/src/pm3line_vocabulary.h index 8926ffb94..5cbe8b495 100644 --- a/client/src/pm3line_vocabulary.h +++ b/client/src/pm3line_vocabulary.h @@ -276,6 +276,7 @@ const static vocabulary_t vocabulary[] = { { 0, "hf iclass sniff" }, { 1, "hf iclass view" }, { 0, "hf iclass wrbl" }, + { 0, "hf iclass creditepurse" }, { 0, "hf iclass chk" }, { 1, "hf iclass loclass" }, { 1, "hf iclass lookup" }, diff --git a/doc/commands.json b/doc/commands.json index bbe8f8b93..55da69cd3 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -3029,6 +3029,26 @@ ], "usage": "hf iclass configcard [-hglp] [--ci ] [--ki ]" }, + "hf iclass creditepurse": { + "command": "hf iclass creditepurse", + "description": "Credit the epurse on an iCLASS tag. The provided key must be the credit key. The first two bytes of the epurse are the debit value (big endian) and may be any value except FFFF. The remaining two bytes of the epurse are the credit value and must be smaller than the previous value.", + "notes": [ + "hf iclass creditepurse -d FEFFFFFF -k 001122334455667B", + "hf iclass creditepurse -d FEFFFFFF --ki 0" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-k, --key Credit key as 8 hex bytes", + "--ki Key index to select key from memory 'hf iclass managekeys'", + "-d, --data data to write as 8 hex bytes", + "--elite elite computations applied to key", + "--raw no computations applied to key", + "-v, --verbose verbose output", + "--shallow use shallow (ASK) reader modulation instead of OOK" + ], + "usage": "hf iclass creditepurse [-hv] [-k ] [--ki ] -d [--elite] [--raw] [--shallow]" + }, "hf iclass decrypt": { "command": "hf iclass decrypt", "description": "3DES decrypt data This is a naive implementation, it tries to decrypt every block after block 6. Correct behaviour would be to decrypt only the application areas where the key is valid, which is defined by the configuration block. OBS! In order to use this function, the file `iclass_decryptionkey.bin` must reside in the resources directory. The file should be 16 bytes binary data or... make sure your cardhelper is placed in the sim module", @@ -8786,7 +8806,7 @@ "-1, --ht1 Card type Hitag 1", "-2, --ht2 Card type Hitag 2", "-s, --hts Card type Hitag S", - "-m, --htm Card type Hitag \u03bc" + "-m, --htm Card type Hitag \u00ce\u00bc" ], "usage": "lf hitag eload [-h12sm] -f " }, @@ -11835,8 +11855,8 @@ } }, "metadata": { - "commands_extracted": 686, + "commands_extracted": 687, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-09-07T18:12:46" + "extracted_on": "2023-09-10T12:59:25" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index 919ce3f8e..0c94700e6 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -415,6 +415,7 @@ Check column "offline" for their availability. |`hf iclass sniff `|N |`Eavesdrop Picopass / iCLASS communication` |`hf iclass view `|Y |`Display content from tag dump file` |`hf iclass wrbl `|N |`Write Picopass / iCLASS block` +|`hf iclass creditepurse `|N |`Credit epurse value` |`hf iclass chk `|N |`Check keys` |`hf iclass loclass `|Y |`Use loclass to perform bruteforce reader attack` |`hf iclass lookup `|Y |`Uses authentication trace to check for key in dictionary file` diff --git a/include/iclass_cmd.h b/include/iclass_cmd.h index bc7c1e6ca..dca08b6aa 100644 --- a/include/iclass_cmd.h +++ b/include/iclass_cmd.h @@ -87,6 +87,12 @@ typedef struct { uint8_t mac[4]; } PACKED iclass_writeblock_req_t; +// iCLASS write block request data structure +typedef struct { + iclass_auth_req_t req; + uint8_t epurse[4]; +} PACKED iclass_credit_epurse_t; + // iCLASS dump data structure typedef struct { uint8_t blockno; diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index a96a16c05..e84a4183b 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -565,7 +565,7 @@ typedef struct { #define CMD_HF_EPA_COLLECT_NONCE 0x038A #define CMD_HF_EPA_REPLAY 0x038B -#define CMD_HF_EPA_PACE_SIMULATE 0x039C +#define CMD_HF_EPA_PACE_SIMULATE 0x038C #define CMD_HF_LEGIC_INFO 0x03BC #define CMD_HF_LEGIC_ESET 0x03BD @@ -581,6 +581,7 @@ typedef struct { #define CMD_HF_ICLASS_EML_MEMSET 0x0398 #define CMD_HF_ICLASS_CHKKEYS 0x039A #define CMD_HF_ICLASS_RESTORE 0x039B +#define CMD_HF_ICLASS_CREDIT_EPURSE 0x039C // For ISO1092 / FeliCa #define CMD_HF_FELICA_SIMULATE 0x03A0 From 77258365d45d272e40b3b044b38cc2667bf194e2 Mon Sep 17 00:00:00 2001 From: Antiklesys Date: Sun, 10 Sep 2023 23:03:53 +0800 Subject: [PATCH 288/299] Update hf_mf_ultimatecard.lua Fixed bug, should be 13 instead of 12 as there are two 12 otherwise and this is referring to the 128b one instead --- client/luascripts/hf_mf_ultimatecard.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/luascripts/hf_mf_ultimatecard.lua b/client/luascripts/hf_mf_ultimatecard.lua index 4bb6034ee..819f68b40 100644 --- a/client/luascripts/hf_mf_ultimatecard.lua +++ b/client/luascripts/hf_mf_ultimatecard.lua @@ -737,7 +737,7 @@ local function set_type(tagtype) write_uid('04112233445566') write_otp('00000000') -- Setting OTP to default 00 00 00 00 write_version('0004030101000b03') -- UL-EV1 (48) 00 04 03 01 01 00 0b 03 - elseif tagtype == 12 then + elseif tagtype == 13 then print('Setting: Ultimate Magic card to UL-EV1 128') connect() send("CF".._key.."F001010000000003000978009102DABC19101011121314151644000000") From 08b4769f3f34e5a25b16eece437750edceb4d020 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 10 Sep 2023 19:49:09 +0200 Subject: [PATCH 289/299] text --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1803239cb..be1d1b9f2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed `utils.lua` library function "convertdectohex" wasn't working (@iceman1001) ## [Raccoon.4.17140][2023-09-09] - Changed text and adjust pm3_test case for mf_aes_brute (@doegox) From 4632e15dabb95e2a3c97b4f6370991244d96b218 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sun, 10 Sep 2023 19:51:21 +0200 Subject: [PATCH 290/299] maur... --- client/dictionaries/mfc_default_keys.dic | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 088ab80d0..241581b69 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -2090,6 +2090,9 @@ D144BD193063 8627C10A7014 453857395635 # +# Unknown hotel system Sec 0 / A +353038383134 +# # Data from "the more the marriott" mifare project (colonelborkmundus) # aka The Horde # From cf92d8edc02e1022edbf029cf8ff85fcb894a064 Mon Sep 17 00:00:00 2001 From: spandox2 <31641448+spandox2@users.noreply.github.com> Date: Mon, 11 Sep 2023 11:43:04 -0400 Subject: [PATCH 291/299] Update cmdhfmf.c Changed line 2510 to change DEBUG to ERR Signed-off-by: spandox2 <31641448+spandox2@users.noreply.github.com> --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index be336bcb3..46d24f602 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -2508,7 +2508,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - PrintAndLogEx(DEBUG, "iso14443a card select failed"); + PrintAndLogEx(ERR, "iso14443a card select failed (Hint: check card possition)"); return PM3_ECARDEXCHANGE; } From 5584410bbcdf225664ab4773d657defd94978653 Mon Sep 17 00:00:00 2001 From: spandox2 <31641448+spandox2@users.noreply.github.com> Date: Mon, 11 Sep 2023 11:56:45 -0400 Subject: [PATCH 292/299] Update cmdhfmf.c Problem: "hf mf autopwn" gave no response if no card was detected, leaving user confused. Solution: Change a DEBUG message to an ERR and give a hint that the card may be poorly positioned. Signed-off-by: spandox2 <31641448+spandox2@users.noreply.github.com> --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 46d24f602..4ae141cad 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -2508,7 +2508,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - PrintAndLogEx(ERR, "iso14443a card select failed (Hint: check card possition)"); + PrintAndLogEx(ERR, "iso14443a card select failed (Hint: check card position)"); return PM3_ECARDEXCHANGE; } From 67bfddde57f885eef2ab226c9ac062d4dfbcc5b1 Mon Sep 17 00:00:00 2001 From: spandox2 <31641448+spandox2@users.noreply.github.com> Date: Mon, 11 Sep 2023 13:18:56 -0400 Subject: [PATCH 293/299] Update cmdhfmf.c Changed ERR to HINT Signed-off-by: spandox2 <31641448+spandox2@users.noreply.github.com> --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 4ae141cad..d8683707e 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -2508,7 +2508,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - PrintAndLogEx(ERR, "iso14443a card select failed (Hint: check card position)"); + PrintAndLogEx(HINT, "iso14443a card select failed (Hint: check card position)"); return PM3_ECARDEXCHANGE; } From b9efd8ce48dd4b20c2503796986460fd879ca29a Mon Sep 17 00:00:00 2001 From: spandox2 <31641448+spandox2@users.noreply.github.com> Date: Mon, 11 Sep 2023 13:24:54 -0400 Subject: [PATCH 294/299] Update cmdhfmf.c text change Signed-off-by: spandox2 <31641448+spandox2@users.noreply.github.com> --- client/src/cmdhfmf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index d8683707e..d9153fc61 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -2508,7 +2508,8 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - PrintAndLogEx(HINT, "iso14443a card select failed (Hint: check card position)"); + PrintAndLogEx(DEBUG, "iso14443a card select failed"); + PrintAndLogEx(HINT, "Card Select failed. Hint: Try some distance and/or change the position of the card"); return PM3_ECARDEXCHANGE; } From 7a832e175e4fda6b7df1383e85495d8465a1c013 Mon Sep 17 00:00:00 2001 From: spandox2 <31641448+spandox2@users.noreply.github.com> Date: Mon, 11 Sep 2023 13:43:41 -0400 Subject: [PATCH 295/299] Update cmdhfmf.c Signed-off-by: spandox2 <31641448+spandox2@users.noreply.github.com> --- client/src/cmdhfmf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index d9153fc61..6dda245be 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -2509,7 +2509,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { PrintAndLogEx(DEBUG, "iso14443a card select failed"); - PrintAndLogEx(HINT, "Card Select failed. Hint: Try some distance and/or change the position of the card"); + PrintAndLogEx(FAILED, "No tag detected or other tag communication error"); return PM3_ECARDEXCHANGE; } From 5baba1fd432f94efabc99019704fdeb7740c4a16 Mon Sep 17 00:00:00 2001 From: spandox2 <31641448+spandox2@users.noreply.github.com> Date: Mon, 11 Sep 2023 13:48:09 -0400 Subject: [PATCH 296/299] Update cmdhfmf.c Signed-off-by: spandox2 <31641448+spandox2@users.noreply.github.com> --- client/src/cmdhfmf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 6dda245be..7f8be4fbf 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -2508,8 +2508,9 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { uint64_t select_status = resp.oldarg[0]; if (select_status == 0) { - PrintAndLogEx(DEBUG, "iso14443a card select failed"); + // iso14443a card select failed PrintAndLogEx(FAILED, "No tag detected or other tag communication error"); + PrintAndLogEx(HINT, "Hint: Try some distance or position of the card"); return PM3_ECARDEXCHANGE; } From 7f2433eb8b0d773b5c5c868826c154e116f7a70d Mon Sep 17 00:00:00 2001 From: Leopoldo Pla Sempere Date: Tue, 12 Sep 2023 09:44:16 +0200 Subject: [PATCH 297/299] Fix linking in explicit libatomic devices My Raspberry Pi Zero with latest Raspberry Pi OS thanks this after commit b17a733 Signed-off-by: Leopoldo Pla Sempere --- tools/cryptorf/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/cryptorf/Makefile b/tools/cryptorf/Makefile index 32c2c5ab4..293194f03 100644 --- a/tools/cryptorf/Makefile +++ b/tools/cryptorf/Makefile @@ -3,7 +3,7 @@ MYSRCS = cryptolib.c util.c MYINCLUDES = -I../../common/cryptorf MYCFLAGS = MYDEFS = -MYLDLIBS = -lpthread +MYLDLIBS = -lpthread -latomic BINS = cm sm sma sma_multi INSTALLTOOLS = $(BINS) From 774f1c33efaaccf633ede6e704800345eb313878 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 12 Sep 2023 20:22:04 +0200 Subject: [PATCH 298/299] fix atomic on macOS and all platforms --- tools/cryptorf/Makefile | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tools/cryptorf/Makefile b/tools/cryptorf/Makefile index 293194f03..45cd51a5d 100644 --- a/tools/cryptorf/Makefile +++ b/tools/cryptorf/Makefile @@ -3,7 +3,14 @@ MYSRCS = cryptolib.c util.c MYINCLUDES = -I../../common/cryptorf MYCFLAGS = MYDEFS = -MYLDLIBS = -lpthread -latomic + +# Atomic +# RPi Zero gcc requires -latomic +# but MacOSX /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld +# doesn't recognize option --as-needed +ifneq ($(platform),Darwin) + MYLDLIBS += -lpthread -Wl,--as-needed -latomic -Wl,--no-as-needed +endif BINS = cm sm sma sma_multi INSTALLTOOLS = $(BINS) From c26d33dfd3cebb803a384e838c07908ccda4e240 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 12 Sep 2023 20:47:59 +0200 Subject: [PATCH 299/299] forgot to set the var... --- tools/cryptorf/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/cryptorf/Makefile b/tools/cryptorf/Makefile index 45cd51a5d..96ac9393d 100644 --- a/tools/cryptorf/Makefile +++ b/tools/cryptorf/Makefile @@ -4,21 +4,21 @@ MYINCLUDES = -I../../common/cryptorf MYCFLAGS = MYDEFS = +platform = $(shell uname) + # Atomic # RPi Zero gcc requires -latomic # but MacOSX /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld # doesn't recognize option --as-needed ifneq ($(platform),Darwin) - MYLDLIBS += -lpthread -Wl,--as-needed -latomic -Wl,--no-as-needed + LDLIBS += -lpthread -Wl,--as-needed -latomic -Wl,--no-as-needed endif BINS = cm sm sma sma_multi INSTALLTOOLS = $(BINS) -platform = $(shell uname) - ifeq ($(platform),Darwin) -CXXFLAGS = -std=c++14 + CXXFLAGS = -std=c++14 endif include ../../Makefile.host

      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 b`uX+iKd&!;K0V?oKRw>O`Skm5Pmliqaj6pA literal 0 HcmV?d00001 From 6781dadc303b4850a96b5011f9880a8ca8487cd4 Mon Sep 17 00:00:00 2001 From: Anton Todorov Date: Sun, 6 Aug 2023 14:27:58 +0300 Subject: [PATCH 183/299] emv: display the transaction time as HH:MM:SS in the transaction log Signed-off-by: Anton Todorov --- client/src/emv/cmdemv.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 2282698d5..c322f6406 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -233,6 +233,11 @@ static int emv_parse_log(struct tlvdb *ttdb, const uint8_t *d, size_t n) { PrintAndLogEx(INFO, "%-30s... " _YELLOW_("20%02x-%02x-%02x"), s, d[pos], d[pos + 1], d[pos + 2]); } break; + case 0x9F21: + if (tpitem->len == 3) { + PrintAndLogEx(INFO, "%-30s... " _YELLOW_("%02x:%02x:%02x"), s, d[pos], d[pos + 1], d[pos + 2]); + } + break; default: PrintAndLogEx(INFO, "%-30s... " _YELLOW_("%s"), s, sprint_hex_inrow(d + pos, tpitem->len)); break; From 5e71621c692784ec99abd0612b8ac9db1d9cc46c Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Tue, 8 Aug 2023 20:52:21 -0700 Subject: [PATCH 184/299] `const` improvement for BigBuf.h --- armsrc/BigBuf.c | 6 +++--- armsrc/BigBuf.h | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/armsrc/BigBuf.c b/armsrc/BigBuf.c index 29f270b80..b622e013b 100644 --- a/armsrc/BigBuf.c +++ b/armsrc/BigBuf.c @@ -233,7 +233,7 @@ uint32_t BigBuf_get_traceLen(void) { by 'hf list -t raw', alternatively 'hf list -t ' for protocol-specific annotation of commands/responses. **/ -bool RAMFUNC LogTrace(const uint8_t *btBytes, uint16_t iLen, uint32_t timestamp_start, uint32_t timestamp_end, uint8_t *parity, bool reader2tag) { +bool RAMFUNC LogTrace(const uint8_t *btBytes, uint16_t iLen, uint32_t timestamp_start, uint32_t timestamp_end, const uint8_t *parity, bool reader2tag) { if (tracing == false) { return false; } @@ -290,7 +290,7 @@ bool RAMFUNC LogTrace(const uint8_t *btBytes, uint16_t iLen, uint32_t timestamp_ } // specific LogTrace function for ISO15693: the duration needs to be scaled because otherwise it won't fit into a uint16_t -bool LogTrace_ISO15693(const uint8_t *bytes, uint16_t len, uint32_t ts_start, uint32_t ts_end, uint8_t *parity, bool reader2tag) { +bool LogTrace_ISO15693(const uint8_t *bytes, uint16_t len, uint32_t ts_start, uint32_t ts_end, const uint8_t *parity, bool reader2tag) { uint32_t duration = ts_end - ts_start; duration /= 32; ts_end = ts_start + duration; @@ -306,7 +306,7 @@ bool RAMFUNC LogTraceBits(const uint8_t *btBytes, uint16_t bitLen, uint32_t time } // Emulator memory -uint8_t emlSet(uint8_t *data, uint32_t offset, uint32_t length) { +uint8_t emlSet(const uint8_t *data, uint32_t offset, uint32_t length) { uint8_t *mem = BigBuf_get_EM_addr(); if (offset + length <= CARD_MEMORY_SIZE) { memcpy(mem + offset, data, length); diff --git a/armsrc/BigBuf.h b/armsrc/BigBuf.h index 81c2fbdfc..0938bd555 100644 --- a/armsrc/BigBuf.h +++ b/armsrc/BigBuf.h @@ -51,11 +51,11 @@ void set_tracing(bool enable); void set_tracelen(uint32_t value); bool get_tracing(void); -bool RAMFUNC LogTrace(const uint8_t *btBytes, uint16_t iLen, uint32_t timestamp_start, uint32_t timestamp_end, uint8_t *parity, bool reader2tag); +bool RAMFUNC LogTrace(const uint8_t *btBytes, uint16_t iLen, uint32_t timestamp_start, uint32_t timestamp_end, const uint8_t *parity, bool reader2tag); bool RAMFUNC LogTraceBits(const uint8_t *btBytes, uint16_t bitLen, uint32_t timestamp_start, uint32_t timestamp_end, bool reader2tag); -bool LogTrace_ISO15693(const uint8_t *bytes, uint16_t len, uint32_t ts_start, uint32_t ts_end, uint8_t *parity, bool reader2tag); +bool LogTrace_ISO15693(const uint8_t *bytes, uint16_t len, uint32_t ts_start, uint32_t ts_end, const uint8_t *parity, bool reader2tag); -uint8_t emlSet(uint8_t *data, uint32_t offset, uint32_t length); +uint8_t emlSet(const uint8_t *data, uint32_t offset, uint32_t length); uint8_t emlGet(uint8_t *out, uint32_t offset, uint32_t length); typedef struct { From 5bd8058113dcc9f9b701f029fe35853f937a7274 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Tue, 8 Aug 2023 21:03:36 -0700 Subject: [PATCH 185/299] More `const` enabled --- armsrc/cmd.c | 6 +++--- armsrc/cmd.h | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/armsrc/cmd.c b/armsrc/cmd.c index c179ed2a9..f2b432d33 100644 --- a/armsrc/cmd.c +++ b/armsrc/cmd.c @@ -26,7 +26,7 @@ bool g_reply_with_crc_on_fpc = true; bool g_reply_via_fpc = false; bool g_reply_via_usb = false; -int reply_old(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, void *data, size_t len) { +int reply_old(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, const void *data, size_t len) { PacketResponseOLD txcmd = {CMD_UNKNOWN, {0, 0, 0}, {{0}}}; // for (size_t i = 0; i < sizeof(PacketResponseOLD); i++) @@ -42,7 +42,7 @@ int reply_old(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, void *d if (data && len) { len = MIN(len, PM3_CMD_DATA_SIZE); for (size_t i = 0; i < len; i++) { - txcmd.d.asBytes[i] = ((uint8_t *)data)[i]; + txcmd.d.asBytes[i] = ((const uint8_t *)data)[i]; } } @@ -135,7 +135,7 @@ int reply_ng(uint16_t cmd, int16_t status, const uint8_t *data, size_t len) { return reply_ng_internal(cmd, status, data, len, true); } -int reply_mix(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, void *data, size_t len) { +int reply_mix(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, const void *data, size_t len) { int16_t status = PM3_SUCCESS; uint64_t arg[3] = {arg0, arg1, arg2}; if (len > PM3_CMD_DATA_SIZE - sizeof(arg)) { diff --git a/armsrc/cmd.h b/armsrc/cmd.h index b578db8e8..22a79ce16 100644 --- a/armsrc/cmd.h +++ b/armsrc/cmd.h @@ -27,9 +27,9 @@ extern bool g_reply_with_crc_on_fpc; extern bool g_reply_via_fpc; extern bool g_reply_via_usb; -int reply_old(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, void *data, size_t len); +int reply_old(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, const void *data, size_t len); int reply_ng(uint16_t cmd, int16_t status, const uint8_t *data, size_t len); -int reply_mix(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, void *data, size_t len); +int reply_mix(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, const void *data, size_t len); int receive_ng(PacketCommandNG *rx); #endif // _PROXMARK_CMD_H_ From 7801abf7a5dd119ae722677850947140d1a9b438 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Tue, 8 Aug 2023 21:06:17 -0700 Subject: [PATCH 186/299] Localize effect of unused macro --- armsrc/dbprint.h | 28 ---------------------------- armsrc/usart.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/armsrc/dbprint.h b/armsrc/dbprint.h index b1a7753da..f22f965c5 100644 --- a/armsrc/dbprint.h +++ b/armsrc/dbprint.h @@ -22,34 +22,6 @@ #include "common.h" #include "ansi.h" -#define Dbprintf_usb(...) {\ - bool tmpfpc = g_reply_via_fpc;\ - bool tmpusb = g_reply_via_usb;\ - g_reply_via_fpc = false;\ - g_reply_via_usb = true;\ - Dbprintf(__VA_ARGS__);\ - g_reply_via_fpc = tmpfpc;\ - g_reply_via_usb = tmpusb;} - -#define Dbprintf_fpc(...) {\ - bool tmpfpc = g_reply_via_fpc;\ - bool tmpusb = g_reply_via_usb;\ - g_reply_via_fpc = true;\ - g_reply_via_usb = false;\ - Dbprintf(__VA_ARGS__);\ - g_reply_via_fpc = tmpfpc;\ - g_reply_via_usb = tmpusb;} - -#define Dbprintf_all(...) {\ - bool tmpfpc = g_reply_via_fpc;\ - bool tmpusb = g_reply_via_usb;\ - g_reply_via_fpc = true;\ - g_reply_via_usb = true;\ - Dbprintf(__VA_ARGS__);\ - g_reply_via_fpc = tmpfpc;\ - g_reply_via_usb = tmpusb;} - - void DbpString(const char *str); void DbpStringEx(uint32_t flags, const char *src, size_t srclen); void Dbprintf(const char *fmt, ...); diff --git a/armsrc/usart.c b/armsrc/usart.c index 915d4a445..a205acb03 100644 --- a/armsrc/usart.c +++ b/armsrc/usart.c @@ -18,6 +18,34 @@ #include "usart.h" #include "proxmark3_arm.h" +#define Dbprintf_usb(...) {\ + bool tmpfpc = g_reply_via_fpc;\ + bool tmpusb = g_reply_via_usb;\ + g_reply_via_fpc = false;\ + g_reply_via_usb = true;\ + Dbprintf(__VA_ARGS__);\ + g_reply_via_fpc = tmpfpc;\ + g_reply_via_usb = tmpusb;} + +#define Dbprintf_fpc(...) {\ + bool tmpfpc = g_reply_via_fpc;\ + bool tmpusb = g_reply_via_usb;\ + g_reply_via_fpc = true;\ + g_reply_via_usb = false;\ + Dbprintf(__VA_ARGS__);\ + g_reply_via_fpc = tmpfpc;\ + g_reply_via_usb = tmpusb;} + +#define Dbprintf_all(...) {\ + bool tmpfpc = g_reply_via_fpc;\ + bool tmpusb = g_reply_via_usb;\ + g_reply_via_fpc = true;\ + g_reply_via_usb = true;\ + Dbprintf(__VA_ARGS__);\ + g_reply_via_fpc = tmpfpc;\ + g_reply_via_usb = tmpusb;} + + static volatile AT91PS_USART pUS1 = AT91C_BASE_US1; static volatile AT91PS_PIO pPIO = AT91C_BASE_PIOA; static volatile AT91PS_PDC pPDC = AT91C_BASE_PDC_US1; From 31645c56b0f226b1cf29ad52282a59b64bd99f5f Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Tue, 8 Aug 2023 21:09:31 -0700 Subject: [PATCH 187/299] more use of `const` --- armsrc/dbprint.c | 6 +++--- armsrc/dbprint.h | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/armsrc/dbprint.c b/armsrc/dbprint.c index 7be7bba4c..218223231 100644 --- a/armsrc/dbprint.c +++ b/armsrc/dbprint.c @@ -74,7 +74,7 @@ void Dbprintf(const char *fmt, ...) { } // prints HEX & ASCII -void Dbhexdump(int len, uint8_t *d, bool bAsci) { +void Dbhexdump(int len, const uint8_t *d, bool bAsci) { #if DEBUG char ascii[9]; @@ -103,9 +103,9 @@ void Dbhexdump(int len, uint8_t *d, bool bAsci) { #endif } -void print_result(const char *name, uint8_t *buf, size_t len) { +void print_result(const char *name, const uint8_t *buf, size_t len) { - uint8_t *p = buf; + const uint8_t *p = buf; uint16_t tmp = len & 0xFFF0; for (; p - buf < tmp; p += 16) { diff --git a/armsrc/dbprint.h b/armsrc/dbprint.h index f22f965c5..0795db274 100644 --- a/armsrc/dbprint.h +++ b/armsrc/dbprint.h @@ -26,8 +26,8 @@ void DbpString(const char *str); void DbpStringEx(uint32_t flags, const char *src, size_t srclen); void Dbprintf(const char *fmt, ...); void DbprintfEx(uint32_t flags, const char *fmt, ...); -void Dbhexdump(int len, uint8_t *d, bool bAsci); -void print_result(const char *name, uint8_t *buf, size_t len); +void Dbhexdump(int len, const uint8_t *d, bool bAsci); +void print_result(const char *name, const uint8_t *buf, size_t len); //void PrintToSendBuffer(void); #endif From b279df2d46ea116707873cea213b6c5a243a2d4c Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Tue, 8 Aug 2023 22:50:34 -0700 Subject: [PATCH 188/299] more const - spiffs --- armsrc/spiffs.c | 40 ++++++++++++++++++++-------------------- armsrc/spiffs.h | 22 +++++++++++----------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/armsrc/spiffs.c b/armsrc/spiffs.c index e243b8ed1..9659dc77b 100644 --- a/armsrc/spiffs.c +++ b/armsrc/spiffs.c @@ -196,7 +196,7 @@ int rdv40_spiffs_check(void) { ///// Base RDV40_SPIFFS_SAFETY_NORMAL operations//////////////////////////////// -void write_to_spiffs(const char *filename, uint8_t *src, uint32_t size) { +void write_to_spiffs(const char *filename, const uint8_t *src, uint32_t size) { spiffs_file fd = SPIFFS_open(&fs, filename, SPIFFS_CREAT | SPIFFS_TRUNC | SPIFFS_RDWR, 0); if (SPIFFS_write(&fs, fd, src, size) < 0) { Dbprintf("wr errno %i\n", SPIFFS_errno(&fs)); @@ -204,7 +204,7 @@ void write_to_spiffs(const char *filename, uint8_t *src, uint32_t size) { SPIFFS_close(&fs, fd); } -void append_to_spiffs(const char *filename, uint8_t *src, uint32_t size) { +void append_to_spiffs(const char *filename, const uint8_t *src, uint32_t size) { spiffs_file fd = SPIFFS_open(&fs, filename, SPIFFS_APPEND | SPIFFS_RDWR, 0); if (SPIFFS_write(&fs, fd, src, size) < 0) { Dbprintf("errno %i\n", SPIFFS_errno(&fs)); @@ -310,10 +310,10 @@ static int is_valid_filename(const char *filename) { } */ static void copy_in_spiffs(const char *src, const char *dst) { - uint32_t size = size_in_spiffs((char *)src); + uint32_t size = size_in_spiffs(src); uint8_t *mem = BigBuf_malloc(size); - read_from_spiffs((char *)src, (uint8_t *)mem, size); - write_to_spiffs((char *)dst, (uint8_t *)mem, size); + read_from_spiffs(src, (uint8_t *)mem, size); + write_to_spiffs(dst, (uint8_t *)mem, size); } //////////////////////////////////////////////////////////////////////////////// @@ -434,7 +434,7 @@ int rdv40_spiffs_lazy_mount_rollback(int changed) { // TODO : forbid writing to a filename which already exists as lnk ! // TODO : forbid writing to a filename.lnk which already exists without lnk ! // Note: Writing in SPIFFS_WRITE_CHUNK_SIZE (8192) byte chucks helps to ensure "free space" has been erased by GC (Garbage collection) -int rdv40_spiffs_write(const char *filename, uint8_t *src, uint32_t size, RDV40SpiFFSSafetyLevel level) { +int rdv40_spiffs_write(const char *filename, const uint8_t *src, uint32_t size, RDV40SpiFFSSafetyLevel level) { RDV40_SPIFFS_SAFE_FUNCTION( uint32_t idx; if (size <= SPIFFS_WRITE_CHUNK_SIZE) { @@ -457,7 +457,7 @@ int rdv40_spiffs_write(const char *filename, uint8_t *src, uint32_t size, RDV40S ) } -int rdv40_spiffs_append(const char *filename, uint8_t *src, uint32_t size, RDV40SpiFFSSafetyLevel level) { +int rdv40_spiffs_append(const char *filename, const uint8_t *src, uint32_t size, RDV40SpiFFSSafetyLevel level) { RDV40_SPIFFS_SAFE_FUNCTION( uint32_t idx; // Append any SPIFFS_WRITE_CHUNK_SIZE byte chunks @@ -480,26 +480,26 @@ int rdv40_spiffs_read(const char *filename, uint8_t *dst, uint32_t size, RDV40Sp // TODO : forbid writing to a filename which already exists as lnk ! // TODO : forbid writing to a filename.lnk which already exists without lnk ! -int rdv40_spiffs_rename(char *old_filename, char *new_filename, RDV40SpiFFSSafetyLevel level) { +int rdv40_spiffs_rename(const char *old_filename, const char *new_filename, RDV40SpiFFSSafetyLevel level) { RDV40_SPIFFS_SAFE_FUNCTION( // rename_in_spiffs(old_filename, new_filename); // ) } -int rdv40_spiffs_remove(char *filename, RDV40SpiFFSSafetyLevel level) { +int rdv40_spiffs_remove(const char *filename, RDV40SpiFFSSafetyLevel level) { RDV40_SPIFFS_SAFE_FUNCTION( // remove_from_spiffs(filename); // ) } -int rdv40_spiffs_copy(char *src, char *dst, RDV40SpiFFSSafetyLevel level) { +int rdv40_spiffs_copy(const char *src_filename, const char *dst_filename, RDV40SpiFFSSafetyLevel level) { RDV40_SPIFFS_SAFE_FUNCTION( // - copy_in_spiffs(src, dst); // + copy_in_spiffs(src_filename, dst_filename); // ) } -int rdv40_spiffs_stat(char *filename, uint32_t *buf, RDV40SpiFFSSafetyLevel level) { +int rdv40_spiffs_stat(const char *filename, uint32_t *size_in_bytes, RDV40SpiFFSSafetyLevel level) { RDV40_SPIFFS_SAFE_FUNCTION( // - *buf = size_in_spiffs(filename); // + *size_in_bytes = size_in_spiffs(filename); // ) } @@ -530,7 +530,7 @@ int rdv40_spiffs_is_symlink(const char *s) { // symlink ?") // ATTENTION : you must NOT provide the whole filename (so please do not include the .lnk extension) // TODO : integrate in read_function -int rdv40_spiffs_read_as_symlink(char *filename, uint8_t *dst, uint32_t size, RDV40SpiFFSSafetyLevel level) { +int rdv40_spiffs_read_as_symlink(const char *filename, uint8_t *dst, uint32_t size, RDV40SpiFFSSafetyLevel level) { RDV40_SPIFFS_SAFE_FUNCTION( char linkdest[SPIFFS_OBJ_NAME_LEN]; @@ -538,7 +538,7 @@ int rdv40_spiffs_read_as_symlink(char *filename, uint8_t *dst, uint32_t size, RD sprintf(linkfilename, "%s.lnk", filename); if (g_dbglevel >= DBG_DEBUG) - Dbprintf("Linkk real filename is " _YELLOW_("%s"), linkfilename); + Dbprintf("Link real filename is " _YELLOW_("%s"), linkfilename); read_from_spiffs((char *)linkfilename, (uint8_t *)linkdest, SPIFFS_OBJ_NAME_LEN); @@ -561,11 +561,11 @@ int rdv40_spiffs_read_as_symlink(char *filename, uint8_t *dst, uint32_t size, RD // which you can then read back with : // rdv40_spiffs_read_as_symlink((uint8_t *)"world",(uint8_t *) buffer, orig_file_size, RDV40_SPIFFS_SAFETY_SAFE); // TODO : FORBID creating a symlink with a basename (before.lnk) which already exists as a file ! -int rdv40_spiffs_make_symlink(char *linkdest, char *filename, RDV40SpiFFSSafetyLevel level) { +int rdv40_spiffs_make_symlink(const char *linkdest, const char *filename, RDV40SpiFFSSafetyLevel level) { RDV40_SPIFFS_SAFE_FUNCTION( char linkfilename[SPIFFS_OBJ_NAME_LEN]; sprintf(linkfilename, "%s.lnk", filename); - write_to_spiffs((char *)linkfilename, (uint8_t *)linkdest, SPIFFS_OBJ_NAME_LEN); + write_to_spiffs(linkfilename, (const uint8_t *)linkdest, SPIFFS_OBJ_NAME_LEN); ) } @@ -575,15 +575,15 @@ int rdv40_spiffs_make_symlink(char *linkdest, char *filename, RDV40SpiFFSSafetyL // Still, this case won't happen when the write(s) functions will check for both symlink and real file // preexistence, avoiding a link being created if filename exists, or avoiding a file being created if // symlink exists with same name -int rdv40_spiffs_read_as_filetype(char *filename, uint8_t *dst, uint32_t size, RDV40SpiFFSSafetyLevel level) { +int rdv40_spiffs_read_as_filetype(const char *filename, uint8_t *dst, uint32_t size, RDV40SpiFFSSafetyLevel level) { RDV40_SPIFFS_SAFE_FUNCTION( RDV40SpiFFSFileType filetype = filetype_in_spiffs((char *)filename); switch (filetype) { case RDV40_SPIFFS_FILETYPE_REAL: - rdv40_spiffs_read((char *)filename, (uint8_t *)dst, size, level); + rdv40_spiffs_read(filename, dst, size, level); break; case RDV40_SPIFFS_FILETYPE_SYMLINK: - rdv40_spiffs_read_as_symlink(filename, (uint8_t *)dst, size, level); + rdv40_spiffs_read_as_symlink(filename, dst, size, level); break; case RDV40_SPIFFS_FILETYPE_BOTH: case RDV40_SPIFFS_FILETYPE_UNKNOWN: diff --git a/armsrc/spiffs.h b/armsrc/spiffs.h index 5958e559b..7bbfb794b 100644 --- a/armsrc/spiffs.h +++ b/armsrc/spiffs.h @@ -46,18 +46,18 @@ typedef struct rdv40_spiffs_fsinfo { uint32_t usedPercent, freePercent; } rdv40_spiffs_fsinfo; -int rdv40_spiffs_read_as_filetype(char *filename, uint8_t *dst, uint32_t size, RDV40SpiFFSSafetyLevel level); +int rdv40_spiffs_read_as_filetype(const char *filename, uint8_t *dst, uint32_t size, RDV40SpiFFSSafetyLevel level); int rdv40_spiffs_check(void); int rdv40_spiffs_lazy_unmount(void); int rdv40_spiffs_lazy_mount(void); int rdv40_spiffs_lazy_mount_rollback(int changed); -int rdv40_spiffs_write(const char *filename, uint8_t *src, uint32_t size, RDV40SpiFFSSafetyLevel level); +int rdv40_spiffs_write(const char *filename, const uint8_t *src, uint32_t size, RDV40SpiFFSSafetyLevel level); int rdv40_spiffs_read(const char *filename, uint8_t *dst, uint32_t size, RDV40SpiFFSSafetyLevel level); -int rdv40_spiffs_rename(char *old_filename, char *new_filename, RDV40SpiFFSSafetyLevel level); -int rdv40_spiffs_remove(char *filename, RDV40SpiFFSSafetyLevel level); -int rdv40_spiffs_read_as_symlink(char *filename, uint8_t *dst, uint32_t size, RDV40SpiFFSSafetyLevel level); -void write_to_spiffs(const char *filename, uint8_t *src, uint32_t size); +int rdv40_spiffs_rename(const char *old_filename, const char *new_filename, RDV40SpiFFSSafetyLevel level); +int rdv40_spiffs_remove(const char *filename, RDV40SpiFFSSafetyLevel level); +int rdv40_spiffs_read_as_symlink(const char *filename, uint8_t *dst, uint32_t size, RDV40SpiFFSSafetyLevel level); +void write_to_spiffs(const char *filename, const uint8_t *src, uint32_t size); void read_from_spiffs(const char *filename, uint8_t *dst, uint32_t size); void test_spiffs(void); void rdv40_spiffs_safe_print_tree(void); @@ -65,11 +65,11 @@ int rdv40_spiffs_unmount(void); int rdv40_spiffs_mount(void); int rdv40_spiffs_is_symlink(const char *s); void rdv40_spiffs_safe_print_fsinfo(void); -int rdv40_spiffs_make_symlink(char *linkdest, char *filename, RDV40SpiFFSSafetyLevel level); -void append_to_spiffs(const char *filename, uint8_t *src, uint32_t size); -int rdv40_spiffs_copy(char *src, char *dst, RDV40SpiFFSSafetyLevel level); -int rdv40_spiffs_append(const char *filename, uint8_t *src, uint32_t size, RDV40SpiFFSSafetyLevel level); -int rdv40_spiffs_stat(char *filename, uint32_t *buf, RDV40SpiFFSSafetyLevel level); +int rdv40_spiffs_make_symlink(const char *linkdest, const char *filename, RDV40SpiFFSSafetyLevel level); +void append_to_spiffs(const char *filename, const uint8_t *src, uint32_t size); +int rdv40_spiffs_copy(const char *src_filename, const char *dst_filename, RDV40SpiFFSSafetyLevel level); +int rdv40_spiffs_append(const char *filename, const uint8_t *src, uint32_t size, RDV40SpiFFSSafetyLevel level); +int rdv40_spiffs_stat(const char *filename, uint32_t *size_in_bytes, RDV40SpiFFSSafetyLevel level); uint32_t size_in_spiffs(const char *filename); int exists_in_spiffs(const char *filename); From e973aebae6960708d22826fc2c6963f8f6fe1d70 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Tue, 8 Aug 2023 22:56:51 -0700 Subject: [PATCH 189/299] Workaround SPIFFS lack of `const` --- armsrc/spiffs.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/armsrc/spiffs.c b/armsrc/spiffs.c index 9659dc77b..359f2f07c 100644 --- a/armsrc/spiffs.c +++ b/armsrc/spiffs.c @@ -198,7 +198,8 @@ int rdv40_spiffs_check(void) { void write_to_spiffs(const char *filename, const uint8_t *src, uint32_t size) { spiffs_file fd = SPIFFS_open(&fs, filename, SPIFFS_CREAT | SPIFFS_TRUNC | SPIFFS_RDWR, 0); - if (SPIFFS_write(&fs, fd, src, size) < 0) { + // Note: SPIFFS_write() doesn't declare third parameter as const (but should) + if (SPIFFS_write(&fs, fd, (void*)src, size) < 0) { Dbprintf("wr errno %i\n", SPIFFS_errno(&fs)); } SPIFFS_close(&fs, fd); @@ -206,7 +207,8 @@ void write_to_spiffs(const char *filename, const uint8_t *src, uint32_t size) { void append_to_spiffs(const char *filename, const uint8_t *src, uint32_t size) { spiffs_file fd = SPIFFS_open(&fs, filename, SPIFFS_APPEND | SPIFFS_RDWR, 0); - if (SPIFFS_write(&fs, fd, src, size) < 0) { + // Note: SPIFFS_write() doesn't declare third parameter as const (but should) + if (SPIFFS_write(&fs, fd, (void*)src, size) < 0) { Dbprintf("errno %i\n", SPIFFS_errno(&fs)); } SPIFFS_close(&fs, fd); From 1a8ef489c8990ac052a6a544462da1dc5925d76d Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Tue, 8 Aug 2023 23:03:34 -0700 Subject: [PATCH 190/299] const for em4x50 --- armsrc/appmain.c | 16 ++++++++-------- armsrc/em4x50.c | 34 +++++++++++++++++----------------- armsrc/em4x50.h | 19 ++++++++++--------- 3 files changed, 35 insertions(+), 34 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 3c471191f..5908ed855 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -1154,27 +1154,27 @@ static void PacketReceived(PacketCommandNG *packet) { #ifdef WITH_EM4x50 case CMD_LF_EM4X50_INFO: { - em4x50_info((em4x50_data_t *)packet->data.asBytes, true); + em4x50_info((const em4x50_data_t *)packet->data.asBytes, true); break; } case CMD_LF_EM4X50_WRITE: { - em4x50_write((em4x50_data_t *)packet->data.asBytes, true); + em4x50_write((const em4x50_data_t *)packet->data.asBytes, true); break; } case CMD_LF_EM4X50_WRITEPWD: { - em4x50_writepwd((em4x50_data_t *)packet->data.asBytes, true); + em4x50_writepwd((const em4x50_data_t *)packet->data.asBytes, true); break; } case CMD_LF_EM4X50_READ: { - em4x50_read((em4x50_data_t *)packet->data.asBytes, true); + em4x50_read((const em4x50_data_t *)packet->data.asBytes, true); break; } case CMD_LF_EM4X50_BRUTE: { - em4x50_brute((em4x50_data_t *)packet->data.asBytes, true); + em4x50_brute((const em4x50_data_t *)packet->data.asBytes, true); break; } case CMD_LF_EM4X50_LOGIN: { - em4x50_login((uint32_t *)packet->data.asBytes, true); + em4x50_login((const uint32_t *)packet->data.asBytes, true); break; } case CMD_LF_EM4X50_SIM: { @@ -1184,7 +1184,7 @@ static void PacketReceived(PacketCommandNG *packet) { // destroy the Emulator Memory. //----------------------------------------------------------------------------- FpgaDownloadAndGo(FPGA_BITSTREAM_LF); - em4x50_sim((uint32_t *)packet->data.asBytes, true); + em4x50_sim((const uint32_t *)packet->data.asBytes, true); break; } case CMD_LF_EM4X50_READER: { @@ -1208,7 +1208,7 @@ static void PacketReceived(PacketCommandNG *packet) { // destroy the Emulator Memory. //----------------------------------------------------------------------------- FpgaDownloadAndGo(FPGA_BITSTREAM_LF); - em4x50_chk((uint8_t *)packet->data.asBytes, true); + em4x50_chk((const char *)packet->data.asBytes, true); break; } #endif diff --git a/armsrc/em4x50.c b/armsrc/em4x50.c index d43a6a15f..4910caa31 100644 --- a/armsrc/em4x50.c +++ b/armsrc/em4x50.c @@ -634,7 +634,7 @@ static int login(uint32_t password) { } // searching for password using chosen bruteforce algorithm -static bool brute(em4x50_data_t *etd, uint32_t *pwd) { +static bool brute(const em4x50_data_t *etd, uint32_t *pwd) { generator_context_t ctx; bool pwd_found = false; @@ -694,7 +694,7 @@ static bool brute(em4x50_data_t *etd, uint32_t *pwd) { } // login into EM4x50 -void em4x50_login(uint32_t *password, bool ledcontrol) { +void em4x50_login(const uint32_t *password, bool ledcontrol) { em4x50_setup_read(); int status = PM3_EFAILED; @@ -713,7 +713,7 @@ void em4x50_login(uint32_t *password, bool ledcontrol) { } // invoke password search -void em4x50_brute(em4x50_data_t *etd, bool ledcontrol) { +void em4x50_brute(const em4x50_data_t *etd, bool ledcontrol) { em4x50_setup_read(); bool bsuccess = false; @@ -733,7 +733,7 @@ void em4x50_brute(em4x50_data_t *etd, bool ledcontrol) { } // check passwords from dictionary content in flash memory -void em4x50_chk(uint8_t *filename, bool ledcontrol) { +void em4x50_chk(const char *filename, bool ledcontrol) { int status = PM3_EFAILED; uint32_t pwd = 0x0; @@ -743,11 +743,11 @@ void em4x50_chk(uint8_t *filename, bool ledcontrol) { int changed = rdv40_spiffs_lazy_mount(); uint16_t pwd_count = 0; - uint32_t size = size_in_spiffs((char *)filename); + uint32_t size = size_in_spiffs(filename); pwd_count = size / 4; uint8_t *pwds = BigBuf_malloc(size); - rdv40_spiffs_read_as_filetype((char *)filename, pwds, size, RDV40_SPIFFS_SAFETY_SAFE); + rdv40_spiffs_read_as_filetype(filename, pwds, size, RDV40_SPIFFS_SAFETY_SAFE); if (changed) rdv40_spiffs_lazy_unmount(); @@ -873,7 +873,7 @@ static int selective_read(uint32_t addresses, uint32_t *words) { } // reads by using "selective read mode" -> bidirectional communication -void em4x50_read(em4x50_data_t *etd, bool ledcontrol) { +void em4x50_read(const em4x50_data_t *etd, bool ledcontrol) { int status = PM3_EFAILED; uint32_t words[EM4X50_NO_WORDS] = {0x0}; @@ -906,7 +906,7 @@ void em4x50_read(em4x50_data_t *etd, bool ledcontrol) { } // collects as much information as possible via selective read mode -void em4x50_info(em4x50_data_t *etd, bool ledcontrol) { +void em4x50_info(const em4x50_data_t *etd, bool ledcontrol) { int status = PM3_EFAILED; uint32_t words[EM4X50_NO_WORDS] = {0x0}; @@ -1053,7 +1053,7 @@ static int write_password(uint32_t password, uint32_t new_password) { // write operation process for EM4x50 tag, // single word is written to given address, verified by selective read operation // wrong password -> return with PM3_EFAILED -void em4x50_write(em4x50_data_t *etd, bool ledcontrol) { +void em4x50_write(const em4x50_data_t *etd, bool ledcontrol) { int status = PM3_EFAILED; uint32_t words[EM4X50_NO_WORDS] = {0x0}; @@ -1113,7 +1113,7 @@ void em4x50_write(em4x50_data_t *etd, bool ledcontrol) { } // simple change of password -void em4x50_writepwd(em4x50_data_t *etd, bool ledcontrol) { +void em4x50_writepwd(const em4x50_data_t *etd, bool ledcontrol) { int status = PM3_EFAILED; em4x50_setup_read(); @@ -1358,7 +1358,7 @@ static bool em4x50_sim_read_word(uint32_t *word) { } // check if reader requests receive mode (rm) by sending two zeros -static int check_rm_request(uint32_t *tag, bool ledcontrol) { +static int check_rm_request(const uint32_t *tag, bool ledcontrol) { // look for first zero int bit = em4x50_sim_read_bit(); @@ -1387,7 +1387,7 @@ static int check_rm_request(uint32_t *tag, bool ledcontrol) { } // send single listen window in simulation mode -static int em4x50_sim_send_listen_window(uint32_t *tag, bool ledcontrol) { +static int em4x50_sim_send_listen_window(const uint32_t *tag, bool ledcontrol) { SHORT_COIL(); wait_cycles(EM4X50_T_TAG_HALF_PERIOD); @@ -1460,7 +1460,7 @@ static void em4x50_sim_send_nak(void) { } // standard read mode process (simulation mode) -static int em4x50_sim_handle_standard_read_command(uint32_t *tag, bool ledcontrol) { +static int em4x50_sim_handle_standard_read_command(const uint32_t *tag, bool ledcontrol) { // extract control data int fwr = reflect32(tag[EM4X50_CONTROL]) & 0xFF; // first word read @@ -1500,7 +1500,7 @@ static int em4x50_sim_handle_standard_read_command(uint32_t *tag, bool ledcontro } // selective read mode process (simulation mode) -static int em4x50_sim_handle_selective_read_command(uint32_t *tag, bool ledcontrol) { +static int em4x50_sim_handle_selective_read_command(const uint32_t *tag, bool ledcontrol) { // read password uint32_t address = 0; @@ -1555,7 +1555,7 @@ static int em4x50_sim_handle_selective_read_command(uint32_t *tag, bool ledcontr } // login process (simulation mode) -static int em4x50_sim_handle_login_command(uint32_t *tag, bool ledcontrol) { +static int em4x50_sim_handle_login_command(const uint32_t *tag, bool ledcontrol) { // read password uint32_t password = 0; @@ -1581,7 +1581,7 @@ static int em4x50_sim_handle_login_command(uint32_t *tag, bool ledcontrol) { } // reset process (simulation mode) -static int em4x50_sim_handle_reset_command(uint32_t *tag, bool ledcontrol) { +static int em4x50_sim_handle_reset_command(const uint32_t *tag, bool ledcontrol) { // processing pause time (corresponds to a "1" bit) em4x50_sim_send_bit(1); @@ -1806,7 +1806,7 @@ void em4x50_handle_commands(int *command, uint32_t *tag, bool ledcontrol) { // simulate uploaded data in emulator memory // LED C -> reader command has been detected // LED D -> operations that require authentication are possible -void em4x50_sim(uint32_t *password, bool ledcontrol) { +void em4x50_sim(const uint32_t *password, bool ledcontrol) { int command = PM3_ENODATA; diff --git a/armsrc/em4x50.h b/armsrc/em4x50.h index af3a7a8db..eb52c36e5 100644 --- a/armsrc/em4x50.h +++ b/armsrc/em4x50.h @@ -21,20 +21,21 @@ #include "../include/em4x50.h" +// used by standalone mode void em4x50_setup_read(void); int standard_read(int *now, uint32_t *words); - void em4x50_setup_sim(void); void em4x50_handle_commands(int *command, uint32_t *tag, bool ledcontrol); -void em4x50_info(em4x50_data_t *etd, bool ledcontrol); -void em4x50_write(em4x50_data_t *etd, bool ledcontrol); -void em4x50_writepwd(em4x50_data_t *etd, bool ledcontrol); -void em4x50_read(em4x50_data_t *etd, bool ledcontrol); -void em4x50_brute(em4x50_data_t *etd, bool ledcontrol); -void em4x50_login(uint32_t *password, bool ledcontrol); -void em4x50_sim(uint32_t *password, bool ledcontrol); +// dispatch functions (appmain.c) +void em4x50_info(const em4x50_data_t *etd, bool ledcontrol); +void em4x50_write(const em4x50_data_t *etd, bool ledcontrol); +void em4x50_writepwd(const em4x50_data_t *etd, bool ledcontrol); +void em4x50_read(const em4x50_data_t *etd, bool ledcontrol); +void em4x50_brute(const em4x50_data_t *etd, bool ledcontrol); +void em4x50_login(const uint32_t *password, bool ledcontrol); +void em4x50_sim(const uint32_t *password, bool ledcontrol); void em4x50_reader(bool ledcontrol); -void em4x50_chk(uint8_t *filename, bool ledcontrol); +void em4x50_chk(const char *filename, bool ledcontrol); #endif /* EM4X50_H */ From 0af484fdee48ee76f7d2eed8ef82f5be82f9601d Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Tue, 8 Aug 2023 23:24:10 -0700 Subject: [PATCH 191/299] const for em4x70 --- armsrc/em4x70.c | 43 +++++++++++++++++++++++-------------------- armsrc/em4x70.h | 14 +++++++------- 2 files changed, 30 insertions(+), 27 deletions(-) diff --git a/armsrc/em4x70.c b/armsrc/em4x70.c index 806442f7f..ab73bd153 100644 --- a/armsrc/em4x70.c +++ b/armsrc/em4x70.c @@ -310,6 +310,7 @@ static bool check_ack(void) { return false; } +// TODO: define and use structs for rnd, frnd, response static int authenticate(const uint8_t *rnd, const uint8_t *frnd, uint8_t *response) { if (find_listen_window(true)) { @@ -350,8 +351,10 @@ static int authenticate(const uint8_t *rnd, const uint8_t *frnd, uint8_t *respon return PM3_ESOFT; } -static int set_byte(uint8_t *target, int value) { - int c = value > 0xFF; +// Sets one (reflected) byte and returns carry bit +// (1 if `value` parameter was greater than 0xFF) +static int set_byte(uint8_t *target, uint16_t value) { + int c = value > 0xFF ? 1 : 0; // be explicit about carry bit values *target = reflect8(value); return c; } @@ -373,27 +376,27 @@ static int bruteforce(const uint8_t address, const uint8_t *rnd, const uint8_t * uint16_t rev_k = reflect16(k); switch (address) { case 9: - c = set_byte(&temp_rnd[0], rev_rnd[0] + (rev_k & 0xFF)); - c = set_byte(&temp_rnd[1], rev_rnd[1] + c + ((rev_k >> 8) & 0xFF)); + c = set_byte(&temp_rnd[0], rev_rnd[0] + ((rev_k ) & 0xFFu)); + c = set_byte(&temp_rnd[1], rev_rnd[1] + c + ((rev_k >> 8) & 0xFFu)); c = set_byte(&temp_rnd[2], rev_rnd[2] + c); c = set_byte(&temp_rnd[3], rev_rnd[3] + c); c = set_byte(&temp_rnd[4], rev_rnd[4] + c); c = set_byte(&temp_rnd[5], rev_rnd[5] + c); - set_byte(&temp_rnd[6], rev_rnd[6] + c); + set_byte( &temp_rnd[6], rev_rnd[6] + c); break; case 8: - c = set_byte(&temp_rnd[2], rev_rnd[2] + (rev_k & 0xFF)); - c = set_byte(&temp_rnd[3], rev_rnd[3] + c + ((rev_k >> 8) & 0xFF)); + c = set_byte(&temp_rnd[2], rev_rnd[2] + ((rev_k ) & 0xFFu)); + c = set_byte(&temp_rnd[3], rev_rnd[3] + c + ((rev_k >> 8) & 0xFFu)); c = set_byte(&temp_rnd[4], rev_rnd[4] + c); c = set_byte(&temp_rnd[5], rev_rnd[5] + c); - set_byte(&temp_rnd[6], rev_rnd[6] + c); + set_byte( &temp_rnd[6], rev_rnd[6] + c); break; case 7: - c = set_byte(&temp_rnd[4], rev_rnd[4] + (rev_k & 0xFF)); - c = set_byte(&temp_rnd[5], rev_rnd[5] + c + ((rev_k >> 8) & 0xFF)); - set_byte(&temp_rnd[6], rev_rnd[6] + c); + c = set_byte(&temp_rnd[4], rev_rnd[4] + ((rev_k ) & 0xFFu)); + c = set_byte(&temp_rnd[5], rev_rnd[5] + c + ((rev_k >> 8) & 0xFFu)); + set_byte( &temp_rnd[6], rev_rnd[6] + c); break; default: @@ -707,7 +710,7 @@ static int em4x70_receive(uint8_t *bits, size_t length) { return bit_pos; } -void em4x70_info(em4x70_data_t *etd, bool ledcontrol) { +void em4x70_info(const em4x70_data_t *etd, bool ledcontrol) { uint8_t status = 0; @@ -728,7 +731,7 @@ void em4x70_info(em4x70_data_t *etd, bool ledcontrol) { reply_ng(CMD_LF_EM4X70_INFO, status, tag.data, sizeof(tag.data)); } -void em4x70_write(em4x70_data_t *etd, bool ledcontrol) { +void em4x70_write(const em4x70_data_t *etd, bool ledcontrol) { uint8_t status = 0; @@ -758,7 +761,7 @@ void em4x70_write(em4x70_data_t *etd, bool ledcontrol) { reply_ng(CMD_LF_EM4X70_WRITE, status, tag.data, sizeof(tag.data)); } -void em4x70_unlock(em4x70_data_t *etd, bool ledcontrol) { +void em4x70_unlock(const em4x70_data_t *etd, bool ledcontrol) { uint8_t status = 0; @@ -791,7 +794,7 @@ void em4x70_unlock(em4x70_data_t *etd, bool ledcontrol) { reply_ng(CMD_LF_EM4X70_UNLOCK, status, tag.data, sizeof(tag.data)); } -void em4x70_auth(em4x70_data_t *etd, bool ledcontrol) { +void em4x70_auth(const em4x70_data_t *etd, bool ledcontrol) { uint8_t status = 0; uint8_t response[3] = {0}; @@ -813,7 +816,7 @@ void em4x70_auth(em4x70_data_t *etd, bool ledcontrol) { reply_ng(CMD_LF_EM4X70_AUTH, status, response, sizeof(response)); } -void em4x70_brute(em4x70_data_t *etd, bool ledcontrol) { +void em4x70_brute(const em4x70_data_t *etd, bool ledcontrol) { uint8_t status = 0; uint8_t response[2] = {0}; @@ -834,7 +837,7 @@ void em4x70_brute(em4x70_data_t *etd, bool ledcontrol) { reply_ng(CMD_LF_EM4X70_BRUTE, status, response, sizeof(response)); } -void em4x70_write_pin(em4x70_data_t *etd, bool ledcontrol) { +void em4x70_write_pin(const em4x70_data_t *etd, bool ledcontrol) { uint8_t status = 0; @@ -850,8 +853,8 @@ void em4x70_write_pin(em4x70_data_t *etd, bool ledcontrol) { if (em4x70_read_id()) { // Write new PIN - if ((write(etd->pin & 0xFFFF, EM4X70_PIN_WORD_UPPER) == PM3_SUCCESS) && - (write((etd->pin >> 16) & 0xFFFF, EM4X70_PIN_WORD_LOWER) == PM3_SUCCESS)) { + if ((write((etd->pin ) & 0xFFFF, EM4X70_PIN_WORD_UPPER) == PM3_SUCCESS) && + (write((etd->pin >> 16) & 0xFFFF, EM4X70_PIN_WORD_LOWER) == PM3_SUCCESS)) { // Now Try to authenticate using the new PIN @@ -874,7 +877,7 @@ void em4x70_write_pin(em4x70_data_t *etd, bool ledcontrol) { reply_ng(CMD_LF_EM4X70_WRITEPIN, status, tag.data, sizeof(tag.data)); } -void em4x70_write_key(em4x70_data_t *etd, bool ledcontrol) { +void em4x70_write_key(const em4x70_data_t *etd, bool ledcontrol) { uint8_t status = 0; diff --git a/armsrc/em4x70.h b/armsrc/em4x70.h index 0fd640f86..83a8237d7 100644 --- a/armsrc/em4x70.h +++ b/armsrc/em4x70.h @@ -30,12 +30,12 @@ typedef enum { FALLING_EDGE } edge_detection_t; -void em4x70_info(em4x70_data_t *etd, bool ledcontrol); -void em4x70_write(em4x70_data_t *etd, bool ledcontrol); -void em4x70_brute(em4x70_data_t *etd, bool ledcontrol); -void em4x70_unlock(em4x70_data_t *etd, bool ledcontrol); -void em4x70_auth(em4x70_data_t *etd, bool ledcontrol); -void em4x70_write_pin(em4x70_data_t *etd, bool ledcontrol); -void em4x70_write_key(em4x70_data_t *etd, bool ledcontrol); +void em4x70_info(const em4x70_data_t *etd, bool ledcontrol); +void em4x70_write(const em4x70_data_t *etd, bool ledcontrol); +void em4x70_brute(const em4x70_data_t *etd, bool ledcontrol); +void em4x70_unlock(const em4x70_data_t *etd, bool ledcontrol); +void em4x70_auth(const em4x70_data_t *etd, bool ledcontrol); +void em4x70_write_pin(const em4x70_data_t *etd, bool ledcontrol); +void em4x70_write_key(const em4x70_data_t *etd, bool ledcontrol); #endif /* EM4x70_H */ From 63a457c27fd99fe9181030ca95bdf86c7b00845e Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Tue, 8 Aug 2023 23:38:26 -0700 Subject: [PATCH 192/299] const and static functions for epa --- armsrc/epa.c | 38 ++++++++++++++++++++++++++++---------- armsrc/epa.h | 24 +++--------------------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/armsrc/epa.c b/armsrc/epa.c index 7bd563676..4e4113d45 100644 --- a/armsrc/epa.c +++ b/armsrc/epa.c @@ -37,6 +37,24 @@ static const uint8_t pps[] = {0xD0, 0x11, 0x00, 0x52, 0xA6}; #endif +// this struct is used by EPA_Parse_CardAccess and contains info about the +// PACE protocol supported by the chip +typedef struct { + uint8_t oid[10]; + uint8_t version; + uint8_t parameter_id; +} pace_version_info_t; + +// general functions +static void EPA_Finish(void); +static size_t EPA_Parse_CardAccess(const uint8_t *data, size_t length, pace_version_info_t *pace_info); +static int EPA_Read_CardAccess(uint8_t *buffer, size_t max_length); +static int EPA_Setup(void); + +// PACE related functions +static int EPA_PACE_MSE_Set_AT(const pace_version_info_t pace_version_info, uint8_t password); +static int EPA_PACE_Get_Nonce(uint8_t requested_length, uint8_t *nonce); + // APDUs for communication with German Identification Card // General Authenticate (request encrypted nonce) WITHOUT the Le at the end @@ -153,7 +171,7 @@ static int EPA_APDU(uint8_t *apdu, size_t length, uint8_t *response, uint16_t re //----------------------------------------------------------------------------- // Closes the communication channel and turns off the field //----------------------------------------------------------------------------- -void EPA_Finish(void) { +static void EPA_Finish(void) { FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); LEDsoff(); iso_type = 0; @@ -172,7 +190,7 @@ void EPA_Finish(void) { // TODO: Support elements with long tags (tag is longer than 1 byte) // TODO: Support proprietary PACE domain parameters //----------------------------------------------------------------------------- -size_t EPA_Parse_CardAccess(uint8_t *data, size_t length, pace_version_info_t *pace_info) { +static size_t EPA_Parse_CardAccess(const uint8_t *data, size_t length, pace_version_info_t *pace_info) { size_t index = 0; @@ -243,7 +261,7 @@ size_t EPA_Parse_CardAccess(uint8_t *data, size_t length, pace_version_info_t *p // Returns -1 on failure or the length of the data on success // TODO: for the moment this sends only 1 APDU regardless of the requested length //----------------------------------------------------------------------------- -int EPA_Read_CardAccess(uint8_t *buffer, size_t max_length) { +static int EPA_Read_CardAccess(uint8_t *buffer, size_t max_length) { // the response APDU of the card // since the card doesn't always care for the expected length we send it, // we reserve 262 bytes here just to be safe (256-byte APDU + SW + ISO frame) @@ -300,7 +318,7 @@ static void EPA_PACE_Collect_Nonce_Abort(uint32_t cmd, uint8_t step, int func_re //----------------------------------------------------------------------------- // Acquire one encrypted PACE nonce //----------------------------------------------------------------------------- -void EPA_PACE_Collect_Nonce(PacketCommandNG *c) { +void EPA_PACE_Collect_Nonce(const PacketCommandNG *c) { /* * ack layout: * arg: @@ -354,7 +372,7 @@ void EPA_PACE_Collect_Nonce(PacketCommandNG *c) { struct p { uint32_t m; } PACKED; - struct p *packet = (struct p *)c->data.asBytes; + const struct p *packet = (const struct p *)c->data.asBytes; func_return = EPA_PACE_Get_Nonce(packet->m, nonce); // check if the command succeeded @@ -377,7 +395,7 @@ void EPA_PACE_Collect_Nonce(PacketCommandNG *c) { // Returns the actual size of the nonce on success or a less-than-zero error // code on failure. //----------------------------------------------------------------------------- -int EPA_PACE_Get_Nonce(uint8_t requested_length, uint8_t *nonce) { +static int EPA_PACE_Get_Nonce(uint8_t requested_length, uint8_t *nonce) { // build the APDU uint8_t apdu[sizeof(apdu_general_authenticate_pace_get_nonce) + 1]; @@ -416,7 +434,7 @@ int EPA_PACE_Get_Nonce(uint8_t requested_length, uint8_t *nonce) { // Initializes the PACE protocol by performing the "MSE: Set AT" step // Returns 0 on success or a non-zero error code on failure //----------------------------------------------------------------------------- -int EPA_PACE_MSE_Set_AT(pace_version_info_t pace_version_info, uint8_t password) { +static int EPA_PACE_MSE_Set_AT(const pace_version_info_t pace_version_info, uint8_t password) { // create the MSE: Set AT APDU uint8_t apdu[23]; @@ -479,7 +497,7 @@ int EPA_PACE_MSE_Set_AT(pace_version_info_t pace_version_info, uint8_t password) //----------------------------------------------------------------------------- // Perform the PACE protocol by replaying given APDUs //----------------------------------------------------------------------------- -void EPA_PACE_Replay(PacketCommandNG *c) { +void EPA_PACE_Replay(const PacketCommandNG *c) { uint32_t timings[ARRAYLEN(apdu_lengths_replay)] = {0}; @@ -547,7 +565,7 @@ void EPA_PACE_Replay(PacketCommandNG *c) { // Set up a communication channel (Card Select, PPS) // Returns 0 on success or a non-zero error code on failure //----------------------------------------------------------------------------- -int EPA_Setup(void) { +static int EPA_Setup(void) { #ifdef WITH_ISO14443a { @@ -593,7 +611,7 @@ int EPA_Setup(void) { return 1; } -void EPA_PACE_Simulate(PacketCommandNG *c) { +void EPA_PACE_Simulate(const PacketCommandNG *c) { //---------Initializing--------- diff --git a/armsrc/epa.h b/armsrc/epa.h index 72524f836..62880eca3 100644 --- a/armsrc/epa.h +++ b/armsrc/epa.h @@ -22,26 +22,8 @@ #include "common.h" #include "pm3_cmd.h" -// this struct is used by EPA_Parse_CardAccess and contains info about the -// PACE protocol supported by the chip -typedef struct { - uint8_t oid[10]; - uint8_t version; - uint8_t parameter_id; -} pace_version_info_t; - -// general functions -void EPA_Finish(void); -size_t EPA_Parse_CardAccess(uint8_t *data, size_t length, pace_version_info_t *pace_info); -int EPA_Read_CardAccess(uint8_t *buffer, size_t max_length); -int EPA_Setup(void); - -// PACE related functions -int EPA_PACE_MSE_Set_AT(pace_version_info_t pace_version_info, uint8_t password); -int EPA_PACE_Get_Nonce(uint8_t requested_length, uint8_t *nonce); - -void EPA_PACE_Collect_Nonce(PacketCommandNG *c); -void EPA_PACE_Replay(PacketCommandNG *c); -void EPA_PACE_Simulate(PacketCommandNG *c); +void EPA_PACE_Collect_Nonce(const PacketCommandNG *c); +void EPA_PACE_Replay(const PacketCommandNG *c); +void EPA_PACE_Simulate(const PacketCommandNG *c); #endif /* __EPA_H */ From 6804e719e55556472a7dc13361a04aa2e14003dc Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Tue, 8 Aug 2023 23:55:20 -0700 Subject: [PATCH 193/299] const for felica --- armsrc/felica.c | 25 +++++++++++++++---------- armsrc/felica.h | 4 ++-- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/armsrc/felica.c b/armsrc/felica.c index 0a74a30cc..b575ad9c4 100644 --- a/armsrc/felica.c +++ b/armsrc/felica.c @@ -49,7 +49,7 @@ static uint32_t felica_lasttime_prox2air_start; static void iso18092_setup(uint8_t fpga_minor_mode); static uint8_t felica_select_card(felica_card_select_t *card); -static void TransmitFor18092_AsReader(uint8_t *frame, uint16_t len, uint32_t *timing, uint8_t power, uint8_t highspeed); +static void TransmitFor18092_AsReader(const uint8_t *frame, uint16_t len, const uint32_t *NYI_timing_NYI, uint8_t power, uint8_t highspeed); static bool WaitForFelicaReply(uint16_t maxbytes); static void iso18092_set_timeout(uint32_t timeout) { @@ -269,13 +269,13 @@ static uint8_t felica_select_card(felica_card_select_t *card) { // copy UID // idm 8 if (card) { - memcpy(card->IDm, FelicaFrame.framebytes + 4, 8); + memcpy(card->IDm, FelicaFrame.framebytes + 4, 8); memcpy(card->PMm, FelicaFrame.framebytes + 4 + 8, 8); //memcpy(card->servicecode, FelicaFrame.framebytes + 4 + 8 + 8, 2); - memcpy(card->code, card->IDm, 2); - memcpy(card->uid, card->IDm + 2, 6); - memcpy(card->iccode, card->PMm, 2); - memcpy(card->mrt, card->PMm + 2, 6); + memcpy(card->code, card->IDm, 2); + memcpy(card->uid, card->IDm + 2, 6); + memcpy(card->iccode, card->PMm, 2); + memcpy(card->mrt, card->PMm + 2, 6); if (g_dbglevel >= DBG_DEBUG) { Dbprintf("Received Frame: "); Dbhexdump(FelicaFrame.len, FelicaFrame.framebytes, 0); @@ -350,7 +350,12 @@ static void BuildFliteRdblk(const uint8_t *idm, uint8_t blocknum, const uint16_t AddCrc(frameSpace + 2, c - 2); } -static void TransmitFor18092_AsReader(uint8_t *frame, uint16_t len, uint32_t *timing, uint8_t power, uint8_t highspeed) { +static void TransmitFor18092_AsReader(const uint8_t *frame, uint16_t len, const uint32_t *NYI_timing_NYI, uint8_t power, uint8_t highspeed) { + if (NYI_timing_NYI != NULL) { + Dbprintf("Error: TransmitFor18092_AsReader does not check or set parameter NYI_timing_NYI"); + return; + } + uint16_t flags = FPGA_MAJOR_MODE_HF_ISO18092; if (power) flags |= FPGA_HF_ISO18092_FLAG_READER; @@ -512,12 +517,12 @@ static void felica_reset_frame_mode(void) { // arg0 FeliCa flags // arg1 len of commandbytes // d.asBytes command bytes to send -void felica_sendraw(PacketCommandNG *c) { +void felica_sendraw(const PacketCommandNG *c) { if (g_dbglevel >= DBG_DEBUG) Dbprintf("FeliCa_sendraw Enter"); felica_command_t param = c->oldarg[0]; size_t len = c->oldarg[1] & 0xffff; - uint8_t *cmd = c->data.asBytes; + const uint8_t *cmd = c->data.asBytes; uint32_t arg0; felica_card_select_t card; @@ -675,7 +680,7 @@ void felica_sniff(uint32_t samplesToSkip, uint32_t triggersToSkip) { #define R_READBLK_LEN 0x21 //simulate NFC Tag3 card - for now only poll response works // second half (4 bytes) of NDEF2 goes into nfcid2_0, first into nfcid2_1 -void felica_sim_lite(uint8_t *uid) { +void felica_sim_lite(const uint8_t *uid) { // prepare our 3 responses... uint8_t resp_poll0[R_POLL0_LEN] = { 0xb2, 0x4d, 0x12, FELICA_POLL_ACK, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x01, 0x43, 0x00, 0xb3, 0x7f}; diff --git a/armsrc/felica.h b/armsrc/felica.h index 8f232b3e4..2677dbfb9 100644 --- a/armsrc/felica.h +++ b/armsrc/felica.h @@ -21,9 +21,9 @@ #include "common.h" #include "cmd.h" -void felica_sendraw(PacketCommandNG *c); +void felica_sendraw(const PacketCommandNG *c); void felica_sniff(uint32_t samplesToSkip, uint32_t triggersToSkip); -void felica_sim_lite(uint8_t *uid); +void felica_sim_lite(const uint8_t *uid); void felica_dump_lite_s(void); #endif From 6f38c814a7ee3cd6c898a7c8cf8b3b8cba68b435 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Tue, 8 Aug 2023 23:59:42 -0700 Subject: [PATCH 194/299] Note inconsistency in FPGA frame layout docs. --- armsrc/fpgaloader.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/armsrc/fpgaloader.h b/armsrc/fpgaloader.h index 6069d3257..3359643f1 100644 --- a/armsrc/fpgaloader.h +++ b/armsrc/fpgaloader.h @@ -34,6 +34,9 @@ /* Communication between ARM / FPGA is done inside armsrc/fpgaloader.c (function FpgaSendCommand) Send 16 bit command / data pair to FPGA + + BUGBUG -- Conflicts with information in ../fpga/define.v + The bit format is: C3 C2 C1 C0 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 where C is 4bit command From 890ea0d32113a3991dc6e80af3a1054d5db65a99 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Wed, 9 Aug 2023 00:03:48 -0700 Subject: [PATCH 195/299] const for hfops --- armsrc/hfops.c | 2 +- armsrc/hfops.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/armsrc/hfops.c b/armsrc/hfops.c index 6a97be76a..df42c8685 100644 --- a/armsrc/hfops.c +++ b/armsrc/hfops.c @@ -200,7 +200,7 @@ static uint32_t HfEncodeTkm(const uint8_t *uid, uint8_t modulation, uint8_t *dat return len; } -int HfSimulateTkm(uint8_t *uid, uint8_t modulation, uint32_t timeout) { +int HfSimulateTkm(const uint8_t *uid, uint8_t modulation, uint32_t timeout) { // free eventually allocated BigBuf memory BigBuf_free_keep_EM(); diff --git a/armsrc/hfops.h b/armsrc/hfops.h index 352f9d2bc..c738887b4 100644 --- a/armsrc/hfops.h +++ b/armsrc/hfops.h @@ -22,6 +22,6 @@ #include "common.h" int HfReadADC(uint32_t samplesCount, bool ledcontrol); -int HfSimulateTkm(uint8_t *uid, uint8_t modulation, uint32_t timeout); +int HfSimulateTkm(const uint8_t *uid, uint8_t modulation, uint32_t timeout); #endif From 282c0904a529a5684d1281009cb086e2d48193c0 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Wed, 9 Aug 2023 00:08:13 -0700 Subject: [PATCH 196/299] visual alignment only .. no code change --- armsrc/hitag2_crypto.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/armsrc/hitag2_crypto.c b/armsrc/hitag2_crypto.c index a8a01dae4..9b59b5521 100644 --- a/armsrc/hitag2_crypto.c +++ b/armsrc/hitag2_crypto.c @@ -90,18 +90,18 @@ uint32_t _hitag2_byte(uint64_t *x) { } void hitag2_cipher_reset(struct hitag2_tag *tag, const uint8_t *iv) { - uint64_t key = ((uint64_t)tag->sectors[2][2]) | - ((uint64_t)tag->sectors[2][3] << 8) | + uint64_t key = ((uint64_t)tag->sectors[2][2] ) | + ((uint64_t)tag->sectors[2][3] << 8) | ((uint64_t)tag->sectors[1][0] << 16) | ((uint64_t)tag->sectors[1][1] << 24) | ((uint64_t)tag->sectors[1][2] << 32) | ((uint64_t)tag->sectors[1][3] << 40); - uint32_t uid = ((uint32_t)tag->sectors[0][0]) | - ((uint32_t)tag->sectors[0][1] << 8) | + uint32_t uid = ((uint32_t)tag->sectors[0][0] ) | + ((uint32_t)tag->sectors[0][1] << 8) | ((uint32_t)tag->sectors[0][2] << 16) | ((uint32_t)tag->sectors[0][3] << 24); - uint32_t iv_ = (((uint32_t)(iv[0]))) | - (((uint32_t)(iv[1])) << 8) | + uint32_t iv_ = (((uint32_t)(iv[0])) ) | + (((uint32_t)(iv[1])) << 8) | (((uint32_t)(iv[2])) << 16) | (((uint32_t)(iv[3])) << 24); tag->cs = _hitag2_init(REV64(key), REV32(uid), REV32(iv_)); From 47ea4d6566feff2e27f1bd94750f84fabb47c17b Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Wed, 9 Aug 2023 00:11:52 -0700 Subject: [PATCH 197/299] const for hitag2 --- armsrc/hitag2.c | 6 +++--- armsrc/hitag2.h | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/armsrc/hitag2.c b/armsrc/hitag2.c index 7206b735c..d4abe9ff1 100644 --- a/armsrc/hitag2.c +++ b/armsrc/hitag2.c @@ -979,7 +979,7 @@ static bool hitag2_read_uid(uint8_t *rx, const size_t rxlen, uint8_t *tx, size_t return true; } -void EloadHitag(uint8_t *data, uint16_t len) { +void EloadHitag(const uint8_t *data, uint16_t len) { memcpy(tag.sectors, data, sizeof(tag.sectors)); } @@ -1532,7 +1532,7 @@ void SimulateHitag2(bool ledcontrol) { // reply_ng(CMD_LF_HITAG_SIMULATE, (checked == -1) ? PM3_EOPABORTED : PM3_SUCCESS, (uint8_t *)tag.sectors, tag_size); } -void ReaderHitag(hitag_function htf, hitag_data *htd, bool ledcontrol) { +void ReaderHitag(hitag_function htf, const hitag_data *htd, bool ledcontrol) { uint32_t command_start = 0, command_duration = 0; uint32_t response_start = 0, response_duration = 0; @@ -1928,7 +1928,7 @@ out: reply_mix(CMD_ACK, bSuccessful, 0, 0, 0, 0); } -void WriterHitag(hitag_function htf, hitag_data *htd, int page, bool ledcontrol) { +void WriterHitag(hitag_function htf, const hitag_data *htd, int page, bool ledcontrol) { uint32_t command_start = 0; uint32_t command_duration = 0; diff --git a/armsrc/hitag2.h b/armsrc/hitag2.h index dcad3b417..90aa8132b 100644 --- a/armsrc/hitag2.h +++ b/armsrc/hitag2.h @@ -24,7 +24,7 @@ void SniffHitag2(bool ledcontrol); void SimulateHitag2(bool ledcontrol); -void ReaderHitag(hitag_function htf, hitag_data *htd, bool ledcontrol); -void WriterHitag(hitag_function htf, hitag_data *htd, int page, bool ledcontrol); -void EloadHitag(uint8_t *data, uint16_t len); +void ReaderHitag(hitag_function htf, const hitag_data *htd, bool ledcontrol); +void WriterHitag(hitag_function htf, const hitag_data *htd, int page, bool ledcontrol); +void EloadHitag(const uint8_t *data, uint16_t len); #endif From c26583ebfd3da2934f51b7f167056474a6234813 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 9 Aug 2023 13:37:38 +0200 Subject: [PATCH 198/299] Bugfix to keyboard scrolling At zoom levels above x16 the left and right keys only scroll the graph buffer to the left, even if right key is pressed. Mouse wheel behaves correctly. Enabled mouse wheel to zoom when control is pressed since that is the more standard UI convention (but left shift scrolling in place). Minor changes to zooming, using more intuitive constants. --- client/src/proxguiqt.cpp | 72 +++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 37 deletions(-) diff --git a/client/src/proxguiqt.cpp b/client/src/proxguiqt.cpp index ff88bce1e..e7dfe1018 100644 --- a/client/src/proxguiqt.cpp +++ b/client/src/proxguiqt.cpp @@ -794,7 +794,7 @@ void Plot::paintEvent(QPaintEvent *event) { snprintf(scalestr, sizeof(scalestr), "[%2.2f %s] ", ((int32_t)(CursorBPos - CursorAPos)) / g_CursorScaleFactor, g_CursorScaleFactorUnit); } } - snprintf(str, sizeof(str), "@%u..%u dt=%i %szoom=%2.2f CursorAPos=%u CursorBPos=%u GridX=%lf GridY=%lf (%s) GridXoffset=%lf", + snprintf(str, sizeof(str), "@%u..%u dt=%i %szoom=%2.3f CursorAPos=%u CursorBPos=%u GridX=%lf GridY=%lf (%s) GridXoffset=%lf", g_GraphStart, g_GraphStop, CursorBPos - CursorAPos, @@ -838,17 +838,25 @@ void Plot::closeEvent(QCloseEvent *event) { gs_useOverlays = false; } +// every 4 steps the zoom doubles (or halves) +#define ZOOM_STEP (1.189207) +// limit zoom to 32 times in either direction +#define ZOOM_LIMIT (32) + void Plot::Zoom(double factor, uint32_t refX) { + double g_GraphPixelsPerPointNew = g_GraphPixelsPerPoint * factor; + if (factor >= 1) { // Zoom in - if (g_GraphPixelsPerPoint <= 25 * factor) { - g_GraphPixelsPerPoint *= factor; + if (g_GraphPixelsPerPointNew <= ZOOM_LIMIT) { + g_GraphPixelsPerPoint = g_GraphPixelsPerPointNew; if (refX > g_GraphStart) { g_GraphStart += (refX - g_GraphStart) - ((refX - g_GraphStart) / factor); } } } else { // Zoom out - if (g_GraphPixelsPerPoint >= 0.01 / factor) { - g_GraphPixelsPerPoint *= factor; + if (g_GraphPixelsPerPointNew >= (1.0 / ZOOM_LIMIT) ) { + g_GraphPixelsPerPoint = g_GraphPixelsPerPointNew; + // shift graph towards refX when zooming out if (refX > g_GraphStart) { if (g_GraphStart >= ((refX - g_GraphStart) / factor) - (refX - g_GraphStart)) { g_GraphStart -= ((refX - g_GraphStart) / factor) - (refX - g_GraphStart); @@ -885,7 +893,6 @@ void Plot::Move(int offset) { void Plot::Trim(void) { uint32_t lref, rref; - const double zoom_offset = 1.148698354997035; // 2**(1/5) if ((CursorAPos == 0) || (CursorBPos == 0)) { // if we don't have both cursors set lref = g_GraphStart; rref = g_GraphStop; @@ -902,12 +909,12 @@ void Plot::Trim(void) { } else { lref = CursorAPos < CursorBPos ? CursorAPos : CursorBPos; rref = CursorAPos < CursorBPos ? CursorBPos : CursorAPos; - // g_GraphPixelsPerPoint mush remain a power of zoom_offset + // g_GraphPixelsPerPoint must remain a power of ZOOM_STEP double GPPPtarget = g_GraphPixelsPerPoint * (g_GraphStop - g_GraphStart) / (rref - lref); while (g_GraphPixelsPerPoint < GPPPtarget) { - g_GraphPixelsPerPoint *= zoom_offset; + g_GraphPixelsPerPoint *= ZOOM_STEP; } - g_GraphPixelsPerPoint /= zoom_offset; + g_GraphPixelsPerPoint /= ZOOM_STEP; CursorAPos -= lref; CursorBPos -= lref; } @@ -925,34 +932,26 @@ void Plot::wheelEvent(QWheelEvent *event) { const float move_offset = 0.05; // -120+shift => zoom in (5 times = *2) // 120+shift => zoom out (5 times = /2) - const double zoom_offset = 1.148698354997035; // 2**(1/5) - if (event->modifiers() & Qt::ShiftModifier) { -// event->position doesn't exist in QT5.12.8, both exist in 5.14.2 and event->x doesn't exist in 5.15.0 #if QT_VERSION >= 0x050d00 - uint32_t x = event->position().x(); + // event->position doesn't exist in QT5.12.8, both exist in 5.14.2 and event->x doesn't exist in 5.15.0 + uint32_t x = event->position().x(); + // event->angleDelta doesn't exist in QT4, both exist in 5.12.8 and 5.14.2 and event->delta doesn't exist in 5.15.0 + float delta = -event->angleDelta().y(); #else - uint32_t x = event->x(); + uint32_t x = event->x(); + float delta = -event->delta(); #endif + if (event->modifiers() & (Qt::ShiftModifier | Qt::ControlModifier)) { x -= WIDTH_AXES; x = (int)(x / g_GraphPixelsPerPoint); x += g_GraphStart; -// event->angleDelta doesn't exist in QT4, both exist in 5.12.8 and 5.14.2 and event->delta doesn't exist in 5.15.0 -#if QT_VERSION >= 0x050d00 - float delta = event->angleDelta().y(); -#else - float delta = event->delta(); -#endif if (delta < 0) { - Zoom(zoom_offset, x); + Zoom(ZOOM_STEP, x); } else { - Zoom(1.0 / zoom_offset, x); + Zoom(1.0 / ZOOM_STEP, x); } } else { -#if QT_VERSION >= 0x050d00 - Move(PageWidth * (-(float)event->angleDelta().y() / (120 / move_offset))); -#else - Move(PageWidth * (-(float)event->delta() / (120 / move_offset))); -#endif + Move(PageWidth * delta * move_offset / 120 ); } this->update(); } @@ -972,7 +971,6 @@ void Plot::mouseMoveEvent(QMouseEvent *event) { void Plot::keyPressEvent(QKeyEvent *event) { uint32_t offset; // Left/right movement offset (in sample size) - const double zoom_offset = 1.148698354997035; // 2**(1/5) if (event->modifiers() & Qt::ShiftModifier) { if (g_PlotGridX) @@ -983,22 +981,22 @@ void Plot::keyPressEvent(QKeyEvent *event) { if (event->modifiers() & Qt::ControlModifier) offset = 1; else - offset = (int)(20 / g_GraphPixelsPerPoint); + offset = int(ZOOM_LIMIT/g_GraphPixelsPerPoint); } switch (event->key()) { case Qt::Key_Down: if (event->modifiers() & Qt::ShiftModifier) { if (event->modifiers() & Qt::ControlModifier) { - Zoom(zoom_offset, CursorBPos); + Zoom(ZOOM_STEP, CursorBPos); } else { - Zoom(2, CursorBPos); + Zoom(ZOOM_STEP*2, CursorBPos); } } else { if (event->modifiers() & Qt::ControlModifier) { - Zoom(zoom_offset, CursorAPos); + Zoom(ZOOM_STEP, CursorAPos); } else { - Zoom(2, CursorAPos); + Zoom(ZOOM_STEP*2, CursorAPos); } } break; @@ -1006,15 +1004,15 @@ void Plot::keyPressEvent(QKeyEvent *event) { case Qt::Key_Up: if (event->modifiers() & Qt::ShiftModifier) { if (event->modifiers() & Qt::ControlModifier) { - Zoom(1.0 / zoom_offset, CursorBPos); + Zoom(1.0 / ZOOM_STEP, CursorBPos); } else { - Zoom(0.5, CursorBPos); + Zoom(1.0 / (ZOOM_STEP*2), CursorBPos); } } else { if (event->modifiers() & Qt::ControlModifier) { - Zoom(1.0 / zoom_offset, CursorAPos); + Zoom(1.0 / ZOOM_STEP, CursorAPos); } else { - Zoom(0.5, CursorAPos); + Zoom(1.0 / (ZOOM_STEP*2), CursorAPos); } } break; From 6947a61d982f80cc91fec4c0789f32f70ef639c0 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 9 Aug 2023 14:30:07 +0200 Subject: [PATCH 199/299] Whitespace --- .vscode/setup.sh | 12 ++--- armsrc/fpgaloader.c | 50 +++++++++---------- armsrc/ldscript | 2 +- client/CMakeLists.txt | 6 +-- client/deps/mbedtls.cmake | 4 +- client/dictionaries/iclass_default_keys.dic | 2 +- client/dictionaries/mfc_default_keys.dic | 12 ++--- client/dictionaries/mfdes_default_keys.dic | 2 +- client/experimental_lib/CMakeLists.txt | 8 +-- client/resources/ecplist.json | 1 - client/src/cmdhw.c | 2 +- client/src/cmdlfem4x50.c | 6 +-- common/crapto1/readme | 4 +- tools/fpga_compress/fpga_compress.c | 14 +++--- tools/hitag2crack/crack2/.gitignore | 6 +-- .../crack5opencl/ht2crack5opencl_kernel.cl | 2 +- tools/mfd_aes_brute/readme.txt | 16 +++--- tools/mfkey/example_trace.txt | 8 +-- tools/nonce2key/readme.txt | 2 +- tools/pm3_tests.sh | 2 +- traces/lf_ATA5577.txt | 4 +- 21 files changed, 82 insertions(+), 83 deletions(-) diff --git a/.vscode/setup.sh b/.vscode/setup.sh index 70672b924..a319ab056 100755 --- a/.vscode/setup.sh +++ b/.vscode/setup.sh @@ -39,7 +39,7 @@ function print_config { function setup_serial_port { if [ -z "$SerialPort" ]; then pm3list=$($VSCODEPATH/../pm3 --list 2>/dev/null) - #Use first port listed + #Use first port listed export SerialPort=$(echo $pm3list | head -n 1 | cut -c 4-) if [ -z "$SerialPort" ]; then echo >&2 "[!!] No serial port found, please set SerialPort manually" @@ -129,17 +129,17 @@ fi HOSTOS=$(uname | awk '{print toupper($0)}') if [ "$HOSTOS" = "LINUX" ]; then - if uname -a|grep -q Microsoft; then + if uname -a|grep -q Microsoft; then setup_wsl - else + else setup_linux - fi + fi elif [ "$HOSTOS" = "DARWIN" ]; then echo >&2 "[!!] MacOS not supported, sorry!" exit 1 elif [[ "$HOSTOS" =~ MINGW(32|64)_NT* ]]; then setup_ps else - echo >&2 "[!!] Host OS not recognized, abort: $HOSTOS" - exit 1 + echo >&2 "[!!] Host OS not recognized, abort: $HOSTOS" + exit 1 fi \ No newline at end of file diff --git a/armsrc/fpgaloader.c b/armsrc/fpgaloader.c index 5c5b6f8c5..2d3f8caab 100644 --- a/armsrc/fpgaloader.c +++ b/armsrc/fpgaloader.c @@ -95,43 +95,43 @@ void SetupSpi(int mode) { case SPI_FPGA_MODE: AT91C_BASE_SPI->SPI_MR = (0 << 24) | // Delay between chip selects (take default: 6 MCK periods) - (0xE << 16) | // Peripheral Chip Select (selects FPGA SPI_NCS0 or PA11) + (0xE << 16) | // Peripheral Chip Select (selects FPGA SPI_NCS0 or PA11) (0 << 7) | // Local Loopback Disabled - AT91C_SPI_MODFDIS | // Mode Fault Detection disabled + AT91C_SPI_MODFDIS | // Mode Fault Detection disabled (0 << 2) | // Chip selects connected directly to peripheral - AT91C_SPI_PS_FIXED | // Fixed Peripheral Select + AT91C_SPI_PS_FIXED | // Fixed Peripheral Select AT91C_SPI_MSTR; // Master Mode AT91C_BASE_SPI->SPI_CSR[0] = (1 << 24) | // Delay between Consecutive Transfers (32 MCK periods) (1 << 16) | // Delay Before SPCK (1 MCK period) (6 << 8) | // Serial Clock Baud Rate (baudrate = MCK/6 = 24MHz/6 = 4M baud - AT91C_SPI_BITS_16 | // Bits per Transfer (16 bits) + AT91C_SPI_BITS_16 | // Bits per Transfer (16 bits) (0 << 3) | // Chip Select inactive after transfer - AT91C_SPI_NCPHA | // Clock Phase data captured on leading edge, changes on following edge + AT91C_SPI_NCPHA | // Clock Phase data captured on leading edge, changes on following edge (0 << 0); // Clock Polarity inactive state is logic 0 break; - /* - case SPI_LCD_MODE: - AT91C_BASE_SPI->SPI_MR = - ( 0 << 24) | // Delay between chip selects (take default: 6 MCK periods) - (0xB << 16) | // Peripheral Chip Select (selects LCD SPI_NCS2 or PA10) - ( 0 << 7) | // Local Loopback Disabled - ( 1 << 4) | // Mode Fault Detection disabled - ( 0 << 2) | // Chip selects connected directly to peripheral - ( 0 << 1) | // Fixed Peripheral Select - ( 1 << 0); // Master Mode +/* + case SPI_LCD_MODE: + AT91C_BASE_SPI->SPI_MR = + ( 0 << 24) | // Delay between chip selects (take default: 6 MCK periods) + (0xB << 16) | // Peripheral Chip Select (selects LCD SPI_NCS2 or PA10) + ( 0 << 7) | // Local Loopback Disabled + ( 1 << 4) | // Mode Fault Detection disabled + ( 0 << 2) | // Chip selects connected directly to peripheral + ( 0 << 1) | // Fixed Peripheral Select + ( 1 << 0); // Master Mode - AT91C_BASE_SPI->SPI_CSR[2] = - ( 1 << 24) | // Delay between Consecutive Transfers (32 MCK periods) - ( 1 << 16) | // Delay Before SPCK (1 MCK period) - ( 6 << 8) | // Serial Clock Baud Rate (baudrate = MCK/6 = 24MHz/6 = 4M baud - AT91C_SPI_BITS_9 | // Bits per Transfer (9 bits) - ( 0 << 3) | // Chip Select inactive after transfer - ( 1 << 1) | // Clock Phase data captured on leading edge, changes on following edge - ( 0 << 0); // Clock Polarity inactive state is logic 0 - break; - */ + AT91C_BASE_SPI->SPI_CSR[2] = + ( 1 << 24) | // Delay between Consecutive Transfers (32 MCK periods) + ( 1 << 16) | // Delay Before SPCK (1 MCK period) + ( 6 << 8) | // Serial Clock Baud Rate (baudrate = MCK/6 = 24MHz/6 = 4M baud + AT91C_SPI_BITS_9 | // Bits per Transfer (9 bits) + ( 0 << 3) | // Chip Select inactive after transfer + ( 1 << 1) | // Clock Phase data captured on leading edge, changes on following edge + ( 0 << 0); // Clock Polarity inactive state is logic 0 + break; +*/ default: DisableSpi(); break; diff --git a/armsrc/ldscript b/armsrc/ldscript index 1dd09e937..0824205a2 100644 --- a/armsrc/ldscript +++ b/armsrc/ldscript @@ -53,7 +53,7 @@ SECTIONS .bss : { __bss_start__ = .; *(.bss) - *(.bss.*) + *(.bss.*) . = ALIGN(4); __bss_end__ = .; } >ram AT>ram :bss diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index cbbedef73..5090dab63 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -379,7 +379,7 @@ set (TARGET_SOURCES ${PM3_ROOT}/client/src/fileutils.c ${PM3_ROOT}/client/src/flash.c ${PM3_ROOT}/client/src/graph.c - ${PM3_ROOT}/client/src/iso4217.c + ${PM3_ROOT}/client/src/iso4217.c ${PM3_ROOT}/client/src/jansson_path.c ${PM3_ROOT}/client/src/preferences.c ${PM3_ROOT}/client/src/pm3.c @@ -656,14 +656,14 @@ if (MINGW) set(CMAKE_C_FLAGS "-mno-ms-bitfields -fexec-charset=cp850 ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS "-mno-ms-bitfields -fexec-charset=cp850 ${CMAKE_CXX_FLAGS}") - # GCC 10 has issues with false positives on stringop-overflow, + # GCC 10 has issues with false positives on stringop-overflow, # let's disable them for now (cf https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92955, https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94335) # beware these flags didn't exist for GCC < 7 if(CMAKE_COMPILER_IS_GNUCXX) execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) if (GCC_VERSION VERSION_GREATER 10.0 OR GCC_VERSION VERSION_EQUAL 10.0) set(CMAKE_C_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_C_FLAGS}") - set(CMAKE_CXX_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_CXX_FLAGS}") + set(CMAKE_CXX_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_CXX_FLAGS}") endif() endif(CMAKE_COMPILER_IS_GNUCXX) diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index 2d212d9c2..58b9aae23 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -10,8 +10,8 @@ add_library(pm3rrg_rdv4_mbedtls STATIC ../../common/mbedtls/error.c ../../common/mbedtls/ecp.c ../../common/mbedtls/ecdh.c - ../../common/mbedtls/ecc_point_compression.c - ../../common/mbedtls/gcm.c + ../../common/mbedtls/ecc_point_compression.c + ../../common/mbedtls/gcm.c ../../common/mbedtls/ecp_curves.c ../../common/mbedtls/certs.c ../../common/mbedtls/camellia.c diff --git a/client/dictionaries/iclass_default_keys.dic b/client/dictionaries/iclass_default_keys.dic index d2d6489b2..c717cd88f 100644 --- a/client/dictionaries/iclass_default_keys.dic +++ b/client/dictionaries/iclass_default_keys.dic @@ -37,5 +37,5 @@ F41DAF58B20C8B91 66584C91EE80D5E5 C1B74D7478053AE2 # -# default iCLASS RFIDeas +# default iCLASS RFIDeas 6B65797374726B72 diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 345d1a702..a2ae9655e 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -36,7 +36,7 @@ D01AFEEB890A 2612C6DE84CA 707B11FC1481 # -# QL88 diversifed +# QL88 diversifed 03F9067646AE 2352C5B56D85 # @@ -71,8 +71,8 @@ B27CCAB30DBD D2ECE8B9395E # NSCP default key 1494E81663D7 -# -# NFC tools +# +# NFC tools 7c9fb8474242 # # Kiev keys @@ -299,7 +299,7 @@ AAFB06045877 25094DF6F148 # # -# https://mattionline.de/fitnessstudio-armband-reverse-engineering/ +# https://mattionline.de/fitnessstudio-armband-reverse-engineering/ # https://mattionline.de/milazycracker/ # gym wistband A, same as Fysiken A # gym wistband B @@ -310,7 +310,7 @@ AAFB06045877 A05DBD98E0FC # # GoFit -AA4DDA458EBB +AA4DDA458EBB EAB8066C7479 # # Nordic Wellness A, same as Fysiken A @@ -871,7 +871,7 @@ AD4FB33388BF # # HID MIFARE Classic 1k Key 484944204953 -204752454154 +204752454154 # HID MIFARE SO 3B7E4FD575AD 11496F97752A diff --git a/client/dictionaries/mfdes_default_keys.dic b/client/dictionaries/mfdes_default_keys.dic index fbf3a459f..3989054f9 100644 --- a/client/dictionaries/mfdes_default_keys.dic +++ b/client/dictionaries/mfdes_default_keys.dic @@ -15,7 +15,7 @@ ffffffffffffffffffffffffffffffffffffffffffffffff 6AC292FAA1315B4D858AB3A3D7D5933A 404142434445464748494a4b4c4d4e4f 3112B738D8862CCD34302EB299AAB456 # Gallagher AES (https://pastebin.com/GkbGLz8r) -47454D5850524553534F53414D504C45 # Gemalto +47454D5850524553534F53414D504C45 # Gemalto 2b7e151628aed2a6abf7158809cf4f3c fbeed618357133667c85e08f7236a8de f7ddac306ae266ccf90bc11ee46d513b diff --git a/client/experimental_lib/CMakeLists.txt b/client/experimental_lib/CMakeLists.txt index 73ec65aad..f08ccdd6c 100644 --- a/client/experimental_lib/CMakeLists.txt +++ b/client/experimental_lib/CMakeLists.txt @@ -379,7 +379,7 @@ set (TARGET_SOURCES ${PM3_ROOT}/client/src/fileutils.c ${PM3_ROOT}/client/src/flash.c ${PM3_ROOT}/client/src/graph.c - ${PM3_ROOT}/client/src/iso4217.c + ${PM3_ROOT}/client/src/iso4217.c ${PM3_ROOT}/client/src/jansson_path.c ${PM3_ROOT}/client/src/preferences.c ${PM3_ROOT}/client/src/pm3.c @@ -632,7 +632,7 @@ add_library(pm3rrg_rdv4 SHARED ) target_compile_definitions(pm3rrg_rdv4 PRIVATE LIBPM3) - + target_compile_options(pm3rrg_rdv4 PUBLIC -Wall -Werror -O3) if (EMBED_READLINE) if (NOT SKIPREADLINE EQUAL 1) @@ -656,14 +656,14 @@ if (MINGW) set(CMAKE_C_FLAGS "-mno-ms-bitfields -fexec-charset=cp850 ${CMAKE_C_FLAGS}") set(CMAKE_CXX_FLAGS "-mno-ms-bitfields -fexec-charset=cp850 ${CMAKE_CXX_FLAGS}") - # GCC 10 has issues with false positives on stringop-overflow, + # GCC 10 has issues with false positives on stringop-overflow, # let's disable them for now (cf https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92955, https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94335) # beware these flags didn't exist for GCC < 7 if(CMAKE_COMPILER_IS_GNUCXX) execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) if (GCC_VERSION VERSION_GREATER 10.0 OR GCC_VERSION VERSION_EQUAL 10.0) set(CMAKE_C_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_C_FLAGS}") - set(CMAKE_CXX_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_CXX_FLAGS}") + set(CMAKE_CXX_FLAGS "-Wno-stringop-overflow -Wno-error=stringop-overflow ${CMAKE_CXX_FLAGS}") endif() endif(CMAKE_COMPILER_IS_GNUCXX) diff --git a/client/resources/ecplist.json b/client/resources/ecplist.json index 991f79f2b..27db827f1 100644 --- a/client/resources/ecplist.json +++ b/client/resources/ecplist.json @@ -25,7 +25,6 @@ "description": "iPhones before IOS17 emit this frame so that other Apple devices don't react to the field during background reading. Also emitted during NFCReaderSession subtypes" }, - { "value": "6a02c801000300000000000000", "name": "Transit: Ventra", diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index aae539c34..ec3ab4867 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -690,7 +690,7 @@ static int CmdSetDivisor(const char *Cmd) { CLIParserFree(ctx); if (arg < 19) { - PrintAndLogEx(ERR, "Divisor must be between" _YELLOW_("19") " and " _YELLOW_("255")); + PrintAndLogEx(ERR, "Divisor must be between " _YELLOW_("19") " and " _YELLOW_("255")); return PM3_EINVARG; } // 12 000 000 (12MHz) diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index c81767c7a..a304a84fe 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -1230,9 +1230,9 @@ int CmdEM4x50Sim(const char *Cmd) { clearCommandBuffer(); SendCommandNG(CMD_LF_EM4X50_SIM, (uint8_t *)&password, sizeof(password)); - + PrintAndLogEx(INFO, "Press " _GREEN_("") " or pm3-button to abort simulation"); - + PacketResponseNG resp; // init to ZERO resp.cmd = 0, @@ -1245,7 +1245,7 @@ int CmdEM4x50Sim(const char *Cmd) { resp.oldarg[1] = 0; resp.oldarg[2] = 0; memset(resp.data.asBytes, 0, PM3_CMD_DATA_SIZE); - + bool keypress; do { keypress = kbd_enter_pressed(); diff --git a/common/crapto1/readme b/common/crapto1/readme index d57fa3e08..3a979efad 100644 --- a/common/crapto1/readme +++ b/common/crapto1/readme @@ -3,10 +3,10 @@ CRAPTO1 Provides a set of library functions which aid the verification of crypto1 weaknesses. - In short a partial implementation of: + In short a partial implementation of: Dismantling MIFARE Classic URL: http://www.sos.cs.ru.nl/applications/rfid/2008-esorics.pdf - Flavio D. Garcia, Gerhard de Koning Gans, Ruben Muijrers, + Flavio D. Garcia, Gerhard de Koning Gans, Ruben Muijrers, Peter van Rossum, Roel Verdult, Ronny Wichers Schreur, Bart Jacobs Institute for Computing and Information Sciences, Radboud University Nijmegen, The Netherlands diff --git a/tools/fpga_compress/fpga_compress.c b/tools/fpga_compress/fpga_compress.c index 5cb34e54b..152c8627e 100644 --- a/tools/fpga_compress/fpga_compress.c +++ b/tools/fpga_compress/fpga_compress.c @@ -83,7 +83,7 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile) { if (num_infiles == 1) { // 1M bytes for now - buffer_size = 1024 * 1024; + buffer_size = 1024 * 1024; } uint32_t outsize_max = LZ4_compressBound(buffer_size); @@ -92,7 +92,7 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile) { if (outbuf == NULL) { fprintf(stderr, "failed to allocate memory"); free(fpga_config); - return (EXIT_FAILURE); + return (EXIT_FAILURE); } char *ring_buffer = calloc(buffer_size, sizeof(char)); @@ -100,7 +100,7 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile) { fprintf(stderr, "failed to allocate memory"); free(outbuf); free(fpga_config); - return (EXIT_FAILURE); + return (EXIT_FAILURE); } LZ4_streamHC_t *lz4_streamhc = LZ4_createStreamHC(); @@ -108,7 +108,7 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile) { int current_in = 0; int current_out = 0; - + while (current_in < total_size) { int bytes_to_copy = MIN(FPGA_RING_BUFFER_BYTES, (total_size - current_in)); @@ -261,7 +261,7 @@ static int zlib_decompress(FILE *infile, FILE *outfiles[], uint8_t num_outfiles, for (long k = 0; k < *outsize / (FPGA_INTERLEAVE_SIZE * num_outfiles); k++) { for (uint16_t j = 0; j < num_outfiles; j++) { if (k * FPGA_INTERLEAVE_SIZE < outfilesizes[j]) { - uint16_t chunk = (outfilesizes[j] - (k * FPGA_INTERLEAVE_SIZE) < FPGA_INTERLEAVE_SIZE) ? + uint16_t chunk = (outfilesizes[j] - (k * FPGA_INTERLEAVE_SIZE) < FPGA_INTERLEAVE_SIZE) ? outfilesizes[j] - (k * FPGA_INTERLEAVE_SIZE) : FPGA_INTERLEAVE_SIZE; fwrite(outbufall + offset, chunk, sizeof(char), outfiles[j]); @@ -534,7 +534,7 @@ int main(int argc, char **argv) { for (uint16_t j = 0; j < num_input_files; j++) { fclose(infiles[j]); } - + free(infile_names); free(infiles); return (EXIT_FAILURE); @@ -546,7 +546,7 @@ int main(int argc, char **argv) { } else { ret = zlib_compress(infiles, num_input_files, outfile); } - + // close file handlers fclose(outfile); for (uint16_t j = 0; j < num_input_files; j++) { diff --git a/tools/hitag2crack/crack2/.gitignore b/tools/hitag2crack/crack2/.gitignore index 71494d126..7cf31896d 100644 --- a/tools/hitag2crack/crack2/.gitignore +++ b/tools/hitag2crack/crack2/.gitignore @@ -1,6 +1,6 @@ -ht2crack2buildtable -ht2crack2search -ht2crack2gentest +ht2crack2buildtable +ht2crack2search +ht2crack2gentest ht2crack2buildtable.exe ht2crack2search.exe diff --git a/tools/hitag2crack/crack5opencl/ht2crack5opencl_kernel.cl b/tools/hitag2crack/crack5opencl/ht2crack5opencl_kernel.cl index 1d4bd9653..f914b229c 100644 --- a/tools/hitag2crack/crack5opencl/ht2crack5opencl_kernel.cl +++ b/tools/hitag2crack/crack5opencl/ht2crack5opencl_kernel.cl @@ -603,7 +603,7 @@ void find_state(const uint candidate_index_base, const bitslice_t filter9_3 = f_b_bs(state[-2 + 37], state[-2 + 38], state[-2 + 40], state[-2 + 42]); const bitslice_t filter9 = f_c_bs(filter9_0, filter9_1, filter9_2, filter9_3, filter9_4); - + results8 &= (filter9 ^ keystream[9]); if (!results8) continue; diff --git a/tools/mfd_aes_brute/readme.txt b/tools/mfd_aes_brute/readme.txt index c69835609..4d0ac2ec3 100644 --- a/tools/mfd_aes_brute/readme.txt +++ b/tools/mfd_aes_brute/readme.txt @@ -42,10 +42,10 @@ expected result: 261c07a23f2bc8262f69f10a5bdf3764 -Bruteforce using 8 threads -Found timestamp........ 1631100305 ( '2021-09-08 13:25:05' ) -key.................... 261c07a23f2bc8262f69f10a5bdf3764 -execution time 1.00 sec +Bruteforce using 8 threads +Found timestamp........ 1631100305 ( '2021-09-08 13:25:05' ) +key.................... 261c07a23f2bc8262f69f10a5bdf3764 +execution time 1.00 sec # # complex @@ -55,8 +55,8 @@ expected result: e757178e13516a4f3171bc6ea85e165a -Bruteforce using 8 threads -Found timestamp........ 1606834416 ( '2020-12-01 15:53:36' ) -key.................... e757178e13516a4f3171bc6ea85e165a -execution time 18.54 sec +Bruteforce using 8 threads +Found timestamp........ 1606834416 ( '2020-12-01 15:53:36' ) +key.................... e757178e13516a4f3171bc6ea85e165a +execution time 18.54 sec diff --git a/tools/mfkey/example_trace.txt b/tools/mfkey/example_trace.txt index 3705cebd1..b068c0577 100644 --- a/tools/mfkey/example_trace.txt +++ b/tools/mfkey/example_trace.txt @@ -10,20 +10,20 @@ + 1287: : a1 e4 58 ce 6e ea 41 e0 + 64: 0: TAG 5c ad f4 39 -:: Sample of trace above, +:: Sample of trace above, ./mfkey64 9c599b32 82a4166c a1e458ce 6eea41e0 5cadf439 ----------------------------------------------------------------------------------------------------- :: For mfkey32, you want to get two different NR_0/NR_1 values. :: -./mfkey32 52B0F519 5417D1F8 4D545EA7 E15AC8C2 DAC1A7F4 5AE5C37F +./mfkey32 52B0F519 5417D1F8 4D545EA7 E15AC8C2 DAC1A7F4 5AE5C37F :: For mfkey32v2 (moebius), you want to get two different NT/NT1 values. (like in the SIM commands) :: ./mfkey32v2 12345678 1AD8DF2B 1D316024 620EF048 30D6CB07 C52077E2 837AC61A -./mfkey32v2 52B0F519 5417D1F8 4D545EA7 E15AC8C2 A1BA88C6 DAC1A7F4 5AE5C37F +./mfkey32v2 52B0F519 5417D1F8 4D545EA7 E15AC8C2 A1BA88C6 DAC1A7F4 5AE5C37F :: for mfkey64, you want to have the AT response from tag. @@ -32,7 +32,7 @@ ./mfkey64 52B0F519 5417D1F8 4D545EA7 E15AC8C2 5056E41B ----------------------------------------------------------------------------------------------------- -New functionality from @zhovner, +New functionality from @zhovner, ----------------------------------------------------------------------------------------------------- ### Communication decryption RDR 26 diff --git a/tools/nonce2key/readme.txt b/tools/nonce2key/readme.txt index 39ef9ae6b..d28e57434 100644 --- a/tools/nonce2key/readme.txt +++ b/tools/nonce2key/readme.txt @@ -1,7 +1,7 @@ To test the nonce2key tool. :: tip -You can use the output from "hf mf mifare" to use with this tool. +You can use the output from "hf mf mifare" to use with this tool. :: sample ./nonce2key e9cadd9c a8bf4a12 a020a8285858b090 050f010607060e07 5693be6c00000000 diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index 434468147..0957fd386 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -288,7 +288,7 @@ while true; do if ! CheckFileExist "mf_nonce_brute exists" "$MFNONCEBRUTEBIN"; then break; fi if ! CheckExecute slow "mf_nonce_brute test 1/2" "$MFNONCEBRUTEBIN 9c599b32 5a920d85 1011 98d76b77 d6c6e870 0000 ca7e0b63 0111 3e709c8a" "Key found \[.*ffffffffffff.*\]"; then break; fi if ! CheckExecute slow "mf_nonce_brute test 2/2" "$MFNONCEBRUTEBIN 96519578 d7e3c6ac 0011 cd311951 9da49e49 0010 2bb22e00 0100 a4f7f398" "Key found \[.*3b7e4fd575ad.*\]"; then break; fi - fi + fi if $TESTALL || $TESTMFDAESBRUTE; then echo -e "\n${C_BLUE}Testing mfd_aes_brute:${C_NC} ${MFDASEBRUTEBIN:=./tools/mfd_aes_brute/mfd_aes_brute}" if ! CheckFileExist "mfd_aes_brute exists" "$MFDASEBRUTEBIN"; then break; fi diff --git a/traces/lf_ATA5577.txt b/traces/lf_ATA5577.txt index 7d9ac4561..0ae92af08 100644 --- a/traces/lf_ATA5577.txt +++ b/traces/lf_ATA5577.txt @@ -44,7 +44,7 @@ lf indala clone --fc 123 --cn 1337 lf read s 10000 data save f lf_ATA5577_indala -lf indala clone -l -r 80000001b23523a6c2e31eba3cbee4afb3c6ad1fcf649393928c14e5 +lf indala clone -l -r 80000001b23523a6c2e31eba3cbee4afb3c6ad1fcf649393928c14e5 lf read s 10000 data save f lf_ATA5577_indala_224 @@ -92,7 +92,7 @@ lf noralsy clone 112233 lf read s 10000 data save f lf_ATA5577_noralsy -lf pac clone c CD4F5552 +lf pac clone c CD4F5552 lf read s 10000 data save f lf_ATA5577_pac From 4b1090c8c75e4d619e9ae319cad986e380fbdccd Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 9 Aug 2023 19:49:55 +0200 Subject: [PATCH 200/299] Rename "vocabulory" to "vocabulary" --- Makefile | 2 +- client/pyscripts/pm3_help2list.py | 12 +- client/src/pm3line.c | 10 +- client/src/pm3line_vocabulary.h | 1627 +++++++++++++++++++++++++++++ client/src/pm3line_vocabulory.h | 814 --------------- 5 files changed, 1639 insertions(+), 826 deletions(-) create mode 100644 client/src/pm3line_vocabulary.h delete mode 100644 client/src/pm3line_vocabulory.h diff --git a/Makefile b/Makefile index 9a3ae0611..c548646bf 100644 --- a/Makefile +++ b/Makefile @@ -321,7 +321,7 @@ style: [ -x client/proxmark3 ] && client/proxmark3 --fulltext | sed 's#com[0-9]#/dev/ttyacm0#'|python3 client/pyscripts/pm3_help2json.py - doc/commands.json # Update the readline autocomplete autogenerated code - [ -x client/proxmark3 ] && client/proxmark3 --fulltext | python3 client/pyscripts/pm3_help2list.py - client/src/pm3line_vocabulory.h + [ -x client/proxmark3 ] && client/proxmark3 --fulltext | python3 client/pyscripts/pm3_help2list.py - client/src/pm3line_vocabulary.h # Detecting weird codepages and tabs. diff --git a/client/pyscripts/pm3_help2list.py b/client/pyscripts/pm3_help2list.py index 7c27d23fe..7355bca46 100755 --- a/client/pyscripts/pm3_help2list.py +++ b/client/pyscripts/pm3_help2list.py @@ -12,7 +12,7 @@ This version - Iceman Note: - This script is used as a helper script to generate the pm3line_vocabulory.h file. + This script is used as a helper script to generate the pm3line_vocabulary.h file. It need a working proxmark3 client to extract the help text. Ie: this script can't be used inside the normal build sequence. @@ -65,8 +65,8 @@ def main(): // readline auto complete utilities //----------------------------------------------------------------------------- -#ifndef PM3LINE_VOCABULORY_H__ -#define PM3LINE_VOCABULORY_H__ +#ifndef PM3LINE_VOCABULARY_H__ +#define PM3LINE_VOCABULARY_H__ #ifdef __cplusplus extern "C" { @@ -74,12 +74,12 @@ extern "C" { #include -typedef struct vocabulory_s { +typedef struct vocabulary_s { bool offline; const char *name; -} vocabulory_t; +} vocabulary_t; -const static vocabulory_t vocabulory[] = {\n""") +const static vocabulary_t vocabulary[] = {\n""") for key, values in command_data.items(): offline = 0 diff --git a/client/src/pm3line.c b/client/src/pm3line.c index 1bf4476e0..5c09c6135 100644 --- a/client/src/pm3line.c +++ b/client/src/pm3line.c @@ -27,7 +27,7 @@ #elif defined(HAVE_LINENOISE) #include "linenoise.h" #endif -#include "pm3line_vocabulory.h" +#include "pm3line_vocabulary.h" #include "pm3_cmd.h" #include "ui.h" // g_session #include "util.h" // str_ndup @@ -45,12 +45,12 @@ static char *rl_command_generator(const char *text, int state) { len = strlen(text); } - while ((command = vocabulory[index].name)) { + while ((command = vocabulary[index].name)) { // When no pm3 device present // and the command is not available offline, // we skip it. - if ((g_session.pm3_present == false) && (vocabulory[index].offline == false)) { + if ((g_session.pm3_present == false) && (vocabulary[index].offline == false)) { index++; continue; } @@ -82,12 +82,12 @@ static void ln_command_completion(const char *text, linenoiseCompletions *lc) { size_t prev_match_len = 0; size_t len = strlen(text); const char *command; - while ((command = vocabulory[index].name)) { + while ((command = vocabulary[index].name)) { // When no pm3 device present // and the command is not available offline, // we skip it. - if ((g_session.pm3_present == false) && (vocabulory[index].offline == false)) { + if ((g_session.pm3_present == false) && (vocabulary[index].offline == false)) { index++; continue; } diff --git a/client/src/pm3line_vocabulary.h b/client/src/pm3line_vocabulary.h new file mode 100644 index 000000000..96fb95dc5 --- /dev/null +++ b/client/src/pm3line_vocabulary.h @@ -0,0 +1,1627 @@ +//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +// readline auto complete utilities +//----------------------------------------------------------------------------- + +#ifndef PM3LINE_VOCABULARY_H__ +#define PM3LINE_VOCABULARY_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef struct vocabulary_s { + bool offline; + const char *name; +} vocabulary_t; + +const static vocabulary_t vocabulary[] = { + { 1, "help" }, + { 0, "auto" }, + { 1, "clear" }, + { 1, "hints" }, + { 1, "msleep" }, + { 1, "rem" }, + { 1, "quit" }, + { 1, "exit" }, + { 1, "prefs help" }, + { 1, "prefs show" }, + { 1, "prefs get barmode" }, + { 1, "prefs get clientdebug" }, + { 1, "prefs get clientdelay" }, + { 1, "prefs get color" }, + { 1, "prefs get savepaths" }, + { 1, "prefs get emoji" }, + { 1, "prefs get hints" }, + { 1, "prefs get output" }, + { 1, "prefs get plotsliders" }, + { 1, "prefs set help" }, + { 1, "prefs set barmode" }, + { 1, "prefs set clientdebug" }, + { 1, "prefs set clientdelay" }, + { 1, "prefs set color" }, + { 1, "prefs set emoji" }, + { 1, "prefs set hints" }, + { 1, "prefs set savepaths" }, + { 1, "prefs set output" }, + { 1, "prefs set plotsliders" }, + { 1, "analyse help" }, + { 1, "analyse lcr" }, + { 1, "analyse crc" }, + { 1, "analyse chksum" }, + { 1, "analyse dates" }, + { 1, "analyse lfsr" }, + { 1, "analyse a" }, + { 1, "analyse nuid" }, + { 1, "analyse demodbuff" }, + { 1, "analyse freq" }, + { 1, "analyse foo" }, + { 1, "analyse units" }, + { 1, "data help" }, + { 1, "data biphaserawdecode" }, + { 1, "data detectclock" }, + { 1, "data fsktonrz" }, + { 1, "data manrawdecode" }, + { 1, "data modulation" }, + { 1, "data rawdemod" }, + { 1, "data askedgedetect" }, + { 1, "data autocorr" }, + { 1, "data dirthreshold" }, + { 1, "data decimate" }, + { 1, "data envelope" }, + { 1, "data undecimate" }, + { 1, "data hide" }, + { 1, "data hpf" }, + { 1, "data iir" }, + { 1, "data grid" }, + { 1, "data ltrim" }, + { 1, "data mtrim" }, + { 1, "data norm" }, + { 1, "data plot" }, + { 1, "data cthreshold" }, + { 1, "data rtrim" }, + { 1, "data setgraphmarkers" }, + { 1, "data shiftgraphzero" }, + { 1, "data timescale" }, + { 1, "data zerocrossings" }, + { 1, "data convertbitstream" }, + { 1, "data getbitstream" }, + { 1, "data asn1" }, + { 1, "data atr" }, + { 1, "data bin2hex" }, + { 0, "data bitsamples" }, + { 1, "data clear" }, + { 1, "data diff" }, + { 0, "data hexsamples" }, + { 1, "data hex2bin" }, + { 1, "data load" }, + { 1, "data num" }, + { 1, "data print" }, + { 0, "data samples" }, + { 1, "data save" }, + { 1, "data setdebugmode" }, + { 0, "data tune" }, + { 1, "emv help" }, + { 1, "emv list" }, + { 1, "emv test" }, + { 0, "emv challenge" }, + { 0, "emv exec" }, + { 0, "emv genac" }, + { 0, "emv gpo" }, + { 0, "emv intauth" }, + { 0, "emv pse" }, + { 0, "emv reader" }, + { 0, "emv readrec" }, + { 0, "emv roca" }, + { 0, "emv scan" }, + { 0, "emv search" }, + { 0, "emv select" }, + { 1, "hf help" }, + { 1, "hf list" }, + { 0, "hf plot" }, + { 0, "hf tune" }, + { 1, "hf search" }, + { 0, "hf sniff" }, + { 1, "hf 14a help" }, + { 1, "hf 14a list" }, + { 0, "hf 14a antifuzz" }, + { 0, "hf 14a config" }, + { 0, "hf 14a cuids" }, + { 0, "hf 14a info" }, + { 0, "hf 14a sim" }, + { 0, "hf 14a sniff" }, + { 0, "hf 14a raw" }, + { 0, "hf 14a reader" }, + { 0, "hf 14a apdu" }, + { 0, "hf 14a apdufind" }, + { 0, "hf 14a chaining" }, + { 0, "hf 14a ndefformat" }, + { 0, "hf 14a ndefread" }, + { 0, "hf 14a ndefwrite" }, + { 1, "hf 14b help" }, + { 0, "hf 14b apdu" }, + { 0, "hf 14b dump" }, + { 0, "hf 14b info" }, + { 1, "hf 14b list" }, + { 0, "hf 14b ndefread" }, + { 0, "hf 14b raw" }, + { 0, "hf 14b reader" }, + { 0, "hf 14b sim" }, + { 0, "hf 14b sniff" }, + { 0, "hf 14b rdbl" }, + { 0, "hf 14b sriwrite" }, + { 1, "hf 14b view" }, + { 1, "hf 15 help" }, + { 1, "hf 15 list" }, + { 1, "hf 15 demod" }, + { 0, "hf 15 dump" }, + { 0, "hf 15 info" }, + { 0, "hf 15 sniff" }, + { 0, "hf 15 raw" }, + { 0, "hf 15 rdbl" }, + { 0, "hf 15 rdmulti" }, + { 0, "hf 15 reader" }, + { 0, "hf 15 restore" }, + { 0, "hf 15 samples" }, + { 1, "hf 15 view" }, + { 0, "hf 15 wrbl" }, + { 0, "hf 15 sim" }, + { 0, "hf 15 eload" }, + { 0, "hf 15 esave" }, + { 0, "hf 15 eview" }, + { 0, "hf 15 slixwritepwd" }, + { 0, "hf 15 slixeasdisable" }, + { 0, "hf 15 slixeasenable" }, + { 0, "hf 15 slixprivacydisable" }, + { 0, "hf 15 slixprivacyenable" }, + { 0, "hf 15 passprotectafi" }, + { 0, "hf 15 passprotecteas" }, + { 0, "hf 15 findafi" }, + { 0, "hf 15 writeafi" }, + { 0, "hf 15 writedsfid" }, + { 0, "hf 15 csetuid" }, + { 1, "hf cipurse help" }, + { 0, "hf cipurse info" }, + { 0, "hf cipurse select" }, + { 0, "hf cipurse auth" }, + { 0, "hf cipurse read" }, + { 0, "hf cipurse write" }, + { 0, "hf cipurse aread" }, + { 0, "hf cipurse awrite" }, + { 0, "hf cipurse formatall" }, + { 0, "hf cipurse create" }, + { 0, "hf cipurse delete" }, + { 0, "hf cipurse updkey" }, + { 0, "hf cipurse updakey" }, + { 0, "hf cipurse default" }, + { 1, "hf cipurse test" }, + { 1, "hf epa help" }, + { 0, "hf epa cnonces" }, + { 0, "hf epa replay" }, + { 0, "hf epa sim" }, + { 1, "hf emrtd help" }, + { 0, "hf emrtd dump" }, + { 1, "hf emrtd info" }, + { 1, "hf emrtd list" }, + { 1, "hf felica help" }, + { 1, "hf felica list" }, + { 0, "hf felica reader" }, + { 0, "hf felica info" }, + { 0, "hf felica sniff" }, + { 0, "hf felica raw" }, + { 0, "hf felica rdbl" }, + { 0, "hf felica wrbl" }, + { 0, "hf felica rqservice" }, + { 0, "hf felica rqresponse" }, + { 0, "hf felica scsvcode" }, + { 0, "hf felica rqsyscode" }, + { 0, "hf felica auth1" }, + { 0, "hf felica auth2" }, + { 0, "hf felica rqspecver" }, + { 0, "hf felica resetmode" }, + { 0, "hf felica litesim" }, + { 0, "hf felica litedump" }, + { 1, "hf fido help" }, + { 1, "hf fido list" }, + { 0, "hf fido info" }, + { 0, "hf fido reg" }, + { 0, "hf fido auth" }, + { 0, "hf fido make" }, + { 0, "hf fido assert" }, + { 1, "hf fudan help" }, + { 0, "hf fudan reader" }, + { 0, "hf fudan dump" }, + { 0, "hf fudan rdbl" }, + { 1, "hf fudan view" }, + { 0, "hf fudan wrbl" }, + { 1, "hf gallagher help" }, + { 0, "hf gallagher reader" }, + { 0, "hf gallagher clone" }, + { 0, "hf gallagher delete" }, + { 1, "hf gallagher diversifykey" }, + { 1, "hf gallagher decode" }, + { 1, "hf ksx6924 help" }, + { 0, "hf ksx6924 select" }, + { 0, "hf ksx6924 info" }, + { 0, "hf ksx6924 balance" }, + { 0, "hf ksx6924 init" }, + { 0, "hf ksx6924 prec" }, + { 1, "hf jooki help" }, + { 0, "hf jooki clone" }, + { 1, "hf jooki decode" }, + { 1, "hf jooki encode" }, + { 0, "hf jooki sim" }, + { 1, "hf iclass help" }, + { 1, "hf iclass list" }, + { 0, "hf iclass dump" }, + { 1, "hf iclass info" }, + { 0, "hf iclass rdbl" }, + { 0, "hf iclass reader" }, + { 0, "hf iclass restore" }, + { 0, "hf iclass sniff" }, + { 1, "hf iclass view" }, + { 0, "hf iclass wrbl" }, + { 0, "hf iclass chk" }, + { 1, "hf iclass loclass" }, + { 1, "hf iclass lookup" }, + { 0, "hf iclass sim" }, + { 0, "hf iclass eload" }, + { 0, "hf iclass esave" }, + { 0, "hf iclass eview" }, + { 1, "hf iclass configcard" }, + { 1, "hf iclass calcnewkey" }, + { 1, "hf iclass encode" }, + { 1, "hf iclass encrypt" }, + { 1, "hf iclass decrypt" }, + { 1, "hf iclass managekeys" }, + { 1, "hf iclass permutekey" }, + { 0, "hf iclass sam" }, + { 1, "hf legic help" }, + { 0, "hf legic dump" }, + { 0, "hf legic info" }, + { 1, "hf legic list" }, + { 0, "hf legic rdbl" }, + { 0, "hf legic reader" }, + { 0, "hf legic restore" }, + { 0, "hf legic wipe" }, + { 0, "hf legic wrbl" }, + { 0, "hf legic sim" }, + { 0, "hf legic eload" }, + { 0, "hf legic esave" }, + { 0, "hf legic eview" }, + { 0, "hf legic einfo" }, + { 1, "hf legic crc" }, + { 1, "hf legic view" }, + { 1, "hf lto help" }, + { 0, "hf lto dump" }, + { 0, "hf lto info" }, + { 1, "hf lto list" }, + { 0, "hf lto rdbl" }, + { 0, "hf lto reader" }, + { 0, "hf lto restore" }, + { 0, "hf lto wrbl" }, + { 1, "hf mf help" }, + { 1, "hf mf list" }, + { 0, "hf mf darkside" }, + { 0, "hf mf nested" }, + { 1, "hf mf hardnested" }, + { 0, "hf mf staticnested" }, + { 0, "hf mf autopwn" }, + { 0, "hf mf nack" }, + { 0, "hf mf chk" }, + { 0, "hf mf fchk" }, + { 1, "hf mf decrypt" }, + { 0, "hf mf supercard" }, + { 0, "hf mf auth4" }, + { 1, "hf mf acl" }, + { 0, "hf mf dump" }, + { 1, "hf mf mad" }, + { 0, "hf mf personalize" }, + { 0, "hf mf rdbl" }, + { 0, "hf mf rdsc" }, + { 0, "hf mf restore" }, + { 0, "hf mf setmod" }, + { 1, "hf mf value" }, + { 1, "hf mf view" }, + { 0, "hf mf wipe" }, + { 0, "hf mf wrbl" }, + { 0, "hf mf sim" }, + { 0, "hf mf ecfill" }, + { 0, "hf mf eclr" }, + { 0, "hf mf egetblk" }, + { 0, "hf mf egetsc" }, + { 0, "hf mf ekeyprn" }, + { 0, "hf mf eload" }, + { 0, "hf mf esave" }, + { 0, "hf mf esetblk" }, + { 0, "hf mf eview" }, + { 0, "hf mf cgetblk" }, + { 0, "hf mf cgetsc" }, + { 0, "hf mf cload" }, + { 0, "hf mf csave" }, + { 0, "hf mf csetblk" }, + { 0, "hf mf csetuid" }, + { 0, "hf mf cview" }, + { 0, "hf mf cwipe" }, + { 0, "hf mf gen3uid" }, + { 0, "hf mf gen3blk" }, + { 0, "hf mf gen3freeze" }, + { 0, "hf mf ggetblk" }, + { 0, "hf mf gload" }, + { 0, "hf mf gsave" }, + { 0, "hf mf gsetblk" }, + { 0, "hf mf gview" }, + { 0, "hf mf gdmcfg" }, + { 0, "hf mf gdmsetcfg" }, + { 0, "hf mf gdmsetblk" }, + { 0, "hf mf ndefformat" }, + { 0, "hf mf ndefread" }, + { 0, "hf mf ndefwrite" }, + { 1, "hf mfp help" }, + { 1, "hf mfp list" }, + { 0, "hf mfp auth" }, + { 0, "hf mfp chk" }, + { 0, "hf mfp dump" }, + { 0, "hf mfp info" }, + { 0, "hf mfp mad" }, + { 0, "hf mfp rdbl" }, + { 0, "hf mfp rdsc" }, + { 0, "hf mfp wrbl" }, + { 0, "hf mfp commitp" }, + { 0, "hf mfp initp" }, + { 0, "hf mfp wrp" }, + { 0, "hf mfp ndefformat" }, + { 0, "hf mfp ndefread" }, + { 0, "hf mfp ndefwrite" }, + { 1, "hf mfu help" }, + { 1, "hf mfu list" }, + { 1, "hf mfu keygen" }, + { 1, "hf mfu pwdgen" }, + { 0, "hf mfu otptear" }, + { 0, "hf mfu cauth" }, + { 0, "hf mfu dump" }, + { 0, "hf mfu info" }, + { 0, "hf mfu ndefread" }, + { 0, "hf mfu rdbl" }, + { 0, "hf mfu restore" }, + { 1, "hf mfu view" }, + { 0, "hf mfu wrbl" }, + { 0, "hf mfu tamper" }, + { 0, "hf mfu eload" }, + { 0, "hf mfu esave" }, + { 0, "hf mfu eview" }, + { 0, "hf mfu sim" }, + { 0, "hf mfu setpwd" }, + { 0, "hf mfu setuid" }, + { 1, "hf mfdes help" }, + { 0, "hf mfdes info" }, + { 0, "hf mfdes getuid" }, + { 0, "hf mfdes default" }, + { 0, "hf mfdes auth" }, + { 0, "hf mfdes chk" }, + { 0, "hf mfdes detect" }, + { 0, "hf mfdes freemem" }, + { 0, "hf mfdes setconfig" }, + { 0, "hf mfdes formatpicc" }, + { 1, "hf mfdes list" }, + { 0, "hf mfdes mad" }, + { 0, "hf mfdes lsapp" }, + { 0, "hf mfdes getaids" }, + { 0, "hf mfdes getappnames" }, + { 0, "hf mfdes bruteaid" }, + { 0, "hf mfdes createapp" }, + { 0, "hf mfdes deleteapp" }, + { 0, "hf mfdes selectapp" }, + { 0, "hf mfdes changekey" }, + { 0, "hf mfdes chkeysettings" }, + { 0, "hf mfdes getkeysettings" }, + { 0, "hf mfdes getkeyversions" }, + { 0, "hf mfdes getfileids" }, + { 0, "hf mfdes getfileisoids" }, + { 0, "hf mfdes lsfiles" }, + { 0, "hf mfdes dump" }, + { 0, "hf mfdes createfile" }, + { 0, "hf mfdes createvaluefile" }, + { 0, "hf mfdes createrecordfile" }, + { 0, "hf mfdes createmacfile" }, + { 0, "hf mfdes deletefile" }, + { 0, "hf mfdes getfilesettings" }, + { 0, "hf mfdes chfilesettings" }, + { 0, "hf mfdes read" }, + { 0, "hf mfdes write" }, + { 0, "hf mfdes value" }, + { 0, "hf mfdes clearrecfile" }, + { 1, "hf mfdes test" }, + { 1, "hf ntag424 help" }, + { 0, "hf ntag424 info" }, + { 0, "hf ntag424 sdm" }, + { 1, "hf ntag424 view" }, + { 1, "hf seos help" }, + { 0, "hf seos info" }, + { 1, "hf seos list" }, + { 1, "hf st25ta help" }, + { 0, "hf st25ta info" }, + { 1, "hf st25ta list" }, + { 1, "hf st25ta ndefread" }, + { 0, "hf st25ta protect" }, + { 0, "hf st25ta pwd" }, + { 0, "hf st25ta sim" }, + { 1, "hf tesla help" }, + { 0, "hf tesla info" }, + { 1, "hf tesla list" }, + { 1, "hf texkom help" }, + { 0, "hf texkom reader" }, + { 0, "hf texkom sim" }, + { 1, "hf thinfilm help" }, + { 0, "hf thinfilm info" }, + { 1, "hf thinfilm list" }, + { 0, "hf thinfilm sim" }, + { 1, "hf topaz help" }, + { 1, "hf topaz list" }, + { 0, "hf topaz dump" }, + { 0, "hf topaz info" }, + { 0, "hf topaz raw" }, + { 0, "hf topaz rdbl" }, + { 0, "hf topaz reader" }, + { 0, "hf topaz sim" }, + { 0, "hf topaz sniff" }, + { 1, "hf topaz view" }, + { 0, "hf topaz wrbl" }, + { 1, "hf vas help" }, + { 0, "hf vas reader" }, + { 1, "hf vas decrypt" }, + { 1, "hf waveshare help" }, + { 0, "hf waveshare loadbmp" }, + { 1, "hf xerox help" }, + { 0, "hf xerox info" }, + { 0, "hf xerox reader" }, + { 0, "hf xerox dump" }, + { 1, "hw help" }, + { 0, "hw break" }, + { 1, "hw connect" }, + { 0, "hw dbg" }, + { 0, "hw detectreader" }, + { 0, "hw fpgaoff" }, + { 0, "hw lcd" }, + { 0, "hw lcdreset" }, + { 0, "hw ping" }, + { 0, "hw readmem" }, + { 0, "hw reset" }, + { 0, "hw setlfdivisor" }, + { 0, "hw setmux" }, + { 0, "hw standalone" }, + { 0, "hw status" }, + { 0, "hw tearoff" }, + { 0, "hw tia" }, + { 1, "hw timeout" }, + { 0, "hw tune" }, + { 1, "hw version" }, + { 1, "lf help" }, + { 0, "lf config" }, + { 0, "lf cmdread" }, + { 0, "lf read" }, + { 1, "lf search" }, + { 0, "lf sim" }, + { 0, "lf simask" }, + { 0, "lf simfsk" }, + { 0, "lf simpsk" }, + { 0, "lf simbidir" }, + { 0, "lf sniff" }, + { 0, "lf tune" }, + { 1, "lf awid help" }, + { 1, "lf awid demod" }, + { 0, "lf awid reader" }, + { 0, "lf awid clone" }, + { 0, "lf awid sim" }, + { 0, "lf awid brute" }, + { 0, "lf awid watch" }, + { 1, "lf cotag help" }, + { 1, "lf cotag demod" }, + { 0, "lf cotag reader" }, + { 1, "lf destron help" }, + { 1, "lf destron demod" }, + { 0, "lf destron reader" }, + { 0, "lf destron clone" }, + { 0, "lf destron sim" }, + { 1, "lf em help" }, + { 1, "lf em 410x help" }, + { 1, "lf em 410x demod" }, + { 0, "lf em 410x reader" }, + { 0, "lf em 410x sim" }, + { 0, "lf em 410x brute" }, + { 0, "lf em 410x watch" }, + { 0, "lf em 410x spoof" }, + { 0, "lf em 410x clone" }, + { 1, "lf em 4x05 help" }, + { 0, "lf em 4x05 brute" }, + { 0, "lf em 4x05 chk" }, + { 1, "lf em 4x05 demod" }, + { 0, "lf em 4x05 dump" }, + { 0, "lf em 4x05 info" }, + { 0, "lf em 4x05 read" }, + { 1, "lf em 4x05 sniff" }, + { 0, "lf em 4x05 unlock" }, + { 0, "lf em 4x05 wipe" }, + { 0, "lf em 4x05 write" }, + { 1, "lf em 4x50 help" }, + { 0, "lf em 4x50 brute" }, + { 0, "lf em 4x50 chk" }, + { 0, "lf em 4x50 dump" }, + { 0, "lf em 4x50 info" }, + { 0, "lf em 4x50 login" }, + { 0, "lf em 4x50 rdbl" }, + { 0, "lf em 4x50 reader" }, + { 0, "lf em 4x50 restore" }, + { 0, "lf em 4x50 wrbl" }, + { 0, "lf em 4x50 wrpwd" }, + { 0, "lf em 4x50 wipe" }, + { 0, "lf em 4x50 eload" }, + { 0, "lf em 4x50 esave" }, + { 0, "lf em 4x50 eview" }, + { 0, "lf em 4x50 sim" }, + { 1, "lf em 4x70 help" }, + { 0, "lf em 4x70 brute" }, + { 0, "lf em 4x70 info" }, + { 0, "lf em 4x70 write" }, + { 0, "lf em 4x70 unlock" }, + { 0, "lf em 4x70 auth" }, + { 0, "lf em 4x70 writepin" }, + { 0, "lf em 4x70 writekey" }, + { 1, "lf fdxb help" }, + { 1, "lf fdxb demod" }, + { 0, "lf fdxb reader" }, + { 0, "lf fdxb clone" }, + { 0, "lf fdxb sim" }, + { 1, "lf gallagher help" }, + { 1, "lf gallagher demod" }, + { 0, "lf gallagher reader" }, + { 0, "lf gallagher clone" }, + { 0, "lf gallagher sim" }, + { 1, "lf gproxii help" }, + { 1, "lf gproxii demod" }, + { 0, "lf gproxii reader" }, + { 0, "lf gproxii clone" }, + { 0, "lf gproxii sim" }, + { 1, "lf hid help" }, + { 1, "lf hid demod" }, + { 0, "lf hid reader" }, + { 0, "lf hid clone" }, + { 0, "lf hid sim" }, + { 0, "lf hid brute" }, + { 0, "lf hid watch" }, + { 1, "lf hitag help" }, + { 1, "lf hitag list" }, + { 0, "lf hitag info" }, + { 0, "lf hitag dump" }, + { 0, "lf hitag read" }, + { 0, "lf hitag wrbl" }, + { 0, "lf hitag sniff" }, + { 0, "lf hitag cc" }, + { 0, "lf hitag ta" }, + { 0, "lf hitag eload" }, + { 0, "lf hitag sim" }, + { 1, "lf idteck help" }, + { 1, "lf idteck demod" }, + { 0, "lf idteck reader" }, + { 0, "lf idteck clone" }, + { 0, "lf idteck sim" }, + { 1, "lf indala help" }, + { 0, "lf indala brute" }, + { 1, "lf indala demod" }, + { 1, "lf indala altdemod" }, + { 0, "lf indala reader" }, + { 0, "lf indala clone" }, + { 0, "lf indala sim" }, + { 1, "lf io help" }, + { 1, "lf io demod" }, + { 0, "lf io reader" }, + { 0, "lf io clone" }, + { 0, "lf io sim" }, + { 0, "lf io watch" }, + { 1, "lf jablotron help" }, + { 1, "lf jablotron demod" }, + { 0, "lf jablotron reader" }, + { 0, "lf jablotron clone" }, + { 0, "lf jablotron sim" }, + { 1, "lf keri help" }, + { 1, "lf keri demod" }, + { 0, "lf keri reader" }, + { 0, "lf keri clone" }, + { 0, "lf keri sim" }, + { 1, "lf motorola help" }, + { 1, "lf motorola demod" }, + { 0, "lf motorola reader" }, + { 0, "lf motorola clone" }, + { 0, "lf motorola sim" }, + { 1, "lf nedap help" }, + { 1, "lf nedap demod" }, + { 0, "lf nedap reader" }, + { 0, "lf nedap clone" }, + { 0, "lf nedap sim" }, + { 1, "lf nexwatch help" }, + { 1, "lf nexwatch demod" }, + { 0, "lf nexwatch reader" }, + { 0, "lf nexwatch clone" }, + { 0, "lf nexwatch sim" }, + { 1, "lf noralsy help" }, + { 1, "lf noralsy demod" }, + { 0, "lf noralsy reader" }, + { 0, "lf noralsy clone" }, + { 0, "lf noralsy sim" }, + { 1, "lf pac help" }, + { 1, "lf pac demod" }, + { 0, "lf pac reader" }, + { 0, "lf pac clone" }, + { 0, "lf pac sim" }, + { 1, "lf paradox help" }, + { 1, "lf paradox demod" }, + { 0, "lf paradox reader" }, + { 0, "lf paradox clone" }, + { 0, "lf paradox sim" }, + { 1, "lf pcf7931 help" }, + { 0, "lf pcf7931 reader" }, + { 0, "lf pcf7931 write" }, + { 1, "lf pcf7931 config" }, + { 1, "lf presco help" }, + { 1, "lf presco demod" }, + { 0, "lf presco reader" }, + { 0, "lf presco clone" }, + { 0, "lf presco sim" }, + { 1, "lf pyramid help" }, + { 1, "lf pyramid demod" }, + { 0, "lf pyramid reader" }, + { 0, "lf pyramid clone" }, + { 0, "lf pyramid sim" }, + { 1, "lf securakey help" }, + { 1, "lf securakey demod" }, + { 0, "lf securakey reader" }, + { 0, "lf securakey clone" }, + { 0, "lf securakey sim" }, + { 1, "lf ti help" }, + { 1, "lf ti demod" }, + { 0, "lf ti reader" }, + { 0, "lf ti write" }, + { 1, "lf t55xx help" }, + { 0, "lf t55xx clonehelp" }, + { 1, "lf t55xx config" }, + { 0, "lf t55xx dangerraw" }, + { 1, "lf t55xx detect" }, + { 0, "lf t55xx deviceconfig" }, + { 0, "lf t55xx dump" }, + { 1, "lf t55xx info" }, + { 0, "lf t55xx p1detect" }, + { 0, "lf t55xx read" }, + { 0, "lf t55xx resetread" }, + { 0, "lf t55xx restore" }, + { 1, "lf t55xx trace" }, + { 0, "lf t55xx wakeup" }, + { 0, "lf t55xx write" }, + { 0, "lf t55xx bruteforce" }, + { 0, "lf t55xx chk" }, + { 0, "lf t55xx protect" }, + { 0, "lf t55xx recoverpw" }, + { 1, "lf t55xx sniff" }, + { 0, "lf t55xx special" }, + { 0, "lf t55xx wipe" }, + { 1, "lf viking help" }, + { 1, "lf viking demod" }, + { 0, "lf viking reader" }, + { 0, "lf viking clone" }, + { 0, "lf viking sim" }, + { 1, "lf visa2000 help" }, + { 1, "lf visa2000 demod" }, + { 0, "lf visa2000 reader" }, + { 0, "lf visa2000 clone" }, + { 0, "lf visa2000 sim" }, + { 1, "mem help" }, + { 0, "mem baudrate" }, + { 0, "mem dump" }, + { 0, "mem info" }, + { 0, "mem load" }, + { 0, "mem wipe" }, + { 1, "mem spiffs help" }, + { 0, "mem spiffs copy" }, + { 0, "mem spiffs check" }, + { 0, "mem spiffs dump" }, + { 0, "mem spiffs info" }, + { 0, "mem spiffs mount" }, + { 0, "mem spiffs remove" }, + { 0, "mem spiffs rename" }, + { 0, "mem spiffs test" }, + { 0, "mem spiffs tree" }, + { 0, "mem spiffs unmount" }, + { 0, "mem spiffs upload" }, + { 0, "mem spiffs view" }, + { 0, "mem spiffs wipe" }, + { 1, "nfc help" }, + { 1, "nfc decode" }, + { 0, "nfc type1 read" }, + { 1, "nfc type1 help" }, + { 0, "nfc type2 read" }, + { 1, "nfc type2 help" }, + { 0, "nfc type4a format" }, + { 0, "nfc type4a read" }, + { 0, "nfc type4a write" }, + { 0, "nfc type4a st25taread" }, + { 1, "nfc type4a help" }, + { 0, "nfc type4b read" }, + { 1, "nfc type4b help" }, + { 0, "nfc mf cformat" }, + { 0, "nfc mf cread" }, + { 0, "nfc mf cwrite" }, + { 0, "nfc mf pread" }, + { 1, "nfc mf help" }, + { 0, "nfc barcode read" }, + { 0, "nfc barcode sim" }, + { 1, "nfc barcode help" }, + { 1, "piv help" }, + { 0, "piv select" }, + { 0, "piv getdata" }, + { 0, "piv authsign" }, + { 0, "piv scan" }, + { 1, "piv list" }, + { 1, "smart help" }, + { 1, "smart list" }, + { 0, "smart info" }, + { 0, "smart reader" }, + { 0, "smart raw" }, + { 1, "smart upgrade" }, + { 0, "smart setclock" }, + { 0, "smart brute" }, + { 1, "script help" }, + { 1, "script list" }, + { 1, "script run" }, + { 1, "trace help" }, + { 1, "trace extract" }, + { 1, "trace list" }, + { 1, "trace load" }, + { 1, "trace save" }, + { 1, "usart help" }, + { 0, "usart btpin" }, + { 0, "usart btfactory" }, + { 0, "usart tx" }, + { 0, "usart rx" }, + { 0, "usart txrx" }, + { 0, "usart txhex" }, + { 0, "usart rxhex" }, + { 0, "usart config" }, + { 1, "wiegand help" }, + { 1, "wiegand list" }, + { 1, "wiegand encode" }, + { 1, "wiegand decode" }, + {0, NULL} +}; + +#ifdef __cplusplus +} +#endif + +#endif//----------------------------------------------------------------------------- +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. +//----------------------------------------------------------------------------- +// readline auto complete utilities +//----------------------------------------------------------------------------- + +#ifndef PM3LINE_VOCABULORY_H__ +#define PM3LINE_VOCABULORY_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef struct vocabulory_s { + bool offline; + const char *name; +} vocabulory_t; + +const static vocabulory_t vocabulory[] = { + { 1, "help" }, + { 0, "auto" }, + { 1, "clear" }, + { 1, "hints" }, + { 1, "msleep" }, + { 1, "rem" }, + { 1, "quit" }, + { 1, "exit" }, + { 1, "prefs help" }, + { 1, "prefs show" }, + { 1, "prefs get barmode" }, + { 1, "prefs get clientdebug" }, + { 1, "prefs get clientdelay" }, + { 1, "prefs get color" }, + { 1, "prefs get savepaths" }, + { 1, "prefs get emoji" }, + { 1, "prefs get hints" }, + { 1, "prefs get output" }, + { 1, "prefs get plotsliders" }, + { 1, "prefs set help" }, + { 1, "prefs set barmode" }, + { 1, "prefs set clientdebug" }, + { 1, "prefs set clientdelay" }, + { 1, "prefs set color" }, + { 1, "prefs set emoji" }, + { 1, "prefs set hints" }, + { 1, "prefs set savepaths" }, + { 1, "prefs set output" }, + { 1, "prefs set plotsliders" }, + { 1, "analyse help" }, + { 1, "analyse lcr" }, + { 1, "analyse crc" }, + { 1, "analyse chksum" }, + { 1, "analyse dates" }, + { 1, "analyse lfsr" }, + { 1, "analyse a" }, + { 1, "analyse nuid" }, + { 1, "analyse demodbuff" }, + { 1, "analyse freq" }, + { 1, "analyse foo" }, + { 1, "analyse units" }, + { 1, "data help" }, + { 1, "data biphaserawdecode" }, + { 1, "data detectclock" }, + { 1, "data fsktonrz" }, + { 1, "data manrawdecode" }, + { 1, "data modulation" }, + { 1, "data rawdemod" }, + { 1, "data askedgedetect" }, + { 1, "data autocorr" }, + { 1, "data dirthreshold" }, + { 1, "data decimate" }, + { 1, "data envelope" }, + { 1, "data undecimate" }, + { 1, "data hide" }, + { 1, "data hpf" }, + { 1, "data iir" }, + { 1, "data grid" }, + { 1, "data ltrim" }, + { 1, "data mtrim" }, + { 1, "data norm" }, + { 1, "data plot" }, + { 1, "data cthreshold" }, + { 1, "data rtrim" }, + { 1, "data setgraphmarkers" }, + { 1, "data shiftgraphzero" }, + { 1, "data timescale" }, + { 1, "data zerocrossings" }, + { 1, "data convertbitstream" }, + { 1, "data getbitstream" }, + { 1, "data asn1" }, + { 1, "data atr" }, + { 1, "data bin2hex" }, + { 0, "data bitsamples" }, + { 1, "data clear" }, + { 1, "data diff" }, + { 0, "data hexsamples" }, + { 1, "data hex2bin" }, + { 1, "data load" }, + { 1, "data num" }, + { 1, "data print" }, + { 0, "data samples" }, + { 1, "data save" }, + { 1, "data setdebugmode" }, + { 0, "data tune" }, + { 1, "emv help" }, + { 1, "emv list" }, + { 1, "emv test" }, + { 0, "emv challenge" }, + { 0, "emv exec" }, + { 0, "emv genac" }, + { 0, "emv gpo" }, + { 0, "emv intauth" }, + { 0, "emv pse" }, + { 0, "emv reader" }, + { 0, "emv readrec" }, + { 0, "emv roca" }, + { 0, "emv scan" }, + { 0, "emv search" }, + { 0, "emv select" }, + { 1, "hf help" }, + { 1, "hf list" }, + { 0, "hf plot" }, + { 0, "hf tune" }, + { 1, "hf search" }, + { 0, "hf sniff" }, + { 1, "hf 14a help" }, + { 1, "hf 14a list" }, + { 0, "hf 14a antifuzz" }, + { 0, "hf 14a config" }, + { 0, "hf 14a cuids" }, + { 0, "hf 14a info" }, + { 0, "hf 14a sim" }, + { 0, "hf 14a sniff" }, + { 0, "hf 14a raw" }, + { 0, "hf 14a reader" }, + { 0, "hf 14a apdu" }, + { 0, "hf 14a apdufind" }, + { 0, "hf 14a chaining" }, + { 0, "hf 14a ndefformat" }, + { 0, "hf 14a ndefread" }, + { 0, "hf 14a ndefwrite" }, + { 1, "hf 14b help" }, + { 0, "hf 14b apdu" }, + { 0, "hf 14b dump" }, + { 0, "hf 14b info" }, + { 1, "hf 14b list" }, + { 0, "hf 14b ndefread" }, + { 0, "hf 14b raw" }, + { 0, "hf 14b reader" }, + { 0, "hf 14b sim" }, + { 0, "hf 14b sniff" }, + { 0, "hf 14b rdbl" }, + { 0, "hf 14b sriwrite" }, + { 1, "hf 14b view" }, + { 1, "hf 15 help" }, + { 1, "hf 15 list" }, + { 1, "hf 15 demod" }, + { 0, "hf 15 dump" }, + { 0, "hf 15 info" }, + { 0, "hf 15 sniff" }, + { 0, "hf 15 raw" }, + { 0, "hf 15 rdbl" }, + { 0, "hf 15 rdmulti" }, + { 0, "hf 15 reader" }, + { 0, "hf 15 restore" }, + { 0, "hf 15 samples" }, + { 1, "hf 15 view" }, + { 0, "hf 15 wrbl" }, + { 0, "hf 15 sim" }, + { 0, "hf 15 eload" }, + { 0, "hf 15 esave" }, + { 0, "hf 15 eview" }, + { 0, "hf 15 slixwritepwd" }, + { 0, "hf 15 slixeasdisable" }, + { 0, "hf 15 slixeasenable" }, + { 0, "hf 15 slixprivacydisable" }, + { 0, "hf 15 slixprivacyenable" }, + { 0, "hf 15 passprotectafi" }, + { 0, "hf 15 passprotecteas" }, + { 0, "hf 15 findafi" }, + { 0, "hf 15 writeafi" }, + { 0, "hf 15 writedsfid" }, + { 0, "hf 15 csetuid" }, + { 1, "hf cipurse help" }, + { 0, "hf cipurse info" }, + { 0, "hf cipurse select" }, + { 0, "hf cipurse auth" }, + { 0, "hf cipurse read" }, + { 0, "hf cipurse write" }, + { 0, "hf cipurse aread" }, + { 0, "hf cipurse awrite" }, + { 0, "hf cipurse formatall" }, + { 0, "hf cipurse create" }, + { 0, "hf cipurse delete" }, + { 0, "hf cipurse updkey" }, + { 0, "hf cipurse updakey" }, + { 0, "hf cipurse default" }, + { 1, "hf cipurse test" }, + { 1, "hf epa help" }, + { 0, "hf epa cnonces" }, + { 0, "hf epa replay" }, + { 0, "hf epa sim" }, + { 1, "hf emrtd help" }, + { 0, "hf emrtd dump" }, + { 1, "hf emrtd info" }, + { 1, "hf emrtd list" }, + { 1, "hf felica help" }, + { 1, "hf felica list" }, + { 0, "hf felica reader" }, + { 0, "hf felica info" }, + { 0, "hf felica sniff" }, + { 0, "hf felica raw" }, + { 0, "hf felica rdbl" }, + { 0, "hf felica wrbl" }, + { 0, "hf felica rqservice" }, + { 0, "hf felica rqresponse" }, + { 0, "hf felica scsvcode" }, + { 0, "hf felica rqsyscode" }, + { 0, "hf felica auth1" }, + { 0, "hf felica auth2" }, + { 0, "hf felica rqspecver" }, + { 0, "hf felica resetmode" }, + { 0, "hf felica litesim" }, + { 0, "hf felica litedump" }, + { 1, "hf fido help" }, + { 1, "hf fido list" }, + { 0, "hf fido info" }, + { 0, "hf fido reg" }, + { 0, "hf fido auth" }, + { 0, "hf fido make" }, + { 0, "hf fido assert" }, + { 1, "hf fudan help" }, + { 0, "hf fudan reader" }, + { 0, "hf fudan dump" }, + { 0, "hf fudan rdbl" }, + { 1, "hf fudan view" }, + { 0, "hf fudan wrbl" }, + { 1, "hf gallagher help" }, + { 0, "hf gallagher reader" }, + { 0, "hf gallagher clone" }, + { 0, "hf gallagher delete" }, + { 1, "hf gallagher diversifykey" }, + { 1, "hf gallagher decode" }, + { 1, "hf ksx6924 help" }, + { 0, "hf ksx6924 select" }, + { 0, "hf ksx6924 info" }, + { 0, "hf ksx6924 balance" }, + { 0, "hf ksx6924 init" }, + { 0, "hf ksx6924 prec" }, + { 1, "hf jooki help" }, + { 0, "hf jooki clone" }, + { 1, "hf jooki decode" }, + { 1, "hf jooki encode" }, + { 0, "hf jooki sim" }, + { 1, "hf iclass help" }, + { 1, "hf iclass list" }, + { 0, "hf iclass dump" }, + { 1, "hf iclass info" }, + { 0, "hf iclass rdbl" }, + { 0, "hf iclass reader" }, + { 0, "hf iclass restore" }, + { 0, "hf iclass sniff" }, + { 1, "hf iclass view" }, + { 0, "hf iclass wrbl" }, + { 0, "hf iclass chk" }, + { 1, "hf iclass loclass" }, + { 1, "hf iclass lookup" }, + { 0, "hf iclass sim" }, + { 0, "hf iclass eload" }, + { 0, "hf iclass esave" }, + { 0, "hf iclass eview" }, + { 1, "hf iclass configcard" }, + { 1, "hf iclass calcnewkey" }, + { 1, "hf iclass encode" }, + { 1, "hf iclass encrypt" }, + { 1, "hf iclass decrypt" }, + { 1, "hf iclass managekeys" }, + { 1, "hf iclass permutekey" }, + { 0, "hf iclass sam" }, + { 1, "hf legic help" }, + { 0, "hf legic dump" }, + { 0, "hf legic info" }, + { 1, "hf legic list" }, + { 0, "hf legic rdbl" }, + { 0, "hf legic reader" }, + { 0, "hf legic restore" }, + { 0, "hf legic wipe" }, + { 0, "hf legic wrbl" }, + { 0, "hf legic sim" }, + { 0, "hf legic eload" }, + { 0, "hf legic esave" }, + { 0, "hf legic eview" }, + { 0, "hf legic einfo" }, + { 1, "hf legic crc" }, + { 1, "hf legic view" }, + { 1, "hf lto help" }, + { 0, "hf lto dump" }, + { 0, "hf lto info" }, + { 1, "hf lto list" }, + { 0, "hf lto rdbl" }, + { 0, "hf lto reader" }, + { 0, "hf lto restore" }, + { 0, "hf lto wrbl" }, + { 1, "hf mf help" }, + { 1, "hf mf list" }, + { 0, "hf mf darkside" }, + { 0, "hf mf nested" }, + { 1, "hf mf hardnested" }, + { 0, "hf mf staticnested" }, + { 0, "hf mf autopwn" }, + { 0, "hf mf nack" }, + { 0, "hf mf chk" }, + { 0, "hf mf fchk" }, + { 1, "hf mf decrypt" }, + { 0, "hf mf supercard" }, + { 0, "hf mf auth4" }, + { 1, "hf mf acl" }, + { 0, "hf mf dump" }, + { 1, "hf mf mad" }, + { 0, "hf mf personalize" }, + { 0, "hf mf rdbl" }, + { 0, "hf mf rdsc" }, + { 0, "hf mf restore" }, + { 0, "hf mf setmod" }, + { 1, "hf mf value" }, + { 1, "hf mf view" }, + { 0, "hf mf wipe" }, + { 0, "hf mf wrbl" }, + { 0, "hf mf sim" }, + { 0, "hf mf ecfill" }, + { 0, "hf mf eclr" }, + { 0, "hf mf egetblk" }, + { 0, "hf mf egetsc" }, + { 0, "hf mf ekeyprn" }, + { 0, "hf mf eload" }, + { 0, "hf mf esave" }, + { 0, "hf mf esetblk" }, + { 0, "hf mf eview" }, + { 0, "hf mf cgetblk" }, + { 0, "hf mf cgetsc" }, + { 0, "hf mf cload" }, + { 0, "hf mf csave" }, + { 0, "hf mf csetblk" }, + { 0, "hf mf csetuid" }, + { 0, "hf mf cview" }, + { 0, "hf mf cwipe" }, + { 0, "hf mf gen3uid" }, + { 0, "hf mf gen3blk" }, + { 0, "hf mf gen3freeze" }, + { 0, "hf mf ggetblk" }, + { 0, "hf mf gload" }, + { 0, "hf mf gsave" }, + { 0, "hf mf gsetblk" }, + { 0, "hf mf gview" }, + { 0, "hf mf gdmcfg" }, + { 0, "hf mf gdmsetcfg" }, + { 0, "hf mf gdmsetblk" }, + { 0, "hf mf ndefformat" }, + { 0, "hf mf ndefread" }, + { 0, "hf mf ndefwrite" }, + { 1, "hf mfp help" }, + { 1, "hf mfp list" }, + { 0, "hf mfp auth" }, + { 0, "hf mfp chk" }, + { 0, "hf mfp dump" }, + { 0, "hf mfp info" }, + { 0, "hf mfp mad" }, + { 0, "hf mfp rdbl" }, + { 0, "hf mfp rdsc" }, + { 0, "hf mfp wrbl" }, + { 0, "hf mfp commitp" }, + { 0, "hf mfp initp" }, + { 0, "hf mfp wrp" }, + { 0, "hf mfp ndefformat" }, + { 0, "hf mfp ndefread" }, + { 0, "hf mfp ndefwrite" }, + { 1, "hf mfu help" }, + { 1, "hf mfu list" }, + { 1, "hf mfu keygen" }, + { 1, "hf mfu pwdgen" }, + { 0, "hf mfu otptear" }, + { 0, "hf mfu cauth" }, + { 0, "hf mfu dump" }, + { 0, "hf mfu info" }, + { 0, "hf mfu ndefread" }, + { 0, "hf mfu rdbl" }, + { 0, "hf mfu restore" }, + { 1, "hf mfu view" }, + { 0, "hf mfu wrbl" }, + { 0, "hf mfu tamper" }, + { 0, "hf mfu eload" }, + { 0, "hf mfu esave" }, + { 0, "hf mfu eview" }, + { 0, "hf mfu sim" }, + { 0, "hf mfu setpwd" }, + { 0, "hf mfu setuid" }, + { 1, "hf mfdes help" }, + { 0, "hf mfdes info" }, + { 0, "hf mfdes getuid" }, + { 0, "hf mfdes default" }, + { 0, "hf mfdes auth" }, + { 0, "hf mfdes chk" }, + { 0, "hf mfdes detect" }, + { 0, "hf mfdes freemem" }, + { 0, "hf mfdes setconfig" }, + { 0, "hf mfdes formatpicc" }, + { 1, "hf mfdes list" }, + { 0, "hf mfdes mad" }, + { 0, "hf mfdes lsapp" }, + { 0, "hf mfdes getaids" }, + { 0, "hf mfdes getappnames" }, + { 0, "hf mfdes bruteaid" }, + { 0, "hf mfdes createapp" }, + { 0, "hf mfdes deleteapp" }, + { 0, "hf mfdes selectapp" }, + { 0, "hf mfdes changekey" }, + { 0, "hf mfdes chkeysettings" }, + { 0, "hf mfdes getkeysettings" }, + { 0, "hf mfdes getkeyversions" }, + { 0, "hf mfdes getfileids" }, + { 0, "hf mfdes getfileisoids" }, + { 0, "hf mfdes lsfiles" }, + { 0, "hf mfdes dump" }, + { 0, "hf mfdes createfile" }, + { 0, "hf mfdes createvaluefile" }, + { 0, "hf mfdes createrecordfile" }, + { 0, "hf mfdes createmacfile" }, + { 0, "hf mfdes deletefile" }, + { 0, "hf mfdes getfilesettings" }, + { 0, "hf mfdes chfilesettings" }, + { 0, "hf mfdes read" }, + { 0, "hf mfdes write" }, + { 0, "hf mfdes value" }, + { 0, "hf mfdes clearrecfile" }, + { 1, "hf mfdes test" }, + { 1, "hf ntag424 help" }, + { 0, "hf ntag424 info" }, + { 0, "hf ntag424 sdm" }, + { 1, "hf ntag424 view" }, + { 1, "hf seos help" }, + { 0, "hf seos info" }, + { 1, "hf seos list" }, + { 1, "hf st25ta help" }, + { 0, "hf st25ta info" }, + { 1, "hf st25ta list" }, + { 1, "hf st25ta ndefread" }, + { 0, "hf st25ta protect" }, + { 0, "hf st25ta pwd" }, + { 0, "hf st25ta sim" }, + { 1, "hf tesla help" }, + { 0, "hf tesla info" }, + { 1, "hf tesla list" }, + { 1, "hf texkom help" }, + { 0, "hf texkom reader" }, + { 0, "hf texkom sim" }, + { 1, "hf thinfilm help" }, + { 0, "hf thinfilm info" }, + { 1, "hf thinfilm list" }, + { 0, "hf thinfilm sim" }, + { 1, "hf topaz help" }, + { 1, "hf topaz list" }, + { 0, "hf topaz dump" }, + { 0, "hf topaz info" }, + { 0, "hf topaz raw" }, + { 0, "hf topaz rdbl" }, + { 0, "hf topaz reader" }, + { 0, "hf topaz sim" }, + { 0, "hf topaz sniff" }, + { 1, "hf topaz view" }, + { 0, "hf topaz wrbl" }, + { 1, "hf vas help" }, + { 0, "hf vas reader" }, + { 1, "hf vas decrypt" }, + { 1, "hf waveshare help" }, + { 0, "hf waveshare loadbmp" }, + { 1, "hf xerox help" }, + { 0, "hf xerox info" }, + { 0, "hf xerox reader" }, + { 0, "hf xerox dump" }, + { 1, "hw help" }, + { 0, "hw break" }, + { 1, "hw connect" }, + { 0, "hw dbg" }, + { 0, "hw detectreader" }, + { 0, "hw fpgaoff" }, + { 0, "hw lcd" }, + { 0, "hw lcdreset" }, + { 0, "hw ping" }, + { 0, "hw readmem" }, + { 0, "hw reset" }, + { 0, "hw setlfdivisor" }, + { 0, "hw setmux" }, + { 0, "hw standalone" }, + { 0, "hw status" }, + { 0, "hw tearoff" }, + { 0, "hw tia" }, + { 1, "hw timeout" }, + { 0, "hw tune" }, + { 1, "hw version" }, + { 1, "lf help" }, + { 0, "lf config" }, + { 0, "lf cmdread" }, + { 0, "lf read" }, + { 1, "lf search" }, + { 0, "lf sim" }, + { 0, "lf simask" }, + { 0, "lf simfsk" }, + { 0, "lf simpsk" }, + { 0, "lf simbidir" }, + { 0, "lf sniff" }, + { 0, "lf tune" }, + { 1, "lf awid help" }, + { 1, "lf awid demod" }, + { 0, "lf awid reader" }, + { 0, "lf awid clone" }, + { 0, "lf awid sim" }, + { 0, "lf awid brute" }, + { 0, "lf awid watch" }, + { 1, "lf cotag help" }, + { 1, "lf cotag demod" }, + { 0, "lf cotag reader" }, + { 1, "lf destron help" }, + { 1, "lf destron demod" }, + { 0, "lf destron reader" }, + { 0, "lf destron clone" }, + { 0, "lf destron sim" }, + { 1, "lf em help" }, + { 1, "lf em 410x help" }, + { 1, "lf em 410x demod" }, + { 0, "lf em 410x reader" }, + { 0, "lf em 410x sim" }, + { 0, "lf em 410x brute" }, + { 0, "lf em 410x watch" }, + { 0, "lf em 410x spoof" }, + { 0, "lf em 410x clone" }, + { 1, "lf em 4x05 help" }, + { 0, "lf em 4x05 brute" }, + { 0, "lf em 4x05 chk" }, + { 1, "lf em 4x05 demod" }, + { 0, "lf em 4x05 dump" }, + { 0, "lf em 4x05 info" }, + { 0, "lf em 4x05 read" }, + { 1, "lf em 4x05 sniff" }, + { 0, "lf em 4x05 unlock" }, + { 0, "lf em 4x05 wipe" }, + { 0, "lf em 4x05 write" }, + { 1, "lf em 4x50 help" }, + { 0, "lf em 4x50 brute" }, + { 0, "lf em 4x50 chk" }, + { 0, "lf em 4x50 dump" }, + { 0, "lf em 4x50 info" }, + { 0, "lf em 4x50 login" }, + { 0, "lf em 4x50 rdbl" }, + { 0, "lf em 4x50 reader" }, + { 0, "lf em 4x50 restore" }, + { 0, "lf em 4x50 wrbl" }, + { 0, "lf em 4x50 wrpwd" }, + { 0, "lf em 4x50 wipe" }, + { 0, "lf em 4x50 eload" }, + { 0, "lf em 4x50 esave" }, + { 0, "lf em 4x50 eview" }, + { 0, "lf em 4x50 sim" }, + { 1, "lf em 4x70 help" }, + { 0, "lf em 4x70 brute" }, + { 0, "lf em 4x70 info" }, + { 0, "lf em 4x70 write" }, + { 0, "lf em 4x70 unlock" }, + { 0, "lf em 4x70 auth" }, + { 0, "lf em 4x70 writepin" }, + { 0, "lf em 4x70 writekey" }, + { 1, "lf fdxb help" }, + { 1, "lf fdxb demod" }, + { 0, "lf fdxb reader" }, + { 0, "lf fdxb clone" }, + { 0, "lf fdxb sim" }, + { 1, "lf gallagher help" }, + { 1, "lf gallagher demod" }, + { 0, "lf gallagher reader" }, + { 0, "lf gallagher clone" }, + { 0, "lf gallagher sim" }, + { 1, "lf gproxii help" }, + { 1, "lf gproxii demod" }, + { 0, "lf gproxii reader" }, + { 0, "lf gproxii clone" }, + { 0, "lf gproxii sim" }, + { 1, "lf hid help" }, + { 1, "lf hid demod" }, + { 0, "lf hid reader" }, + { 0, "lf hid clone" }, + { 0, "lf hid sim" }, + { 0, "lf hid brute" }, + { 0, "lf hid watch" }, + { 1, "lf hitag help" }, + { 1, "lf hitag list" }, + { 0, "lf hitag info" }, + { 0, "lf hitag dump" }, + { 0, "lf hitag read" }, + { 0, "lf hitag wrbl" }, + { 0, "lf hitag sniff" }, + { 0, "lf hitag cc" }, + { 0, "lf hitag ta" }, + { 0, "lf hitag eload" }, + { 0, "lf hitag sim" }, + { 1, "lf idteck help" }, + { 1, "lf idteck demod" }, + { 0, "lf idteck reader" }, + { 0, "lf idteck clone" }, + { 0, "lf idteck sim" }, + { 1, "lf indala help" }, + { 0, "lf indala brute" }, + { 1, "lf indala demod" }, + { 1, "lf indala altdemod" }, + { 0, "lf indala reader" }, + { 0, "lf indala clone" }, + { 0, "lf indala sim" }, + { 1, "lf io help" }, + { 1, "lf io demod" }, + { 0, "lf io reader" }, + { 0, "lf io clone" }, + { 0, "lf io sim" }, + { 0, "lf io watch" }, + { 1, "lf jablotron help" }, + { 1, "lf jablotron demod" }, + { 0, "lf jablotron reader" }, + { 0, "lf jablotron clone" }, + { 0, "lf jablotron sim" }, + { 1, "lf keri help" }, + { 1, "lf keri demod" }, + { 0, "lf keri reader" }, + { 0, "lf keri clone" }, + { 0, "lf keri sim" }, + { 1, "lf motorola help" }, + { 1, "lf motorola demod" }, + { 0, "lf motorola reader" }, + { 0, "lf motorola clone" }, + { 0, "lf motorola sim" }, + { 1, "lf nedap help" }, + { 1, "lf nedap demod" }, + { 0, "lf nedap reader" }, + { 0, "lf nedap clone" }, + { 0, "lf nedap sim" }, + { 1, "lf nexwatch help" }, + { 1, "lf nexwatch demod" }, + { 0, "lf nexwatch reader" }, + { 0, "lf nexwatch clone" }, + { 0, "lf nexwatch sim" }, + { 1, "lf noralsy help" }, + { 1, "lf noralsy demod" }, + { 0, "lf noralsy reader" }, + { 0, "lf noralsy clone" }, + { 0, "lf noralsy sim" }, + { 1, "lf pac help" }, + { 1, "lf pac demod" }, + { 0, "lf pac reader" }, + { 0, "lf pac clone" }, + { 0, "lf pac sim" }, + { 1, "lf paradox help" }, + { 1, "lf paradox demod" }, + { 0, "lf paradox reader" }, + { 0, "lf paradox clone" }, + { 0, "lf paradox sim" }, + { 1, "lf pcf7931 help" }, + { 0, "lf pcf7931 reader" }, + { 0, "lf pcf7931 write" }, + { 1, "lf pcf7931 config" }, + { 1, "lf presco help" }, + { 1, "lf presco demod" }, + { 0, "lf presco reader" }, + { 0, "lf presco clone" }, + { 0, "lf presco sim" }, + { 1, "lf pyramid help" }, + { 1, "lf pyramid demod" }, + { 0, "lf pyramid reader" }, + { 0, "lf pyramid clone" }, + { 0, "lf pyramid sim" }, + { 1, "lf securakey help" }, + { 1, "lf securakey demod" }, + { 0, "lf securakey reader" }, + { 0, "lf securakey clone" }, + { 0, "lf securakey sim" }, + { 1, "lf ti help" }, + { 1, "lf ti demod" }, + { 0, "lf ti reader" }, + { 0, "lf ti write" }, + { 1, "lf t55xx help" }, + { 0, "lf t55xx clonehelp" }, + { 1, "lf t55xx config" }, + { 0, "lf t55xx dangerraw" }, + { 1, "lf t55xx detect" }, + { 0, "lf t55xx deviceconfig" }, + { 0, "lf t55xx dump" }, + { 1, "lf t55xx info" }, + { 0, "lf t55xx p1detect" }, + { 0, "lf t55xx read" }, + { 0, "lf t55xx resetread" }, + { 0, "lf t55xx restore" }, + { 1, "lf t55xx trace" }, + { 0, "lf t55xx wakeup" }, + { 0, "lf t55xx write" }, + { 0, "lf t55xx bruteforce" }, + { 0, "lf t55xx chk" }, + { 0, "lf t55xx protect" }, + { 0, "lf t55xx recoverpw" }, + { 1, "lf t55xx sniff" }, + { 0, "lf t55xx special" }, + { 0, "lf t55xx wipe" }, + { 1, "lf viking help" }, + { 1, "lf viking demod" }, + { 0, "lf viking reader" }, + { 0, "lf viking clone" }, + { 0, "lf viking sim" }, + { 1, "lf visa2000 help" }, + { 1, "lf visa2000 demod" }, + { 0, "lf visa2000 reader" }, + { 0, "lf visa2000 clone" }, + { 0, "lf visa2000 sim" }, + { 1, "mem help" }, + { 0, "mem baudrate" }, + { 0, "mem dump" }, + { 0, "mem info" }, + { 0, "mem load" }, + { 0, "mem wipe" }, + { 1, "mem spiffs help" }, + { 0, "mem spiffs copy" }, + { 0, "mem spiffs check" }, + { 0, "mem spiffs dump" }, + { 0, "mem spiffs info" }, + { 0, "mem spiffs mount" }, + { 0, "mem spiffs remove" }, + { 0, "mem spiffs rename" }, + { 0, "mem spiffs test" }, + { 0, "mem spiffs tree" }, + { 0, "mem spiffs unmount" }, + { 0, "mem spiffs upload" }, + { 0, "mem spiffs view" }, + { 0, "mem spiffs wipe" }, + { 1, "nfc help" }, + { 1, "nfc decode" }, + { 0, "nfc type1 read" }, + { 1, "nfc type1 help" }, + { 0, "nfc type2 read" }, + { 1, "nfc type2 help" }, + { 0, "nfc type4a format" }, + { 0, "nfc type4a read" }, + { 0, "nfc type4a write" }, + { 0, "nfc type4a st25taread" }, + { 1, "nfc type4a help" }, + { 0, "nfc type4b read" }, + { 1, "nfc type4b help" }, + { 0, "nfc mf cformat" }, + { 0, "nfc mf cread" }, + { 0, "nfc mf cwrite" }, + { 0, "nfc mf pread" }, + { 1, "nfc mf help" }, + { 0, "nfc barcode read" }, + { 0, "nfc barcode sim" }, + { 1, "nfc barcode help" }, + { 1, "piv help" }, + { 0, "piv select" }, + { 0, "piv getdata" }, + { 0, "piv authsign" }, + { 0, "piv scan" }, + { 1, "piv list" }, + { 1, "smart help" }, + { 1, "smart list" }, + { 0, "smart info" }, + { 0, "smart reader" }, + { 0, "smart raw" }, + { 1, "smart upgrade" }, + { 0, "smart setclock" }, + { 0, "smart brute" }, + { 1, "script help" }, + { 1, "script list" }, + { 1, "script run" }, + { 1, "trace help" }, + { 1, "trace extract" }, + { 1, "trace list" }, + { 1, "trace load" }, + { 1, "trace save" }, + { 1, "usart help" }, + { 0, "usart btpin" }, + { 0, "usart btfactory" }, + { 0, "usart tx" }, + { 0, "usart rx" }, + { 0, "usart txrx" }, + { 0, "usart txhex" }, + { 0, "usart rxhex" }, + { 0, "usart config" }, + { 1, "wiegand help" }, + { 1, "wiegand list" }, + { 1, "wiegand encode" }, + { 1, "wiegand decode" }, + {0, NULL} +}; + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/client/src/pm3line_vocabulory.h b/client/src/pm3line_vocabulory.h deleted file mode 100644 index 40d2bcc29..000000000 --- a/client/src/pm3line_vocabulory.h +++ /dev/null @@ -1,814 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// See LICENSE.txt for the text of the license. -//----------------------------------------------------------------------------- -// readline auto complete utilities -//----------------------------------------------------------------------------- - -#ifndef PM3LINE_VOCABULORY_H__ -#define PM3LINE_VOCABULORY_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -typedef struct vocabulory_s { - bool offline; - const char *name; -} vocabulory_t; - -const static vocabulory_t vocabulory[] = { - { 1, "help" }, - { 0, "auto" }, - { 1, "clear" }, - { 1, "hints" }, - { 1, "msleep" }, - { 1, "rem" }, - { 1, "quit" }, - { 1, "exit" }, - { 1, "prefs help" }, - { 1, "prefs show" }, - { 1, "prefs get barmode" }, - { 1, "prefs get clientdebug" }, - { 1, "prefs get clientdelay" }, - { 1, "prefs get color" }, - { 1, "prefs get savepaths" }, - { 1, "prefs get emoji" }, - { 1, "prefs get hints" }, - { 1, "prefs get output" }, - { 1, "prefs get plotsliders" }, - { 1, "prefs set help" }, - { 1, "prefs set barmode" }, - { 1, "prefs set clientdebug" }, - { 1, "prefs set clientdelay" }, - { 1, "prefs set color" }, - { 1, "prefs set emoji" }, - { 1, "prefs set hints" }, - { 1, "prefs set savepaths" }, - { 1, "prefs set output" }, - { 1, "prefs set plotsliders" }, - { 1, "analyse help" }, - { 1, "analyse lcr" }, - { 1, "analyse crc" }, - { 1, "analyse chksum" }, - { 1, "analyse dates" }, - { 1, "analyse lfsr" }, - { 1, "analyse a" }, - { 1, "analyse nuid" }, - { 1, "analyse demodbuff" }, - { 1, "analyse freq" }, - { 1, "analyse foo" }, - { 1, "analyse units" }, - { 1, "data help" }, - { 1, "data biphaserawdecode" }, - { 1, "data detectclock" }, - { 1, "data fsktonrz" }, - { 1, "data manrawdecode" }, - { 1, "data modulation" }, - { 1, "data rawdemod" }, - { 1, "data askedgedetect" }, - { 1, "data autocorr" }, - { 1, "data dirthreshold" }, - { 1, "data decimate" }, - { 1, "data envelope" }, - { 1, "data undecimate" }, - { 1, "data hide" }, - { 1, "data hpf" }, - { 1, "data iir" }, - { 1, "data grid" }, - { 1, "data ltrim" }, - { 1, "data mtrim" }, - { 1, "data norm" }, - { 1, "data plot" }, - { 1, "data cthreshold" }, - { 1, "data rtrim" }, - { 1, "data setgraphmarkers" }, - { 1, "data shiftgraphzero" }, - { 1, "data timescale" }, - { 1, "data zerocrossings" }, - { 1, "data convertbitstream" }, - { 1, "data getbitstream" }, - { 1, "data asn1" }, - { 1, "data atr" }, - { 1, "data bin2hex" }, - { 0, "data bitsamples" }, - { 1, "data clear" }, - { 1, "data diff" }, - { 0, "data hexsamples" }, - { 1, "data hex2bin" }, - { 1, "data load" }, - { 1, "data num" }, - { 1, "data print" }, - { 0, "data samples" }, - { 1, "data save" }, - { 1, "data setdebugmode" }, - { 0, "data tune" }, - { 1, "emv help" }, - { 1, "emv list" }, - { 1, "emv test" }, - { 0, "emv challenge" }, - { 0, "emv exec" }, - { 0, "emv genac" }, - { 0, "emv gpo" }, - { 0, "emv intauth" }, - { 0, "emv pse" }, - { 0, "emv reader" }, - { 0, "emv readrec" }, - { 0, "emv roca" }, - { 0, "emv scan" }, - { 0, "emv search" }, - { 0, "emv select" }, - { 1, "hf help" }, - { 1, "hf list" }, - { 0, "hf plot" }, - { 0, "hf tune" }, - { 1, "hf search" }, - { 0, "hf sniff" }, - { 1, "hf 14a help" }, - { 1, "hf 14a list" }, - { 0, "hf 14a antifuzz" }, - { 0, "hf 14a config" }, - { 0, "hf 14a cuids" }, - { 0, "hf 14a info" }, - { 0, "hf 14a sim" }, - { 0, "hf 14a sniff" }, - { 0, "hf 14a raw" }, - { 0, "hf 14a reader" }, - { 0, "hf 14a apdu" }, - { 0, "hf 14a apdufind" }, - { 0, "hf 14a chaining" }, - { 0, "hf 14a ndefformat" }, - { 0, "hf 14a ndefread" }, - { 0, "hf 14a ndefwrite" }, - { 1, "hf 14b help" }, - { 0, "hf 14b apdu" }, - { 0, "hf 14b dump" }, - { 0, "hf 14b info" }, - { 1, "hf 14b list" }, - { 0, "hf 14b ndefread" }, - { 0, "hf 14b raw" }, - { 0, "hf 14b reader" }, - { 0, "hf 14b sim" }, - { 0, "hf 14b sniff" }, - { 0, "hf 14b rdbl" }, - { 0, "hf 14b sriwrite" }, - { 1, "hf 14b view" }, - { 1, "hf 15 help" }, - { 1, "hf 15 list" }, - { 1, "hf 15 demod" }, - { 0, "hf 15 dump" }, - { 0, "hf 15 info" }, - { 0, "hf 15 sniff" }, - { 0, "hf 15 raw" }, - { 0, "hf 15 rdbl" }, - { 0, "hf 15 rdmulti" }, - { 0, "hf 15 reader" }, - { 0, "hf 15 restore" }, - { 0, "hf 15 samples" }, - { 1, "hf 15 view" }, - { 0, "hf 15 wrbl" }, - { 0, "hf 15 sim" }, - { 0, "hf 15 eload" }, - { 0, "hf 15 esave" }, - { 0, "hf 15 eview" }, - { 0, "hf 15 slixwritepwd" }, - { 0, "hf 15 slixeasdisable" }, - { 0, "hf 15 slixeasenable" }, - { 0, "hf 15 slixprivacydisable" }, - { 0, "hf 15 slixprivacyenable" }, - { 0, "hf 15 passprotectafi" }, - { 0, "hf 15 passprotecteas" }, - { 0, "hf 15 findafi" }, - { 0, "hf 15 writeafi" }, - { 0, "hf 15 writedsfid" }, - { 0, "hf 15 csetuid" }, - { 1, "hf cipurse help" }, - { 0, "hf cipurse info" }, - { 0, "hf cipurse select" }, - { 0, "hf cipurse auth" }, - { 0, "hf cipurse read" }, - { 0, "hf cipurse write" }, - { 0, "hf cipurse aread" }, - { 0, "hf cipurse awrite" }, - { 0, "hf cipurse formatall" }, - { 0, "hf cipurse create" }, - { 0, "hf cipurse delete" }, - { 0, "hf cipurse updkey" }, - { 0, "hf cipurse updakey" }, - { 0, "hf cipurse default" }, - { 1, "hf cipurse test" }, - { 1, "hf epa help" }, - { 0, "hf epa cnonces" }, - { 0, "hf epa replay" }, - { 0, "hf epa sim" }, - { 1, "hf emrtd help" }, - { 0, "hf emrtd dump" }, - { 1, "hf emrtd info" }, - { 1, "hf emrtd list" }, - { 1, "hf felica help" }, - { 1, "hf felica list" }, - { 0, "hf felica reader" }, - { 0, "hf felica info" }, - { 0, "hf felica sniff" }, - { 0, "hf felica raw" }, - { 0, "hf felica rdbl" }, - { 0, "hf felica wrbl" }, - { 0, "hf felica rqservice" }, - { 0, "hf felica rqresponse" }, - { 0, "hf felica scsvcode" }, - { 0, "hf felica rqsyscode" }, - { 0, "hf felica auth1" }, - { 0, "hf felica auth2" }, - { 0, "hf felica rqspecver" }, - { 0, "hf felica resetmode" }, - { 0, "hf felica litesim" }, - { 0, "hf felica litedump" }, - { 1, "hf fido help" }, - { 1, "hf fido list" }, - { 0, "hf fido info" }, - { 0, "hf fido reg" }, - { 0, "hf fido auth" }, - { 0, "hf fido make" }, - { 0, "hf fido assert" }, - { 1, "hf fudan help" }, - { 0, "hf fudan reader" }, - { 0, "hf fudan dump" }, - { 0, "hf fudan rdbl" }, - { 1, "hf fudan view" }, - { 0, "hf fudan wrbl" }, - { 1, "hf gallagher help" }, - { 0, "hf gallagher reader" }, - { 0, "hf gallagher clone" }, - { 0, "hf gallagher delete" }, - { 1, "hf gallagher diversifykey" }, - { 1, "hf gallagher decode" }, - { 1, "hf ksx6924 help" }, - { 0, "hf ksx6924 select" }, - { 0, "hf ksx6924 info" }, - { 0, "hf ksx6924 balance" }, - { 0, "hf ksx6924 init" }, - { 0, "hf ksx6924 prec" }, - { 1, "hf jooki help" }, - { 0, "hf jooki clone" }, - { 1, "hf jooki decode" }, - { 1, "hf jooki encode" }, - { 0, "hf jooki sim" }, - { 1, "hf iclass help" }, - { 1, "hf iclass list" }, - { 0, "hf iclass dump" }, - { 1, "hf iclass info" }, - { 0, "hf iclass rdbl" }, - { 0, "hf iclass reader" }, - { 0, "hf iclass restore" }, - { 0, "hf iclass sniff" }, - { 1, "hf iclass view" }, - { 0, "hf iclass wrbl" }, - { 0, "hf iclass chk" }, - { 1, "hf iclass loclass" }, - { 1, "hf iclass lookup" }, - { 0, "hf iclass sim" }, - { 0, "hf iclass eload" }, - { 0, "hf iclass esave" }, - { 0, "hf iclass eview" }, - { 1, "hf iclass configcard" }, - { 1, "hf iclass calcnewkey" }, - { 1, "hf iclass encode" }, - { 1, "hf iclass encrypt" }, - { 1, "hf iclass decrypt" }, - { 1, "hf iclass managekeys" }, - { 1, "hf iclass permutekey" }, - { 0, "hf iclass sam" }, - { 1, "hf legic help" }, - { 0, "hf legic dump" }, - { 0, "hf legic info" }, - { 1, "hf legic list" }, - { 0, "hf legic rdbl" }, - { 0, "hf legic reader" }, - { 0, "hf legic restore" }, - { 0, "hf legic wipe" }, - { 0, "hf legic wrbl" }, - { 0, "hf legic sim" }, - { 0, "hf legic eload" }, - { 0, "hf legic esave" }, - { 0, "hf legic eview" }, - { 0, "hf legic einfo" }, - { 1, "hf legic crc" }, - { 1, "hf legic view" }, - { 1, "hf lto help" }, - { 0, "hf lto dump" }, - { 0, "hf lto info" }, - { 1, "hf lto list" }, - { 0, "hf lto rdbl" }, - { 0, "hf lto reader" }, - { 0, "hf lto restore" }, - { 0, "hf lto wrbl" }, - { 1, "hf mf help" }, - { 1, "hf mf list" }, - { 0, "hf mf darkside" }, - { 0, "hf mf nested" }, - { 1, "hf mf hardnested" }, - { 0, "hf mf staticnested" }, - { 0, "hf mf autopwn" }, - { 0, "hf mf nack" }, - { 0, "hf mf chk" }, - { 0, "hf mf fchk" }, - { 1, "hf mf decrypt" }, - { 0, "hf mf supercard" }, - { 0, "hf mf auth4" }, - { 1, "hf mf acl" }, - { 0, "hf mf dump" }, - { 1, "hf mf mad" }, - { 0, "hf mf personalize" }, - { 0, "hf mf rdbl" }, - { 0, "hf mf rdsc" }, - { 0, "hf mf restore" }, - { 0, "hf mf setmod" }, - { 1, "hf mf value" }, - { 1, "hf mf view" }, - { 0, "hf mf wipe" }, - { 0, "hf mf wrbl" }, - { 0, "hf mf sim" }, - { 0, "hf mf ecfill" }, - { 0, "hf mf eclr" }, - { 0, "hf mf egetblk" }, - { 0, "hf mf egetsc" }, - { 0, "hf mf ekeyprn" }, - { 0, "hf mf eload" }, - { 0, "hf mf esave" }, - { 0, "hf mf esetblk" }, - { 0, "hf mf eview" }, - { 0, "hf mf cgetblk" }, - { 0, "hf mf cgetsc" }, - { 0, "hf mf cload" }, - { 0, "hf mf csave" }, - { 0, "hf mf csetblk" }, - { 0, "hf mf csetuid" }, - { 0, "hf mf cview" }, - { 0, "hf mf cwipe" }, - { 0, "hf mf gen3uid" }, - { 0, "hf mf gen3blk" }, - { 0, "hf mf gen3freeze" }, - { 0, "hf mf ggetblk" }, - { 0, "hf mf gload" }, - { 0, "hf mf gsave" }, - { 0, "hf mf gsetblk" }, - { 0, "hf mf gview" }, - { 0, "hf mf gdmcfg" }, - { 0, "hf mf gdmsetcfg" }, - { 0, "hf mf gdmsetblk" }, - { 0, "hf mf ndefformat" }, - { 0, "hf mf ndefread" }, - { 0, "hf mf ndefwrite" }, - { 1, "hf mfp help" }, - { 1, "hf mfp list" }, - { 0, "hf mfp auth" }, - { 0, "hf mfp chk" }, - { 0, "hf mfp dump" }, - { 0, "hf mfp info" }, - { 0, "hf mfp mad" }, - { 0, "hf mfp rdbl" }, - { 0, "hf mfp rdsc" }, - { 0, "hf mfp wrbl" }, - { 0, "hf mfp commitp" }, - { 0, "hf mfp initp" }, - { 0, "hf mfp wrp" }, - { 0, "hf mfp ndefformat" }, - { 0, "hf mfp ndefread" }, - { 0, "hf mfp ndefwrite" }, - { 1, "hf mfu help" }, - { 1, "hf mfu list" }, - { 1, "hf mfu keygen" }, - { 1, "hf mfu pwdgen" }, - { 0, "hf mfu otptear" }, - { 0, "hf mfu cauth" }, - { 0, "hf mfu dump" }, - { 0, "hf mfu info" }, - { 0, "hf mfu ndefread" }, - { 0, "hf mfu rdbl" }, - { 0, "hf mfu restore" }, - { 1, "hf mfu view" }, - { 0, "hf mfu wrbl" }, - { 0, "hf mfu tamper" }, - { 0, "hf mfu eload" }, - { 0, "hf mfu esave" }, - { 0, "hf mfu eview" }, - { 0, "hf mfu sim" }, - { 0, "hf mfu setpwd" }, - { 0, "hf mfu setuid" }, - { 1, "hf mfdes help" }, - { 0, "hf mfdes info" }, - { 0, "hf mfdes getuid" }, - { 0, "hf mfdes default" }, - { 0, "hf mfdes auth" }, - { 0, "hf mfdes chk" }, - { 0, "hf mfdes detect" }, - { 0, "hf mfdes freemem" }, - { 0, "hf mfdes setconfig" }, - { 0, "hf mfdes formatpicc" }, - { 1, "hf mfdes list" }, - { 0, "hf mfdes mad" }, - { 0, "hf mfdes lsapp" }, - { 0, "hf mfdes getaids" }, - { 0, "hf mfdes getappnames" }, - { 0, "hf mfdes bruteaid" }, - { 0, "hf mfdes createapp" }, - { 0, "hf mfdes deleteapp" }, - { 0, "hf mfdes selectapp" }, - { 0, "hf mfdes changekey" }, - { 0, "hf mfdes chkeysettings" }, - { 0, "hf mfdes getkeysettings" }, - { 0, "hf mfdes getkeyversions" }, - { 0, "hf mfdes getfileids" }, - { 0, "hf mfdes getfileisoids" }, - { 0, "hf mfdes lsfiles" }, - { 0, "hf mfdes dump" }, - { 0, "hf mfdes createfile" }, - { 0, "hf mfdes createvaluefile" }, - { 0, "hf mfdes createrecordfile" }, - { 0, "hf mfdes createmacfile" }, - { 0, "hf mfdes deletefile" }, - { 0, "hf mfdes getfilesettings" }, - { 0, "hf mfdes chfilesettings" }, - { 0, "hf mfdes read" }, - { 0, "hf mfdes write" }, - { 0, "hf mfdes value" }, - { 0, "hf mfdes clearrecfile" }, - { 1, "hf mfdes test" }, - { 1, "hf ntag424 help" }, - { 0, "hf ntag424 info" }, - { 0, "hf ntag424 sdm" }, - { 1, "hf ntag424 view" }, - { 1, "hf seos help" }, - { 0, "hf seos info" }, - { 1, "hf seos list" }, - { 1, "hf st25ta help" }, - { 0, "hf st25ta info" }, - { 1, "hf st25ta list" }, - { 1, "hf st25ta ndefread" }, - { 0, "hf st25ta protect" }, - { 0, "hf st25ta pwd" }, - { 0, "hf st25ta sim" }, - { 1, "hf tesla help" }, - { 0, "hf tesla info" }, - { 1, "hf tesla list" }, - { 1, "hf texkom help" }, - { 0, "hf texkom reader" }, - { 0, "hf texkom sim" }, - { 1, "hf thinfilm help" }, - { 0, "hf thinfilm info" }, - { 1, "hf thinfilm list" }, - { 0, "hf thinfilm sim" }, - { 1, "hf topaz help" }, - { 1, "hf topaz list" }, - { 0, "hf topaz dump" }, - { 0, "hf topaz info" }, - { 0, "hf topaz raw" }, - { 0, "hf topaz rdbl" }, - { 0, "hf topaz reader" }, - { 0, "hf topaz sim" }, - { 0, "hf topaz sniff" }, - { 1, "hf topaz view" }, - { 0, "hf topaz wrbl" }, - { 1, "hf vas help" }, - { 0, "hf vas reader" }, - { 1, "hf vas decrypt" }, - { 1, "hf waveshare help" }, - { 0, "hf waveshare loadbmp" }, - { 1, "hf xerox help" }, - { 0, "hf xerox info" }, - { 0, "hf xerox reader" }, - { 0, "hf xerox dump" }, - { 1, "hw help" }, - { 0, "hw break" }, - { 1, "hw connect" }, - { 0, "hw dbg" }, - { 0, "hw detectreader" }, - { 0, "hw fpgaoff" }, - { 0, "hw lcd" }, - { 0, "hw lcdreset" }, - { 0, "hw ping" }, - { 0, "hw readmem" }, - { 0, "hw reset" }, - { 0, "hw setlfdivisor" }, - { 0, "hw setmux" }, - { 0, "hw standalone" }, - { 0, "hw status" }, - { 0, "hw tearoff" }, - { 0, "hw tia" }, - { 1, "hw timeout" }, - { 0, "hw tune" }, - { 1, "hw version" }, - { 1, "lf help" }, - { 0, "lf config" }, - { 0, "lf cmdread" }, - { 0, "lf read" }, - { 1, "lf search" }, - { 0, "lf sim" }, - { 0, "lf simask" }, - { 0, "lf simfsk" }, - { 0, "lf simpsk" }, - { 0, "lf simbidir" }, - { 0, "lf sniff" }, - { 0, "lf tune" }, - { 1, "lf awid help" }, - { 1, "lf awid demod" }, - { 0, "lf awid reader" }, - { 0, "lf awid clone" }, - { 0, "lf awid sim" }, - { 0, "lf awid brute" }, - { 0, "lf awid watch" }, - { 1, "lf cotag help" }, - { 1, "lf cotag demod" }, - { 0, "lf cotag reader" }, - { 1, "lf destron help" }, - { 1, "lf destron demod" }, - { 0, "lf destron reader" }, - { 0, "lf destron clone" }, - { 0, "lf destron sim" }, - { 1, "lf em help" }, - { 1, "lf em 410x help" }, - { 1, "lf em 410x demod" }, - { 0, "lf em 410x reader" }, - { 0, "lf em 410x sim" }, - { 0, "lf em 410x brute" }, - { 0, "lf em 410x watch" }, - { 0, "lf em 410x spoof" }, - { 0, "lf em 410x clone" }, - { 1, "lf em 4x05 help" }, - { 0, "lf em 4x05 brute" }, - { 0, "lf em 4x05 chk" }, - { 1, "lf em 4x05 demod" }, - { 0, "lf em 4x05 dump" }, - { 0, "lf em 4x05 info" }, - { 0, "lf em 4x05 read" }, - { 1, "lf em 4x05 sniff" }, - { 0, "lf em 4x05 unlock" }, - { 0, "lf em 4x05 wipe" }, - { 0, "lf em 4x05 write" }, - { 1, "lf em 4x50 help" }, - { 0, "lf em 4x50 brute" }, - { 0, "lf em 4x50 chk" }, - { 0, "lf em 4x50 dump" }, - { 0, "lf em 4x50 info" }, - { 0, "lf em 4x50 login" }, - { 0, "lf em 4x50 rdbl" }, - { 0, "lf em 4x50 reader" }, - { 0, "lf em 4x50 restore" }, - { 0, "lf em 4x50 wrbl" }, - { 0, "lf em 4x50 wrpwd" }, - { 0, "lf em 4x50 wipe" }, - { 0, "lf em 4x50 eload" }, - { 0, "lf em 4x50 esave" }, - { 0, "lf em 4x50 eview" }, - { 0, "lf em 4x50 sim" }, - { 1, "lf em 4x70 help" }, - { 0, "lf em 4x70 brute" }, - { 0, "lf em 4x70 info" }, - { 0, "lf em 4x70 write" }, - { 0, "lf em 4x70 unlock" }, - { 0, "lf em 4x70 auth" }, - { 0, "lf em 4x70 writepin" }, - { 0, "lf em 4x70 writekey" }, - { 1, "lf fdxb help" }, - { 1, "lf fdxb demod" }, - { 0, "lf fdxb reader" }, - { 0, "lf fdxb clone" }, - { 0, "lf fdxb sim" }, - { 1, "lf gallagher help" }, - { 1, "lf gallagher demod" }, - { 0, "lf gallagher reader" }, - { 0, "lf gallagher clone" }, - { 0, "lf gallagher sim" }, - { 1, "lf gproxii help" }, - { 1, "lf gproxii demod" }, - { 0, "lf gproxii reader" }, - { 0, "lf gproxii clone" }, - { 0, "lf gproxii sim" }, - { 1, "lf hid help" }, - { 1, "lf hid demod" }, - { 0, "lf hid reader" }, - { 0, "lf hid clone" }, - { 0, "lf hid sim" }, - { 0, "lf hid brute" }, - { 0, "lf hid watch" }, - { 1, "lf hitag help" }, - { 1, "lf hitag list" }, - { 0, "lf hitag info" }, - { 0, "lf hitag dump" }, - { 0, "lf hitag read" }, - { 0, "lf hitag wrbl" }, - { 0, "lf hitag sniff" }, - { 0, "lf hitag cc" }, - { 0, "lf hitag ta" }, - { 0, "lf hitag eload" }, - { 0, "lf hitag sim" }, - { 1, "lf idteck help" }, - { 1, "lf idteck demod" }, - { 0, "lf idteck reader" }, - { 0, "lf idteck clone" }, - { 0, "lf idteck sim" }, - { 1, "lf indala help" }, - { 0, "lf indala brute" }, - { 1, "lf indala demod" }, - { 1, "lf indala altdemod" }, - { 0, "lf indala reader" }, - { 0, "lf indala clone" }, - { 0, "lf indala sim" }, - { 1, "lf io help" }, - { 1, "lf io demod" }, - { 0, "lf io reader" }, - { 0, "lf io clone" }, - { 0, "lf io sim" }, - { 0, "lf io watch" }, - { 1, "lf jablotron help" }, - { 1, "lf jablotron demod" }, - { 0, "lf jablotron reader" }, - { 0, "lf jablotron clone" }, - { 0, "lf jablotron sim" }, - { 1, "lf keri help" }, - { 1, "lf keri demod" }, - { 0, "lf keri reader" }, - { 0, "lf keri clone" }, - { 0, "lf keri sim" }, - { 1, "lf motorola help" }, - { 1, "lf motorola demod" }, - { 0, "lf motorola reader" }, - { 0, "lf motorola clone" }, - { 0, "lf motorola sim" }, - { 1, "lf nedap help" }, - { 1, "lf nedap demod" }, - { 0, "lf nedap reader" }, - { 0, "lf nedap clone" }, - { 0, "lf nedap sim" }, - { 1, "lf nexwatch help" }, - { 1, "lf nexwatch demod" }, - { 0, "lf nexwatch reader" }, - { 0, "lf nexwatch clone" }, - { 0, "lf nexwatch sim" }, - { 1, "lf noralsy help" }, - { 1, "lf noralsy demod" }, - { 0, "lf noralsy reader" }, - { 0, "lf noralsy clone" }, - { 0, "lf noralsy sim" }, - { 1, "lf pac help" }, - { 1, "lf pac demod" }, - { 0, "lf pac reader" }, - { 0, "lf pac clone" }, - { 0, "lf pac sim" }, - { 1, "lf paradox help" }, - { 1, "lf paradox demod" }, - { 0, "lf paradox reader" }, - { 0, "lf paradox clone" }, - { 0, "lf paradox sim" }, - { 1, "lf pcf7931 help" }, - { 0, "lf pcf7931 reader" }, - { 0, "lf pcf7931 write" }, - { 1, "lf pcf7931 config" }, - { 1, "lf presco help" }, - { 1, "lf presco demod" }, - { 0, "lf presco reader" }, - { 0, "lf presco clone" }, - { 0, "lf presco sim" }, - { 1, "lf pyramid help" }, - { 1, "lf pyramid demod" }, - { 0, "lf pyramid reader" }, - { 0, "lf pyramid clone" }, - { 0, "lf pyramid sim" }, - { 1, "lf securakey help" }, - { 1, "lf securakey demod" }, - { 0, "lf securakey reader" }, - { 0, "lf securakey clone" }, - { 0, "lf securakey sim" }, - { 1, "lf ti help" }, - { 1, "lf ti demod" }, - { 0, "lf ti reader" }, - { 0, "lf ti write" }, - { 1, "lf t55xx help" }, - { 0, "lf t55xx clonehelp" }, - { 1, "lf t55xx config" }, - { 0, "lf t55xx dangerraw" }, - { 1, "lf t55xx detect" }, - { 0, "lf t55xx deviceconfig" }, - { 0, "lf t55xx dump" }, - { 1, "lf t55xx info" }, - { 0, "lf t55xx p1detect" }, - { 0, "lf t55xx read" }, - { 0, "lf t55xx resetread" }, - { 0, "lf t55xx restore" }, - { 1, "lf t55xx trace" }, - { 0, "lf t55xx wakeup" }, - { 0, "lf t55xx write" }, - { 0, "lf t55xx bruteforce" }, - { 0, "lf t55xx chk" }, - { 0, "lf t55xx protect" }, - { 0, "lf t55xx recoverpw" }, - { 1, "lf t55xx sniff" }, - { 0, "lf t55xx special" }, - { 0, "lf t55xx wipe" }, - { 1, "lf viking help" }, - { 1, "lf viking demod" }, - { 0, "lf viking reader" }, - { 0, "lf viking clone" }, - { 0, "lf viking sim" }, - { 1, "lf visa2000 help" }, - { 1, "lf visa2000 demod" }, - { 0, "lf visa2000 reader" }, - { 0, "lf visa2000 clone" }, - { 0, "lf visa2000 sim" }, - { 1, "mem help" }, - { 0, "mem baudrate" }, - { 0, "mem dump" }, - { 0, "mem info" }, - { 0, "mem load" }, - { 0, "mem wipe" }, - { 1, "mem spiffs help" }, - { 0, "mem spiffs copy" }, - { 0, "mem spiffs check" }, - { 0, "mem spiffs dump" }, - { 0, "mem spiffs info" }, - { 0, "mem spiffs mount" }, - { 0, "mem spiffs remove" }, - { 0, "mem spiffs rename" }, - { 0, "mem spiffs test" }, - { 0, "mem spiffs tree" }, - { 0, "mem spiffs unmount" }, - { 0, "mem spiffs upload" }, - { 0, "mem spiffs view" }, - { 0, "mem spiffs wipe" }, - { 1, "nfc help" }, - { 1, "nfc decode" }, - { 0, "nfc type1 read" }, - { 1, "nfc type1 help" }, - { 0, "nfc type2 read" }, - { 1, "nfc type2 help" }, - { 0, "nfc type4a format" }, - { 0, "nfc type4a read" }, - { 0, "nfc type4a write" }, - { 0, "nfc type4a st25taread" }, - { 1, "nfc type4a help" }, - { 0, "nfc type4b read" }, - { 1, "nfc type4b help" }, - { 0, "nfc mf cformat" }, - { 0, "nfc mf cread" }, - { 0, "nfc mf cwrite" }, - { 0, "nfc mf pread" }, - { 1, "nfc mf help" }, - { 0, "nfc barcode read" }, - { 0, "nfc barcode sim" }, - { 1, "nfc barcode help" }, - { 1, "piv help" }, - { 0, "piv select" }, - { 0, "piv getdata" }, - { 0, "piv authsign" }, - { 0, "piv scan" }, - { 1, "piv list" }, - { 1, "smart help" }, - { 1, "smart list" }, - { 0, "smart info" }, - { 0, "smart reader" }, - { 0, "smart raw" }, - { 1, "smart upgrade" }, - { 0, "smart setclock" }, - { 0, "smart brute" }, - { 1, "script help" }, - { 1, "script list" }, - { 1, "script run" }, - { 1, "trace help" }, - { 1, "trace extract" }, - { 1, "trace list" }, - { 1, "trace load" }, - { 1, "trace save" }, - { 1, "usart help" }, - { 0, "usart btpin" }, - { 0, "usart btfactory" }, - { 0, "usart tx" }, - { 0, "usart rx" }, - { 0, "usart txrx" }, - { 0, "usart txhex" }, - { 0, "usart rxhex" }, - { 0, "usart config" }, - { 1, "wiegand help" }, - { 1, "wiegand list" }, - { 1, "wiegand encode" }, - { 1, "wiegand decode" }, - {0, NULL} -}; - -#ifdef __cplusplus -} -#endif - -#endif \ No newline at end of file From 0b143e5bcd02dd9598eb03406149691d36cde0e4 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Mon, 14 Aug 2023 18:57:36 -0700 Subject: [PATCH 201/299] Add 5..8 byte versions for LE/BE conversions --- common/commonutil.c | 252 +++++++++++++++++++++++++++++++++++++------- common/commonutil.h | 19 ++++ 2 files changed, 235 insertions(+), 36 deletions(-) diff --git a/common/commonutil.c b/common/commonutil.c index 07b55f1f9..2e850fb39 100644 --- a/common/commonutil.c +++ b/common/commonutil.c @@ -161,75 +161,255 @@ uint64_t bytes_to_num(uint8_t *src, size_t len) { } uint16_t MemLeToUint2byte(const uint8_t *data) { - return (uint16_t)((uint16_t) - (data[1] << 8) + data[0] - ); + return (uint16_t)( + (((uint16_t)(data[1])) << (8*1)) + + (((uint16_t)(data[0])) << (8*0)) + ); } uint32_t MemLeToUint3byte(const uint8_t *data) { - return (uint32_t)((uint32_t) - (data[2] << 16) + (data[1] << 8) + data[0] - ); + return (uint32_t)( + (((uint32_t)(data[2])) << (8*2)) + + (((uint32_t)(data[1])) << (8*1)) + + (((uint32_t)(data[0])) << (8*0)) + ); } uint32_t MemLeToUint4byte(const uint8_t *data) { - return (uint32_t)((uint32_t) - (data[3] << 24) + (data[2] << 16) + (data[1] << 8) + data[0] - ); + return (uint32_t)( + (((uint32_t)(data[3])) << (8*3)) + + (((uint32_t)(data[2])) << (8*2)) + + (((uint32_t)(data[1])) << (8*1)) + + (((uint32_t)(data[0])) << (8*0)) + ); +} + +uint64_t MemLeToUint5byte(const uint8_t *data) { + return (uint64_t)( + (((uint64_t)(data[4])) << (8*4)) + + (((uint64_t)(data[3])) << (8*3)) + + (((uint64_t)(data[2])) << (8*2)) + + (((uint64_t)(data[1])) << (8*1)) + + (((uint64_t)(data[0])) << (8*0)) + ); +} + +uint64_t MemLeToUint6byte(const uint8_t *data) { + return (uint64_t)( + (((uint64_t)(data[5])) << (8*5)) + + (((uint64_t)(data[4])) << (8*4)) + + (((uint64_t)(data[3])) << (8*3)) + + (((uint64_t)(data[2])) << (8*2)) + + (((uint64_t)(data[1])) << (8*1)) + + (((uint64_t)(data[0])) << (8*0)) + ); +} + +uint64_t MemLeToUint7byte(const uint8_t *data) { + return (uint64_t)( + (((uint64_t)(data[6])) << (8*6)) + + (((uint64_t)(data[5])) << (8*5)) + + (((uint64_t)(data[4])) << (8*4)) + + (((uint64_t)(data[3])) << (8*3)) + + (((uint64_t)(data[2])) << (8*2)) + + (((uint64_t)(data[1])) << (8*1)) + + (((uint64_t)(data[0])) << (8*0)) + ); +} + +uint64_t MemLeToUint8byte(const uint8_t *data) { + return (uint64_t)( + (((uint64_t)(data[7])) << (8*7)) + + (((uint64_t)(data[6])) << (8*6)) + + (((uint64_t)(data[5])) << (8*5)) + + (((uint64_t)(data[4])) << (8*4)) + + (((uint64_t)(data[3])) << (8*3)) + + (((uint64_t)(data[2])) << (8*2)) + + (((uint64_t)(data[1])) << (8*1)) + + (((uint64_t)(data[0])) << (8*0)) + ); } uint16_t MemBeToUint2byte(const uint8_t *data) { - return (uint16_t)((uint16_t) - (data[0] << 8) + data[1] - ); + return (uint16_t)( + (((uint16_t)(data[0])) << (8*1)) + + (((uint16_t)(data[1])) << (8*0)) + ); } uint32_t MemBeToUint3byte(const uint8_t *data) { - return (uint32_t)((uint32_t) - (data[0] << 16) + (data[1] << 8) + data[2] - ); + return (uint32_t)( + (((uint32_t)(data[0])) << (8*2)) + + (((uint32_t)(data[1])) << (8*1)) + + (((uint32_t)(data[2])) << (8*0)) + ); } -inline uint32_t MemBeToUint4byte(const uint8_t *data) { +uint32_t MemBeToUint4byte(const uint8_t *data) { return (uint32_t)( - (data[0] << 24) + (data[1] << 16) + (data[2] << 8) + data[3] - ); + (((uint32_t)(data[0])) << (8*3)) + + (((uint32_t)(data[1])) << (8*2)) + + (((uint32_t)(data[2])) << (8*1)) + + (((uint32_t)(data[3])) << (8*0)) + ); +} + +uint64_t MemBeToUint5byte(const uint8_t *data) { + return (uint64_t)( + (((uint64_t)(data[0])) << (8*4)) + + (((uint64_t)(data[1])) << (8*3)) + + (((uint64_t)(data[2])) << (8*2)) + + (((uint64_t)(data[3])) << (8*1)) + + (((uint64_t)(data[4])) << (8*0)) + ); +} + +uint64_t MemBeToUint6byte(const uint8_t *data) { + return (uint64_t)( + (((uint64_t)(data[0])) << (8*5)) + + (((uint64_t)(data[1])) << (8*4)) + + (((uint64_t)(data[2])) << (8*3)) + + (((uint64_t)(data[3])) << (8*2)) + + (((uint64_t)(data[4])) << (8*1)) + + (((uint64_t)(data[5])) << (8*0)) + ); +} + +uint64_t MemBeToUint7byte(const uint8_t *data) { + return (uint64_t)( + (((uint64_t)(data[0])) << (8*6)) + + (((uint64_t)(data[1])) << (8*5)) + + (((uint64_t)(data[2])) << (8*4)) + + (((uint64_t)(data[3])) << (8*3)) + + (((uint64_t)(data[4])) << (8*2)) + + (((uint64_t)(data[5])) << (8*1)) + + (((uint64_t)(data[6])) << (8*0)) + ); +} + +uint64_t MemBeToUint8byte(const uint8_t *data) { + return (uint64_t)( + (((uint64_t)(data[0])) << (8*7)) + + (((uint64_t)(data[1])) << (8*6)) + + (((uint64_t)(data[2])) << (8*5)) + + (((uint64_t)(data[3])) << (8*4)) + + (((uint64_t)(data[4])) << (8*3)) + + (((uint64_t)(data[5])) << (8*2)) + + (((uint64_t)(data[6])) << (8*1)) + + (((uint64_t)(data[7])) << (8*0)) + ); } void Uint2byteToMemLe(uint8_t *data, uint16_t value) { - data[1] = (value >> 8) & 0xff; - data[0] = value & 0xff; + data[0] = (uint8_t)((value >> (8*0)) & 0xffu); + data[1] = (uint8_t)((value >> (8*1)) & 0xffu); } void Uint3byteToMemLe(uint8_t *data, uint32_t value) { - data[2] = (value >> 16) & 0xff; - data[1] = (value >> 8) & 0xff; - data[0] = value & 0xff; + data[0] = (uint8_t)((value >> (8*0)) & 0xffu); + data[1] = (uint8_t)((value >> (8*1)) & 0xffu); + data[2] = (uint8_t)((value >> (8*2)) & 0xffu); } void Uint4byteToMemLe(uint8_t *data, uint32_t value) { - data[3] = (value >> 24) & 0xff; - data[2] = (value >> 16) & 0xff; - data[1] = (value >> 8) & 0xff; - data[0] = value & 0xff; + data[0] = (uint8_t)((value >> (8*0)) & 0xffu); + data[1] = (uint8_t)((value >> (8*1)) & 0xffu); + data[2] = (uint8_t)((value >> (8*2)) & 0xffu); + data[3] = (uint8_t)((value >> (8*3)) & 0xffu); +} + +void Uint5byteToMemLe(uint8_t *data, uint64_t value) { + data[0] = (uint8_t)((value >> (8*0)) & 0xffu); + data[1] = (uint8_t)((value >> (8*1)) & 0xffu); + data[2] = (uint8_t)((value >> (8*2)) & 0xffu); + data[3] = (uint8_t)((value >> (8*3)) & 0xffu); + data[4] = (uint8_t)((value >> (8*4)) & 0xffu); +} + +void Uint6byteToMemLe(uint8_t *data, uint64_t value) { + data[0] = (uint8_t)((value >> (8*0)) & 0xffu); + data[1] = (uint8_t)((value >> (8*1)) & 0xffu); + data[2] = (uint8_t)((value >> (8*2)) & 0xffu); + data[3] = (uint8_t)((value >> (8*3)) & 0xffu); + data[4] = (uint8_t)((value >> (8*4)) & 0xffu); + data[5] = (uint8_t)((value >> (8*5)) & 0xffu); +} + +void Uint7byteToMemLe(uint8_t *data, uint64_t value) { + data[0] = (uint8_t)((value >> (8*0)) & 0xffu); + data[1] = (uint8_t)((value >> (8*1)) & 0xffu); + data[2] = (uint8_t)((value >> (8*2)) & 0xffu); + data[3] = (uint8_t)((value >> (8*3)) & 0xffu); + data[4] = (uint8_t)((value >> (8*4)) & 0xffu); + data[5] = (uint8_t)((value >> (8*5)) & 0xffu); + data[6] = (uint8_t)((value >> (8*6)) & 0xffu); +} + +void Uint8byteToMemLe(uint8_t *data, uint64_t value) { + data[0] = (uint8_t)((value >> (8*0)) & 0xffu); + data[1] = (uint8_t)((value >> (8*1)) & 0xffu); + data[2] = (uint8_t)((value >> (8*2)) & 0xffu); + data[3] = (uint8_t)((value >> (8*3)) & 0xffu); + data[4] = (uint8_t)((value >> (8*4)) & 0xffu); + data[5] = (uint8_t)((value >> (8*5)) & 0xffu); + data[6] = (uint8_t)((value >> (8*6)) & 0xffu); + data[7] = (uint8_t)((value >> (8*7)) & 0xffu); } void Uint2byteToMemBe(uint8_t *data, uint16_t value) { - data[0] = (value >> 8) & 0xff; - data[1] = value & 0xff; + data[0] = (uint8_t)((value >> (8*1)) & 0xffu); + data[1] = (uint8_t)((value >> (8*0)) & 0xffu); } void Uint3byteToMemBe(uint8_t *data, uint32_t value) { - data[0] = (value >> 16) & 0xff; - data[1] = (value >> 8) & 0xff; - data[2] = value & 0xff; + data[0] = (uint8_t)((value >> (8*2)) & 0xffu); + data[1] = (uint8_t)((value >> (8*1)) & 0xffu); + data[2] = (uint8_t)((value >> (8*0)) & 0xffu); } void Uint4byteToMemBe(uint8_t *data, uint32_t value) { - data[0] = (value >> 24) & 0xff; - data[1] = (value >> 16) & 0xff; - data[2] = (value >> 8) & 0xff; - data[3] = value & 0xff; + data[0] = (uint8_t)((value >> (8*3)) & 0xffu); + data[1] = (uint8_t)((value >> (8*2)) & 0xffu); + data[2] = (uint8_t)((value >> (8*1)) & 0xffu); + data[3] = (uint8_t)((value >> (8*0)) & 0xffu); +} + +void Uint5byteToMemBe(uint8_t *data, uint64_t value) { + data[0] = (uint8_t)((value >> (8*4)) & 0xffu); + data[1] = (uint8_t)((value >> (8*3)) & 0xffu); + data[2] = (uint8_t)((value >> (8*2)) & 0xffu); + data[3] = (uint8_t)((value >> (8*1)) & 0xffu); + data[4] = (uint8_t)((value >> (8*0)) & 0xffu); +} + +void Uint6byteToMemBe(uint8_t *data, uint64_t value) { + data[0] = (uint8_t)((value >> (8*5)) & 0xffu); + data[1] = (uint8_t)((value >> (8*4)) & 0xffu); + data[2] = (uint8_t)((value >> (8*3)) & 0xffu); + data[3] = (uint8_t)((value >> (8*2)) & 0xffu); + data[4] = (uint8_t)((value >> (8*1)) & 0xffu); + data[5] = (uint8_t)((value >> (8*0)) & 0xffu); +} + +void Uint7byteToMemBe(uint8_t *data, uint64_t value) { + data[0] = (uint8_t)((value >> (8*6)) & 0xffu); + data[1] = (uint8_t)((value >> (8*5)) & 0xffu); + data[2] = (uint8_t)((value >> (8*4)) & 0xffu); + data[3] = (uint8_t)((value >> (8*3)) & 0xffu); + data[4] = (uint8_t)((value >> (8*2)) & 0xffu); + data[5] = (uint8_t)((value >> (8*1)) & 0xffu); + data[6] = (uint8_t)((value >> (8*0)) & 0xffu); +} + +void Uint8byteToMemBe(uint8_t *data, uint64_t value) { + data[0] = (uint8_t)((value >> (8*7)) & 0xffu); + data[1] = (uint8_t)((value >> (8*6)) & 0xffu); + data[2] = (uint8_t)((value >> (8*5)) & 0xffu); + data[3] = (uint8_t)((value >> (8*4)) & 0xffu); + data[4] = (uint8_t)((value >> (8*3)) & 0xffu); + data[5] = (uint8_t)((value >> (8*2)) & 0xffu); + data[6] = (uint8_t)((value >> (8*1)) & 0xffu); + data[7] = (uint8_t)((value >> (8*0)) & 0xffu); } // RotateLeft - Ultralight, Desfire diff --git a/common/commonutil.h b/common/commonutil.h index 7beb95355..23dd27f85 100644 --- a/common/commonutil.h +++ b/common/commonutil.h @@ -65,15 +65,34 @@ uint64_t bytes_to_num(uint8_t *src, size_t len); uint16_t MemLeToUint2byte(const uint8_t *data); uint32_t MemLeToUint3byte(const uint8_t *data); uint32_t MemLeToUint4byte(const uint8_t *data); +uint64_t MemLeToUint5byte(const uint8_t *data); +uint64_t MemLeToUint6byte(const uint8_t *data); +uint64_t MemLeToUint7byte(const uint8_t *data); +uint64_t MemLeToUint8byte(const uint8_t *data); + uint16_t MemBeToUint2byte(const uint8_t *data); uint32_t MemBeToUint3byte(const uint8_t *data); uint32_t MemBeToUint4byte(const uint8_t *data); +uint64_t MemBeToUint5byte(const uint8_t *data); +uint64_t MemBeToUint6byte(const uint8_t *data); +uint64_t MemBeToUint7byte(const uint8_t *data); +uint64_t MemBeToUint8byte(const uint8_t *data); + void Uint2byteToMemLe(uint8_t *data, uint16_t value); void Uint3byteToMemLe(uint8_t *data, uint32_t value); void Uint4byteToMemLe(uint8_t *data, uint32_t value); +void Uint5byteToMemLe(uint8_t *data, uint64_t value); +void Uint6byteToMemLe(uint8_t *data, uint64_t value); +void Uint7byteToMemLe(uint8_t *data, uint64_t value); +void Uint8byteToMemLe(uint8_t *data, uint64_t value); + void Uint2byteToMemBe(uint8_t *data, uint16_t value); void Uint3byteToMemBe(uint8_t *data, uint32_t value); void Uint4byteToMemBe(uint8_t *data, uint32_t value); +void Uint5byteToMemBe(uint8_t *data, uint64_t value); +void Uint6byteToMemBe(uint8_t *data, uint64_t value); +void Uint7byteToMemBe(uint8_t *data, uint64_t value); +void Uint8byteToMemBe(uint8_t *data, uint64_t value); // rotate left byte array void rol(uint8_t *data, const size_t len); From c858d6fdc7c5afbcea377dddce44ec15356f36b2 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Mon, 14 Aug 2023 19:07:35 -0700 Subject: [PATCH 202/299] Minor update to WSL2 instructions --- .../Windows-WSL2-Installation-Instructions.md | 25 ++++++------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md b/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md index 21cb8048c..0869ab04e 100644 --- a/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Windows-WSL2-Installation-Instructions.md @@ -156,27 +156,18 @@ However, it may be necessary to give the `udev` service a kind reminder: ## Inform udev that it really, really should work -The following workaround appears to work to get udev to apply the permissions -appropriately. Note that this may need to be run again, such as when the WSL2 -distributions have been restarted. I don't know why ... but it's a small hiccup. +As of August 2023, the following needs to be done anytime the WSL2 subsystem +has been restarted (e.g., host machine reboot, first WSL2 console window, etc.). +Otherwise, it appears that `udev` service will not see the arrival of devices, +and therefore won't modify permissions on `/dev/ttyACM*` devices. -```sh -sudo udevadm trigger --action=change -``` - -General instructions suggested to use `sudo udevadm control --reload-rules`. However, -this may simply result in the following cryptic error message: - -```sh -$ sudo udevadm control --reload-rules -[sudo] password for root: -Failed to send reload request: No such file or directory -``` - -_Note that the following should **NOT** be required:_ +After this is run once, `udev` appears to work correctly (at least until the +host machine reboots or the last WSL console window is closed for a while). +One workaround is to simply ensure you keep at least one WSL2 console open. ```sh sudo service udev restart +sudo udevadm trigger --action=change ``` ## Verify Device Exists From db8f91d7e1625f5c56a5c17aff08ebb77fbd5582 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Mon, 14 Aug 2023 20:01:20 -0700 Subject: [PATCH 203/299] make logfile more unique (per client run) --- client/src/proxmark3.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/proxmark3.h b/client/src/proxmark3.h index a9f80ae91..71072422a 100644 --- a/client/src/proxmark3.h +++ b/client/src/proxmark3.h @@ -36,7 +36,7 @@ #define PROXPROMPT_DEV_OFFLINE _RL_BOLD_RED_("offline") #define PROXHISTORY "history.txt" -#define PROXLOG "log_%Y%m%d.txt" +#define PROXLOG "log_%Y%m%d%H%M%S.txt" #define MAX_NESTED_CMDSCRIPT 10 #define MAX_NESTED_LUASCRIPT 10 From 6eae62edecbaddab5a305b6f74337b272183bbe3 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Mon, 14 Aug 2023 20:34:13 -0700 Subject: [PATCH 204/299] const for `hitagS` --- armsrc/hitagS.c | 10 +++++----- armsrc/hitagS.h | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/armsrc/hitagS.c b/armsrc/hitagS.c index db219bcf2..d304cb6b3 100644 --- a/armsrc/hitagS.c +++ b/armsrc/hitagS.c @@ -635,7 +635,7 @@ static void hitagS_handle_reader_command(uint8_t *rx, const size_t rxlen, /* * Emulates a Hitag S Tag with the given data from the .hts file */ -void SimulateHitagSTag(bool tag_mem_supplied, uint8_t *data, bool ledcontrol) { +void SimulateHitagSTag(bool tag_mem_supplied, const uint8_t *data, bool ledcontrol) { StopTicks(); @@ -1052,7 +1052,7 @@ static size_t concatbits(uint8_t *dstbuf, size_t dstbufskip, const uint8_t *srcb return dstbufskip + srcbuflen; } -static int selectHitagS(hitag_function htf, hitag_data *htd, uint8_t *tx, size_t sizeoftx, uint8_t *rx, size_t sizeofrx, int t_wait, bool ledcontrol) { +static int selectHitagS(hitag_function htf, const hitag_data *htd, uint8_t *tx, size_t sizeoftx, uint8_t *rx, size_t sizeofrx, int t_wait, bool ledcontrol) { StopTicks(); FpgaDownloadAndGo(FPGA_BITSTREAM_LF); @@ -1263,7 +1263,7 @@ static int selectHitagS(hitag_function htf, hitag_data *htd, uint8_t *tx, size_t * If the key was given the password will be decrypted. * Reads every page of a hitag S transpoder. */ -void ReadHitagS(hitag_function htf, hitag_data *htd, bool ledcontrol) { +void ReadHitagS(hitag_function htf, const hitag_data *htd, bool ledcontrol) { uint8_t rx[HITAG_FRAME_LEN]; size_t rxlen = 0; @@ -1356,7 +1356,7 @@ void ReadHitagS(hitag_function htf, hitag_data *htd, bool ledcontrol) { * Authenticates to the Tag with the given Key or Challenge. * Writes the given 32Bit data into page_ */ -void WritePageHitagS(hitag_function htf, hitag_data *htd, int page, bool ledcontrol) { +void WritePageHitagS(hitag_function htf, const hitag_data *htd, int page, bool ledcontrol) { bool bSuccessful = false; //check for valid input @@ -1443,7 +1443,7 @@ write_end: * is not received correctly due to Antenna problems. This function * detects these challenges. */ -void Hitag_check_challenges(uint8_t *data, uint32_t datalen, bool ledcontrol) { +void Hitag_check_challenges(const uint8_t *data, uint32_t datalen, bool ledcontrol) { //check for valid input if (datalen < 8) { Dbprintf("Error, need chals"); diff --git a/armsrc/hitagS.h b/armsrc/hitagS.h index 49a4f358f..cbb87722f 100644 --- a/armsrc/hitagS.h +++ b/armsrc/hitagS.h @@ -25,8 +25,8 @@ #include "hitag.h" -void SimulateHitagSTag(bool tag_mem_supplied, uint8_t *data, bool ledcontrol); -void ReadHitagS(hitag_function htf, hitag_data *htd, bool ledcontrol); -void WritePageHitagS(hitag_function htf, hitag_data *htd, int page, bool ledcontrol); -void Hitag_check_challenges(uint8_t *data, uint32_t datalen, bool ledcontrol); +void SimulateHitagSTag(bool tag_mem_supplied, const uint8_t *data, bool ledcontrol); +void ReadHitagS(hitag_function htf, const hitag_data *htd, bool ledcontrol); +void WritePageHitagS(hitag_function htf, const hitag_data *htd, int page, bool ledcontrol); +void Hitag_check_challenges(const uint8_t *data, uint32_t datalen, bool ledcontrol); #endif From 8af8723528847596b0f3979cf4f1c0a36216bee7 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Mon, 14 Aug 2023 21:45:21 -0700 Subject: [PATCH 205/299] const for `i2c` --- armsrc/i2c.c | 6 +++--- armsrc/i2c.h | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/armsrc/i2c.c b/armsrc/i2c.c index ca3cb46fd..016ae2f13 100644 --- a/armsrc/i2c.c +++ b/armsrc/i2c.c @@ -407,7 +407,7 @@ bool I2C_WriteByte(uint8_t data, uint8_t device_cmd, uint8_t device_address) { //Sends array of data (Array, length, command to be written , SlaveDevice address ). // len = uint16 because we need to write up to 256 bytes -bool I2C_BufferWrite(uint8_t *data, uint16_t len, uint8_t device_cmd, uint8_t device_address) { +bool I2C_BufferWrite(const uint8_t *data, uint16_t len, uint8_t device_cmd, uint8_t device_address) { bool bBreak = true; do { if (!I2C_Start()) @@ -602,7 +602,7 @@ int16_t I2C_ReadFW(uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t return readcount; } -bool I2C_WriteFW(uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t device_address) { +bool I2C_WriteFW(const uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t device_address) { //START, 0xB0, 0x00, 0x00, xx, yy, zz, ......, STOP bool bBreak = true; @@ -772,7 +772,7 @@ void SmartCardAtr(void) { // StopTicks(); } -void SmartCardRaw(smart_card_raw_t *p) { +void SmartCardRaw(const smart_card_raw_t *p) { LED_D_ON(); uint16_t len = 0; diff --git a/armsrc/i2c.h b/armsrc/i2c.h index 972704c1b..6fa8b8809 100644 --- a/armsrc/i2c.h +++ b/armsrc/i2c.h @@ -41,12 +41,12 @@ void I2C_Reset_EnterBootloader(void); bool I2C_WriteCmd(uint8_t device_cmd, uint8_t device_address); bool I2C_WriteByte(uint8_t data, uint8_t device_cmd, uint8_t device_address); -bool I2C_BufferWrite(uint8_t *data, uint16_t len, uint8_t device_cmd, uint8_t device_address); +bool I2C_BufferWrite(const uint8_t *data, uint16_t len, uint8_t device_cmd, uint8_t device_address); int16_t I2C_BufferRead(uint8_t *data, uint16_t len, uint8_t device_cmd, uint8_t device_address); // for firmware int16_t I2C_ReadFW(uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t device_address); -bool I2C_WriteFW(uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t device_address); +bool I2C_WriteFW(const uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t device_address); bool sc_rx_bytes(uint8_t *dest, uint16_t *destlen); // @@ -54,7 +54,7 @@ bool GetATR(smart_card_atr_t *card_ptr, bool verbose); // generice functions void SmartCardAtr(void); -void SmartCardRaw(smart_card_raw_t *p); +void SmartCardRaw(const smart_card_raw_t *p); void SmartCardUpgrade(uint64_t arg0); void SmartCardSetBaud(uint64_t arg0); void SmartCardSetClock(uint64_t arg0); From efce76db53db4e71a64807c4c731714791faa76a Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Mon, 14 Aug 2023 22:07:04 -0700 Subject: [PATCH 206/299] more const for `iso14443a` --- armsrc/iso14443a.c | 4 ++-- armsrc/iso14443a.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 45f61f4ce..c3ee6f050 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -188,7 +188,7 @@ void printHf14aConfig(void) { * @brief setSamplingConfig * @param sc */ -void setHf14aConfig(hf14a_config *hc) { +void setHf14aConfig(const hf14a_config *hc) { if ((hc->forceanticol >= 0) && (hc->forceanticol <= 2)) hf14aconfig.forceanticol = hc->forceanticol; @@ -564,7 +564,7 @@ RAMFUNC int ManchesterDecoding(uint8_t bit, uint16_t offset, uint32_t non_real_t } -// Thinfilm, Kovio mangels ISO14443A in the way that they don't use start bit nor parity bits. +// Thinfilm, Kovio mangles ISO14443A in the way that they don't use start bit nor parity bits. static RAMFUNC int ManchesterDecoding_Thinfilm(uint8_t bit) { Demod.twoBits = (Demod.twoBits << 8) | bit; diff --git a/armsrc/iso14443a.h b/armsrc/iso14443a.h index a6f68067b..7957e6f48 100644 --- a/armsrc/iso14443a.h +++ b/armsrc/iso14443a.h @@ -121,7 +121,7 @@ typedef enum { #endif void printHf14aConfig(void); -void setHf14aConfig(hf14a_config *hc); +void setHf14aConfig(const hf14a_config *hc); hf14a_config *getHf14aConfig(void); void iso14a_set_timeout(uint32_t timeout); uint32_t iso14a_get_timeout(void); From a8d84b2f132e021071d635ba68edc468a5e4842e Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Mon, 14 Aug 2023 22:16:11 -0700 Subject: [PATCH 207/299] more const for `iso14443b` --- armsrc/iso14443b.c | 2 +- armsrc/iso14443b.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/armsrc/iso14443b.c b/armsrc/iso14443b.c index e4f1e4e93..8fe502833 100644 --- a/armsrc/iso14443b.c +++ b/armsrc/iso14443b.c @@ -701,7 +701,7 @@ static void TransmitFor14443b_AsTag(const uint8_t *response, uint16_t len) { // Main loop of simulated tag: receive commands from reader, decide what // response to send, and send it. //----------------------------------------------------------------------------- -void SimulateIso14443bTag(uint8_t *pupi) { +void SimulateIso14443bTag(const uint8_t *pupi) { LED_A_ON(); // the only commands we understand is WUPB, AFI=0, Select All, N=1: diff --git a/armsrc/iso14443b.h b/armsrc/iso14443b.h index 2579e6f1c..afa21e9d1 100644 --- a/armsrc/iso14443b.h +++ b/armsrc/iso14443b.h @@ -41,7 +41,7 @@ int iso14443b_select_card(iso14b_card_select_t *card); int iso14443b_select_card_srx(iso14b_card_select_t *card); int iso14443b_select_xrx_card(iso14b_card_select_t *card); -void SimulateIso14443bTag(uint8_t *pupi); +void SimulateIso14443bTag(const uint8_t *pupi); void AcquireRawAdcSamplesIso14443b(uint32_t parameter); void ReadSTBlock(uint8_t blocknr); void SniffIso14443b(void); From db46e2ce110b4c91a6e49b1b902fd3260095d1a3 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Mon, 14 Aug 2023 22:45:48 -0700 Subject: [PATCH 208/299] more const for `iso15693` --- armsrc/iso15693.c | 40 ++++++++++++++++++++-------------------- armsrc/iso15693.h | 16 ++++++++-------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/armsrc/iso15693.c b/armsrc/iso15693.c index e0c3e4436..0c5e7c7ab 100644 --- a/armsrc/iso15693.c +++ b/armsrc/iso15693.c @@ -2656,7 +2656,7 @@ void SetTag15693Uid(const uint8_t *uid) { switch_off(); } -static void init_password_15693_Slix(uint8_t *buffer, uint8_t *pwd, const uint8_t *rnd) { +static void init_password_15693_Slix(uint8_t *buffer, const uint8_t *pwd, const uint8_t *rnd) { memcpy(buffer, pwd, 4); if (rnd) { buffer[0] ^= rnd[0]; @@ -2684,7 +2684,7 @@ static bool get_rnd_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t return true; } -static uint32_t disable_privacy_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t pass_id, uint8_t *password) { +static uint32_t disable_privacy_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t pass_id, const uint8_t *password) { uint8_t rnd[2]; if (get_rnd_15693_Slix(start_time, eof_time, rnd) == false) { @@ -2706,7 +2706,7 @@ static uint32_t disable_privacy_15693_Slix(uint32_t start_time, uint32_t *eof_ti return PM3_SUCCESS; } -static uint32_t set_pass_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t pass_id, uint8_t *password, uint8_t *uid) { +static uint32_t set_pass_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t pass_id, const uint8_t *password, uint8_t *uid) { uint8_t rnd[2]; @@ -2733,7 +2733,7 @@ static uint32_t set_pass_15693_Slix(uint32_t start_time, uint32_t *eof_time, uin return PM3_SUCCESS; } -static uint32_t set_privacy_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t *password) { +static uint32_t set_privacy_15693_Slix(uint32_t start_time, uint32_t *eof_time, const uint8_t *password) { uint8_t rnd[2]; if (get_rnd_15693_Slix(start_time, eof_time, rnd) == false) { return PM3_ETIMEOUT; @@ -2754,7 +2754,7 @@ static uint32_t set_privacy_15693_Slix(uint32_t start_time, uint32_t *eof_time, return PM3_SUCCESS; } -static uint32_t disable_eas_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t *password, bool usepwd) { +static uint32_t disable_eas_15693_Slix(uint32_t start_time, uint32_t *eof_time, const uint8_t *password, bool usepwd) { uint8_t uid[8]; get_uid_slix(start_time, eof_time, uid); @@ -2788,7 +2788,7 @@ static uint32_t disable_eas_15693_Slix(uint32_t start_time, uint32_t *eof_time, } -static uint32_t enable_eas_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t *password, bool usepwd) { +static uint32_t enable_eas_15693_Slix(uint32_t start_time, uint32_t *eof_time, const uint8_t *password, bool usepwd) { uint8_t uid[8]; get_uid_slix(start_time, eof_time, uid); @@ -2820,7 +2820,7 @@ static uint32_t enable_eas_15693_Slix(uint32_t start_time, uint32_t *eof_time, u return PM3_SUCCESS; } -static uint32_t write_password_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t pwd_id, uint8_t *password, uint8_t *uid) { +static uint32_t write_password_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t pwd_id, const uint8_t *password, uint8_t *uid) { uint8_t new_pwd_cmd[] = { (ISO15_REQ_DATARATE_HIGH | ISO15_REQ_ADDRESS), ISO15693_WRITE_PASSWORD, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, pwd_id, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; @@ -2841,7 +2841,7 @@ static uint32_t write_password_15693_Slix(uint32_t start_time, uint32_t *eof_tim return PM3_SUCCESS; } -static uint32_t pass_protect_EASAFI_15693_Slix(uint32_t start_time, uint32_t *eof_time, bool set_option_flag, uint8_t *password) { +static uint32_t pass_protect_EASAFI_15693_Slix(uint32_t start_time, uint32_t *eof_time, bool set_option_flag, const uint8_t *password) { uint8_t flags; @@ -2880,7 +2880,7 @@ static uint32_t pass_protect_EASAFI_15693_Slix(uint32_t start_time, uint32_t *eo return PM3_SUCCESS; } -static uint32_t write_afi_15693(uint32_t start_time, uint32_t *eof_time, uint8_t *password, bool usepwd, uint8_t *uid, bool use_uid, uint8_t afi) { +static uint32_t write_afi_15693(uint32_t start_time, uint32_t *eof_time, const uint8_t *password, bool usepwd, uint8_t *uid, bool use_uid, uint8_t afi) { if (!use_uid) { int res_getuid = get_uid_slix(start_time, eof_time, uid); @@ -2917,7 +2917,7 @@ static uint32_t write_afi_15693(uint32_t start_time, uint32_t *eof_time, uint8_t } /* -static uint32_t enable_privacy_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t *uid, uint8_t pass_id, uint8_t *password) { +static uint32_t enable_privacy_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t *uid, uint8_t pass_id, const uint8_t *password) { uint8_t rnd[2]; if (get_rnd_15693_Slix(start_time, eof_time, rnd) == false) { return PM3_ETIMEOUT; @@ -2938,7 +2938,7 @@ static uint32_t enable_privacy_15693_Slix(uint32_t start_time, uint32_t *eof_tim return PM3_SUCCESS; } -static uint32_t write_password_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t *uid, uint8_t pass_id, uint8_t *password) { +static uint32_t write_password_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t *uid, uint8_t pass_id, const uint8_t *password) { uint8_t rnd[2]; if (get_rnd_15693_Slix(start_time, eof_time, rnd) == false) { return PM3_ETIMEOUT; @@ -2961,7 +2961,7 @@ static uint32_t write_password_15693_Slix(uint32_t start_time, uint32_t *eof_tim return PM3_SUCCESS; } -static uint32_t destroy_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t *uid, uint8_t *password) { +static uint32_t destroy_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint8_t *uid, const uint8_t *password) { uint8_t rnd[2]; if (get_rnd_15693_Slix(start_time, eof_time, rnd) == false) { @@ -2985,7 +2985,7 @@ static uint32_t destroy_15693_Slix(uint32_t start_time, uint32_t *eof_time, uint */ -void WritePasswordSlixIso15693(uint8_t *old_password, uint8_t *new_password, uint8_t pwd_id) { +void WritePasswordSlixIso15693(const uint8_t *old_password, const uint8_t *new_password, uint8_t pwd_id) { LED_D_ON(); Iso15693InitReader(); StartCountSspClk(); @@ -3010,7 +3010,7 @@ void WritePasswordSlixIso15693(uint8_t *old_password, uint8_t *new_password, uin } -void DisablePrivacySlixIso15693(uint8_t *password) { +void DisablePrivacySlixIso15693(const uint8_t *password) { LED_D_ON(); Iso15693InitReader(); StartCountSspClk(); @@ -3025,7 +3025,7 @@ void DisablePrivacySlixIso15693(uint8_t *password) { switch_off(); } -void EnablePrivacySlixIso15693(uint8_t *password) { +void EnablePrivacySlixIso15693(const uint8_t *password) { LED_D_ON(); Iso15693InitReader(); StartCountSspClk(); @@ -3041,7 +3041,7 @@ void EnablePrivacySlixIso15693(uint8_t *password) { } -void DisableEAS_AFISlixIso15693(uint8_t *password, bool usepwd) { +void DisableEAS_AFISlixIso15693(const uint8_t *password, bool usepwd) { LED_D_ON(); Iso15693InitReader(); StartCountSspClk(); @@ -3059,7 +3059,7 @@ void DisableEAS_AFISlixIso15693(uint8_t *password, bool usepwd) { switch_off(); } -void EnableEAS_AFISlixIso15693(uint8_t *password, bool usepwd) { +void EnableEAS_AFISlixIso15693(const uint8_t *password, bool usepwd) { LED_D_ON(); Iso15693InitReader(); StartCountSspClk(); @@ -3074,7 +3074,7 @@ void EnableEAS_AFISlixIso15693(uint8_t *password, bool usepwd) { switch_off(); } -void PassProtextEASSlixIso15693(uint8_t *password) { +void PassProtextEASSlixIso15693(const uint8_t *password) { LED_D_ON(); Iso15693InitReader(); StartCountSspClk(); @@ -3083,7 +3083,7 @@ void PassProtextEASSlixIso15693(uint8_t *password) { reply_ng(CMD_HF_ISO15693_SLIX_PASS_PROTECT_EAS, res, NULL, 0); switch_off(); } -void PassProtectAFISlixIso15693(uint8_t *password) { +void PassProtectAFISlixIso15693(const uint8_t *password) { LED_D_ON(); Iso15693InitReader(); StartCountSspClk(); @@ -3093,7 +3093,7 @@ void PassProtectAFISlixIso15693(uint8_t *password) { switch_off(); } -void WriteAFIIso15693(uint8_t *password, bool use_pwd, uint8_t *uid, bool use_uid, uint8_t afi) { +void WriteAFIIso15693(const uint8_t *password, bool use_pwd, uint8_t *uid, bool use_uid, uint8_t afi) { LED_D_ON(); Iso15693InitReader(); StartCountSspClk(); diff --git a/armsrc/iso15693.h b/armsrc/iso15693.h index 4644adea9..8a9e2fe82 100644 --- a/armsrc/iso15693.h +++ b/armsrc/iso15693.h @@ -60,12 +60,12 @@ int SendDataTagEOF(uint8_t *recv, uint16_t max_recv_len, uint32_t start_time, ui void SetTag15693Uid(const uint8_t *uid); -void WritePasswordSlixIso15693(uint8_t *old_password, uint8_t *new_password, uint8_t pwd_id); -void DisablePrivacySlixIso15693(uint8_t *password); -void EnablePrivacySlixIso15693(uint8_t *password); -void DisableEAS_AFISlixIso15693(uint8_t *password, bool usepwd); -void EnableEAS_AFISlixIso15693(uint8_t *password, bool usepwd); -void PassProtextEASSlixIso15693(uint8_t *password); -void PassProtectAFISlixIso15693(uint8_t *password); -void WriteAFIIso15693(uint8_t *password, bool usepwd, uint8_t *uid, bool use_uid, uint8_t afi); +void WritePasswordSlixIso15693(const uint8_t *old_password, const uint8_t *new_password, uint8_t pwd_id); +void DisablePrivacySlixIso15693(const uint8_t *password); +void EnablePrivacySlixIso15693(const uint8_t *password); +void DisableEAS_AFISlixIso15693(const uint8_t *password, bool usepwd); +void EnableEAS_AFISlixIso15693(const uint8_t *password, bool usepwd); +void PassProtextEASSlixIso15693(const uint8_t *password); +void PassProtectAFISlixIso15693(const uint8_t *password); +void WriteAFIIso15693(const uint8_t *password, bool usepwd, uint8_t *uid, bool use_uid, uint8_t afi); #endif From d78dae5904e0f4d59b69c466ef9ea01fb9898997 Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Mon, 14 Aug 2023 22:50:25 -0700 Subject: [PATCH 209/299] more const for `legicrf` and the disabled LCD code --- armsrc/LCD_disabled.c | 2 +- armsrc/LCD_disabled.h | 2 +- armsrc/legicrf.c | 2 +- armsrc/legicrf.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/armsrc/LCD_disabled.c b/armsrc/LCD_disabled.c index 1a4b253e2..67b0f3de9 100644 --- a/armsrc/LCD_disabled.c +++ b/armsrc/LCD_disabled.c @@ -53,7 +53,7 @@ void LCDFill(unsigned char xs, unsigned char ys, unsigned char width, unsigned c } } -void LCDString(char *lcd_string, const char *font_style, unsigned char x, unsigned char y, unsigned char fcolor, unsigned char bcolor) { +void LCDString(const char *lcd_string, const char *font_style, unsigned char x, unsigned char y, unsigned char fcolor, unsigned char bcolor) { unsigned int i; unsigned char mask = 0, px, py, xme, yme, offset; const char *data; diff --git a/armsrc/LCD_disabled.h b/armsrc/LCD_disabled.h index e2f57e02c..26900531a 100644 --- a/armsrc/LCD_disabled.h +++ b/armsrc/LCD_disabled.h @@ -130,7 +130,7 @@ void LCDInit(void); void LCDReset(void); void LCDSetXY(unsigned char x, unsigned char y); void LCDSetPixel(unsigned char x, unsigned char y, unsigned char color); -void LCDString(char *lcd_string, const char *font_style, unsigned char x, unsigned char y, unsigned char fcolor, unsigned char bcolor); +void LCDString(const char *lcd_string, const char *font_style, unsigned char x, unsigned char y, unsigned char fcolor, unsigned char bcolor); void LCDFill(unsigned char xs, unsigned char ys, unsigned char width, unsigned char height, unsigned char color); #endif diff --git a/armsrc/legicrf.c b/armsrc/legicrf.c index c6af0dace..42d511875 100644 --- a/armsrc/legicrf.c +++ b/armsrc/legicrf.c @@ -528,7 +528,7 @@ OUT: StopTicks(); } -void LegicRfWriter(uint16_t offset, uint16_t len, uint8_t iv, uint8_t *data) { +void LegicRfWriter(uint16_t offset, uint16_t len, uint8_t iv, const uint8_t *data) { // configure ARM and FPGA init_reader(); diff --git a/armsrc/legicrf.h b/armsrc/legicrf.h index 670688aab..02f20b536 100644 --- a/armsrc/legicrf.h +++ b/armsrc/legicrf.h @@ -25,7 +25,7 @@ void LegicRfInfo(void); int LegicRfReaderEx(uint16_t offset, uint16_t len, uint8_t iv); void LegicRfReader(uint16_t offset, uint16_t len, uint8_t iv); -void LegicRfWriter(uint16_t offset, uint16_t len, uint8_t iv, uint8_t *data); +void LegicRfWriter(uint16_t offset, uint16_t len, uint8_t iv, const uint8_t *data); legic_card_select_t *getLegicCardInfo(void); #endif /* __LEGICRF_H */ From 665cf3254b8fc1e21dc6da8e80d17ef17432cbda Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Mon, 14 Aug 2023 23:02:09 -0700 Subject: [PATCH 210/299] more const for `lfops` and some `commonutil` --- armsrc/lfops.c | 12 ++++++------ armsrc/lfops.h | 10 +++++----- common/commonutil.c | 10 +++++----- common/commonutil.h | 6 +++--- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/armsrc/lfops.c b/armsrc/lfops.c index c130d78e8..ed2a29378 100644 --- a/armsrc/lfops.c +++ b/armsrc/lfops.c @@ -287,7 +287,7 @@ void printT55xxConfig(void) { DbpString(""); } -void setT55xxConfig(uint8_t arg0, t55xx_configurations_t *c) { +void setT55xxConfig(uint8_t arg0, const t55xx_configurations_t *c) { for (uint8_t i = 0; i < 4; i++) { if (c->m[i].start_gap != 0) T55xx_Timing.m[i].start_gap = c->m[i].start_gap; @@ -1009,7 +1009,7 @@ void CmdHIDsimTAG(uint32_t hi2, uint32_t hi, uint32_t lo, uint8_t longFMT, bool // prepare a waveform pattern in the buffer based on the ID given then // simulate a FSK tag until the button is pressed // arg1 contains fcHigh and fcLow, arg2 contains STT marker and clock -void CmdFSKsimTAGEx(uint8_t fchigh, uint8_t fclow, uint8_t separator, uint8_t clk, uint16_t bitslen, uint8_t *bits, bool ledcontrol, int numcycles) { +void CmdFSKsimTAGEx(uint8_t fchigh, uint8_t fclow, uint8_t separator, uint8_t clk, uint16_t bitslen, const uint8_t *bits, bool ledcontrol, int numcycles) { FpgaDownloadAndGo(FPGA_BITSTREAM_LF); @@ -1045,7 +1045,7 @@ void CmdFSKsimTAGEx(uint8_t fchigh, uint8_t fclow, uint8_t separator, uint8_t cl // prepare a waveform pattern in the buffer based on the ID given then // simulate a FSK tag until the button is pressed // arg1 contains fcHigh and fcLow, arg2 contains STT marker and clock -void CmdFSKsimTAG(uint8_t fchigh, uint8_t fclow, uint8_t separator, uint8_t clk, uint16_t bitslen, uint8_t *bits, bool ledcontrol) { +void CmdFSKsimTAG(uint8_t fchigh, uint8_t fclow, uint8_t separator, uint8_t clk, uint16_t bitslen, const uint8_t *bits, bool ledcontrol) { CmdFSKsimTAGEx(fchigh, fclow, separator, clk, bitslen, bits, ledcontrol, -1); reply_ng(CMD_LF_FSK_SIMULATE, PM3_EOPABORTED, NULL, 0); } @@ -1866,9 +1866,9 @@ void T55xxResetRead(uint8_t flags, bool ledcontrol) { if (ledcontrol) LED_A_OFF(); } -void T55xxDangerousRawTest(uint8_t *data, bool ledcontrol) { +void T55xxDangerousRawTest(const uint8_t *data, bool ledcontrol) { // supports only default downlink mode - t55xx_test_block_t *c = (t55xx_test_block_t *)data; + const t55xx_test_block_t *c = (const t55xx_test_block_t *)data; uint8_t start_wait = 4; uint8_t bs[128 / 8]; @@ -2320,7 +2320,7 @@ void CopyHIDtoT55x7(uint32_t hi2, uint32_t hi, uint32_t lo, uint8_t longFMT, boo } // clone viking tag to T55xx -void CopyVikingtoT55xx(uint8_t *blocks, bool q5, bool em, bool ledcontrol) { +void CopyVikingtoT55xx(const uint8_t *blocks, bool q5, bool em, bool ledcontrol) { uint32_t data[] = {T55x7_BITRATE_RF_32 | T55x7_MODULATION_MANCHESTER | (2 << T55x7_MAXBLOCK_SHIFT), 0, 0}; if (q5) { diff --git a/armsrc/lfops.h b/armsrc/lfops.h index f1bc88b64..755afa88f 100644 --- a/armsrc/lfops.h +++ b/armsrc/lfops.h @@ -38,9 +38,9 @@ void CmdHIDsimTAGEx(uint32_t hi2, uint32_t hi, uint32_t lo, uint8_t longFMT, boo void CmdHIDsimTAG(uint32_t hi2, uint32_t hi, uint32_t lo, uint8_t longFMT, bool ledcontrol); void CmdFSKsimTAGEx(uint8_t fchigh, uint8_t fclow, uint8_t separator, uint8_t clk, uint16_t bitslen, - uint8_t *bits, bool ledcontrol, int numcycles); + const uint8_t *bits, bool ledcontrol, int numcycles); void CmdFSKsimTAG(uint8_t fchigh, uint8_t fclow, uint8_t separator, uint8_t clk, uint16_t bitslen, - uint8_t *bits, bool ledcontrol); + const uint8_t *bits, bool ledcontrol); void CmdASKsimTAG(uint8_t encoding, uint8_t invert, uint8_t separator, uint8_t clk, uint16_t size, const uint8_t *bits, bool ledcontrol); void CmdPSKsimTAG(uint8_t carrier, uint8_t invert, uint8_t clk, uint16_t size, @@ -54,7 +54,7 @@ int lf_em410x_watch(int findone, uint32_t *high, uint64_t *low, bool ledcontrol) int lf_io_watch(int findone, uint32_t *high, uint32_t *low, bool ledcontrol); void CopyHIDtoT55x7(uint32_t hi2, uint32_t hi, uint32_t lo, uint8_t longFMT, bool q5, bool em, bool ledcontrol); // Clone an HID card to T5557/T5567 -void CopyVikingtoT55xx(uint8_t *blocks, bool q5, bool em, bool ledcontrol); +void CopyVikingtoT55xx(const uint8_t *blocks, bool q5, bool em, bool ledcontrol); int copy_em410x_to_t55xx(uint8_t card, uint8_t clock, uint32_t id_hi, uint32_t id_lo, bool ledcontrol); @@ -66,7 +66,7 @@ void T55xxReadBlock(uint8_t page, bool pwd_mode, bool brute_mem, uint8_t block, uint8_t downlink_mode, bool ledcontrol); void T55xxWakeUp(uint32_t pwd, uint8_t flags, bool ledcontrol); void T55xx_ChkPwds(uint8_t flags, bool ledcontrol); -void T55xxDangerousRawTest(uint8_t *data, bool ledcontrol); +void T55xxDangerousRawTest(const uint8_t *data, bool ledcontrol); void turn_read_lf_on(uint32_t delay); void turn_read_lf_off(uint32_t delay); @@ -78,7 +78,7 @@ void EM4xWriteWord(uint8_t addr, uint32_t data, uint32_t pwd, uint8_t usepwd, bo void EM4xProtectWord(uint32_t data, uint32_t pwd, uint8_t usepwd, bool ledcontrol); void Cotag(uint32_t arg0, bool ledcontrol); -void setT55xxConfig(uint8_t arg0, t55xx_configurations_t *c); +void setT55xxConfig(uint8_t arg0, const t55xx_configurations_t *c); t55xx_configurations_t *getT55xxConfig(void); void printT55xxConfig(void); void loadT55xxConfig(void); diff --git a/common/commonutil.c b/common/commonutil.c index 07b55f1f9..6d57d90a9 100644 --- a/common/commonutil.c +++ b/common/commonutil.c @@ -23,8 +23,8 @@ * verifies the magic properties, then stores a formatted string, prefixed by * prefix in dst. */ -void FormatVersionInformation(char *dst, int len, const char *prefix, void *version_info) { - struct version_information_t *v = (struct version_information_t *)version_info; +void FormatVersionInformation(char *dst, int len, const char *prefix, const void *version_info) { + const struct version_information_t *v = (const struct version_information_t *)version_info; dst[0] = 0; strncat(dst, prefix, len - 1); if (v->magic != VERSION_INFORMATION_MAGIC) { @@ -53,8 +53,8 @@ void FormatVersionInformation(char *dst, int len, const char *prefix, void *vers strncat(dst, v->armsrc, len - strlen(dst) - 1); } -void format_version_information_short(char *dst, int len, void *version_info) { - struct version_information_t *v = (struct version_information_t *)version_info; +void format_version_information_short(char *dst, int len, const void *version_info) { + const struct version_information_t *v = (const struct version_information_t *)version_info; dst[0] = 0; if (v->magic != VERSION_INFORMATION_MAGIC) { strncat(dst, "Missing/Invalid version information", len - strlen(dst) - 1); @@ -151,7 +151,7 @@ void num_to_bytes(uint64_t n, size_t len, uint8_t *dest) { } } -uint64_t bytes_to_num(uint8_t *src, size_t len) { +uint64_t bytes_to_num(const uint8_t *src, size_t len) { uint64_t num = 0; while (len--) { num = (num << 8) | (*src); diff --git a/common/commonutil.h b/common/commonutil.h index 7beb95355..34daf65d2 100644 --- a/common/commonutil.h +++ b/common/commonutil.h @@ -50,8 +50,8 @@ #endif extern struct version_information_t g_version_information; -void FormatVersionInformation(char *dst, int len, const char *prefix, void *version_info); -void format_version_information_short(char *dst, int len, void *version_info); +void FormatVersionInformation(char *dst, int len, const char *prefix, const void *version_info); +void format_version_information_short(char *dst, int len, const void *version_info); uint32_t reflect(uint32_t v, int b); // used in crc.c ... uint8_t reflect8(uint8_t b); // dedicated 8bit reversal @@ -59,7 +59,7 @@ uint16_t reflect16(uint16_t b); // dedicated 16bit reversal uint32_t reflect32(uint32_t b); // dedicated 32bit reversal void num_to_bytes(uint64_t n, size_t len, uint8_t *dest); -uint64_t bytes_to_num(uint8_t *src, size_t len); +uint64_t bytes_to_num(const uint8_t *src, size_t len); // LE and BE to/from memory uint16_t MemLeToUint2byte(const uint8_t *data); From 78262139ece75b6fb0f29a0302f500f848830b1f Mon Sep 17 00:00:00 2001 From: Henry Gabryjelski Date: Mon, 14 Aug 2023 23:07:19 -0700 Subject: [PATCH 211/299] more const for `lfsampling` and `lfzx` --- armsrc/lfsampling.c | 2 +- armsrc/lfsampling.h | 2 +- armsrc/lfzx.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/armsrc/lfsampling.c b/armsrc/lfsampling.c index a56e013ee..6c131e7f3 100644 --- a/armsrc/lfsampling.c +++ b/armsrc/lfsampling.c @@ -94,7 +94,7 @@ void setDefaultSamplingConfig(void) { * @brief setSamplingConfig * @param sc */ -void setSamplingConfig(sample_config *sc) { +void setSamplingConfig(const sample_config *sc) { // decimation (1-8) how many bits of adc sample value to save if (sc->decimation > 0 && sc->decimation < 9) diff --git a/armsrc/lfsampling.h b/armsrc/lfsampling.h index 11c03ca74..8a8e40868 100644 --- a/armsrc/lfsampling.h +++ b/armsrc/lfsampling.h @@ -110,7 +110,7 @@ void LFSetupFPGAForADC(int divisor, bool reader_field); * @brief setSamplingConfig * @param sc */ -void setSamplingConfig(sample_config *sc); +void setSamplingConfig(const sample_config *sc); void setDefaultSamplingConfig(void); sample_config *getSamplingConfig(void); diff --git a/armsrc/lfzx.c b/armsrc/lfzx.c index be09247ca..f086c2d71 100644 --- a/armsrc/lfzx.c +++ b/armsrc/lfzx.c @@ -115,7 +115,7 @@ static void zx8211_setup_read(void) { WDT_HIT(); } -static void zx_send(uint8_t *cmd, uint8_t clen) { +static void zx_send(const uint8_t *cmd, uint8_t clen) { if (clen == 0) return; From 8ae97d10944a1fb5b50e78dfe4f5c9a80ae2f23b Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 15 Aug 2023 09:31:00 +0200 Subject: [PATCH 212/299] Vocabulary file became appended to itself Remove duplicated data --- client/src/pm3line_vocabulary.h | 813 -------------------------------- 1 file changed, 813 deletions(-) diff --git a/client/src/pm3line_vocabulary.h b/client/src/pm3line_vocabulary.h index 96fb95dc5..0f617ef0d 100644 --- a/client/src/pm3line_vocabulary.h +++ b/client/src/pm3line_vocabulary.h @@ -811,817 +811,4 @@ const static vocabulary_t vocabulary[] = { } #endif -#endif//----------------------------------------------------------------------------- -// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// See LICENSE.txt for the text of the license. -//----------------------------------------------------------------------------- -// readline auto complete utilities -//----------------------------------------------------------------------------- - -#ifndef PM3LINE_VOCABULORY_H__ -#define PM3LINE_VOCABULORY_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -typedef struct vocabulory_s { - bool offline; - const char *name; -} vocabulory_t; - -const static vocabulory_t vocabulory[] = { - { 1, "help" }, - { 0, "auto" }, - { 1, "clear" }, - { 1, "hints" }, - { 1, "msleep" }, - { 1, "rem" }, - { 1, "quit" }, - { 1, "exit" }, - { 1, "prefs help" }, - { 1, "prefs show" }, - { 1, "prefs get barmode" }, - { 1, "prefs get clientdebug" }, - { 1, "prefs get clientdelay" }, - { 1, "prefs get color" }, - { 1, "prefs get savepaths" }, - { 1, "prefs get emoji" }, - { 1, "prefs get hints" }, - { 1, "prefs get output" }, - { 1, "prefs get plotsliders" }, - { 1, "prefs set help" }, - { 1, "prefs set barmode" }, - { 1, "prefs set clientdebug" }, - { 1, "prefs set clientdelay" }, - { 1, "prefs set color" }, - { 1, "prefs set emoji" }, - { 1, "prefs set hints" }, - { 1, "prefs set savepaths" }, - { 1, "prefs set output" }, - { 1, "prefs set plotsliders" }, - { 1, "analyse help" }, - { 1, "analyse lcr" }, - { 1, "analyse crc" }, - { 1, "analyse chksum" }, - { 1, "analyse dates" }, - { 1, "analyse lfsr" }, - { 1, "analyse a" }, - { 1, "analyse nuid" }, - { 1, "analyse demodbuff" }, - { 1, "analyse freq" }, - { 1, "analyse foo" }, - { 1, "analyse units" }, - { 1, "data help" }, - { 1, "data biphaserawdecode" }, - { 1, "data detectclock" }, - { 1, "data fsktonrz" }, - { 1, "data manrawdecode" }, - { 1, "data modulation" }, - { 1, "data rawdemod" }, - { 1, "data askedgedetect" }, - { 1, "data autocorr" }, - { 1, "data dirthreshold" }, - { 1, "data decimate" }, - { 1, "data envelope" }, - { 1, "data undecimate" }, - { 1, "data hide" }, - { 1, "data hpf" }, - { 1, "data iir" }, - { 1, "data grid" }, - { 1, "data ltrim" }, - { 1, "data mtrim" }, - { 1, "data norm" }, - { 1, "data plot" }, - { 1, "data cthreshold" }, - { 1, "data rtrim" }, - { 1, "data setgraphmarkers" }, - { 1, "data shiftgraphzero" }, - { 1, "data timescale" }, - { 1, "data zerocrossings" }, - { 1, "data convertbitstream" }, - { 1, "data getbitstream" }, - { 1, "data asn1" }, - { 1, "data atr" }, - { 1, "data bin2hex" }, - { 0, "data bitsamples" }, - { 1, "data clear" }, - { 1, "data diff" }, - { 0, "data hexsamples" }, - { 1, "data hex2bin" }, - { 1, "data load" }, - { 1, "data num" }, - { 1, "data print" }, - { 0, "data samples" }, - { 1, "data save" }, - { 1, "data setdebugmode" }, - { 0, "data tune" }, - { 1, "emv help" }, - { 1, "emv list" }, - { 1, "emv test" }, - { 0, "emv challenge" }, - { 0, "emv exec" }, - { 0, "emv genac" }, - { 0, "emv gpo" }, - { 0, "emv intauth" }, - { 0, "emv pse" }, - { 0, "emv reader" }, - { 0, "emv readrec" }, - { 0, "emv roca" }, - { 0, "emv scan" }, - { 0, "emv search" }, - { 0, "emv select" }, - { 1, "hf help" }, - { 1, "hf list" }, - { 0, "hf plot" }, - { 0, "hf tune" }, - { 1, "hf search" }, - { 0, "hf sniff" }, - { 1, "hf 14a help" }, - { 1, "hf 14a list" }, - { 0, "hf 14a antifuzz" }, - { 0, "hf 14a config" }, - { 0, "hf 14a cuids" }, - { 0, "hf 14a info" }, - { 0, "hf 14a sim" }, - { 0, "hf 14a sniff" }, - { 0, "hf 14a raw" }, - { 0, "hf 14a reader" }, - { 0, "hf 14a apdu" }, - { 0, "hf 14a apdufind" }, - { 0, "hf 14a chaining" }, - { 0, "hf 14a ndefformat" }, - { 0, "hf 14a ndefread" }, - { 0, "hf 14a ndefwrite" }, - { 1, "hf 14b help" }, - { 0, "hf 14b apdu" }, - { 0, "hf 14b dump" }, - { 0, "hf 14b info" }, - { 1, "hf 14b list" }, - { 0, "hf 14b ndefread" }, - { 0, "hf 14b raw" }, - { 0, "hf 14b reader" }, - { 0, "hf 14b sim" }, - { 0, "hf 14b sniff" }, - { 0, "hf 14b rdbl" }, - { 0, "hf 14b sriwrite" }, - { 1, "hf 14b view" }, - { 1, "hf 15 help" }, - { 1, "hf 15 list" }, - { 1, "hf 15 demod" }, - { 0, "hf 15 dump" }, - { 0, "hf 15 info" }, - { 0, "hf 15 sniff" }, - { 0, "hf 15 raw" }, - { 0, "hf 15 rdbl" }, - { 0, "hf 15 rdmulti" }, - { 0, "hf 15 reader" }, - { 0, "hf 15 restore" }, - { 0, "hf 15 samples" }, - { 1, "hf 15 view" }, - { 0, "hf 15 wrbl" }, - { 0, "hf 15 sim" }, - { 0, "hf 15 eload" }, - { 0, "hf 15 esave" }, - { 0, "hf 15 eview" }, - { 0, "hf 15 slixwritepwd" }, - { 0, "hf 15 slixeasdisable" }, - { 0, "hf 15 slixeasenable" }, - { 0, "hf 15 slixprivacydisable" }, - { 0, "hf 15 slixprivacyenable" }, - { 0, "hf 15 passprotectafi" }, - { 0, "hf 15 passprotecteas" }, - { 0, "hf 15 findafi" }, - { 0, "hf 15 writeafi" }, - { 0, "hf 15 writedsfid" }, - { 0, "hf 15 csetuid" }, - { 1, "hf cipurse help" }, - { 0, "hf cipurse info" }, - { 0, "hf cipurse select" }, - { 0, "hf cipurse auth" }, - { 0, "hf cipurse read" }, - { 0, "hf cipurse write" }, - { 0, "hf cipurse aread" }, - { 0, "hf cipurse awrite" }, - { 0, "hf cipurse formatall" }, - { 0, "hf cipurse create" }, - { 0, "hf cipurse delete" }, - { 0, "hf cipurse updkey" }, - { 0, "hf cipurse updakey" }, - { 0, "hf cipurse default" }, - { 1, "hf cipurse test" }, - { 1, "hf epa help" }, - { 0, "hf epa cnonces" }, - { 0, "hf epa replay" }, - { 0, "hf epa sim" }, - { 1, "hf emrtd help" }, - { 0, "hf emrtd dump" }, - { 1, "hf emrtd info" }, - { 1, "hf emrtd list" }, - { 1, "hf felica help" }, - { 1, "hf felica list" }, - { 0, "hf felica reader" }, - { 0, "hf felica info" }, - { 0, "hf felica sniff" }, - { 0, "hf felica raw" }, - { 0, "hf felica rdbl" }, - { 0, "hf felica wrbl" }, - { 0, "hf felica rqservice" }, - { 0, "hf felica rqresponse" }, - { 0, "hf felica scsvcode" }, - { 0, "hf felica rqsyscode" }, - { 0, "hf felica auth1" }, - { 0, "hf felica auth2" }, - { 0, "hf felica rqspecver" }, - { 0, "hf felica resetmode" }, - { 0, "hf felica litesim" }, - { 0, "hf felica litedump" }, - { 1, "hf fido help" }, - { 1, "hf fido list" }, - { 0, "hf fido info" }, - { 0, "hf fido reg" }, - { 0, "hf fido auth" }, - { 0, "hf fido make" }, - { 0, "hf fido assert" }, - { 1, "hf fudan help" }, - { 0, "hf fudan reader" }, - { 0, "hf fudan dump" }, - { 0, "hf fudan rdbl" }, - { 1, "hf fudan view" }, - { 0, "hf fudan wrbl" }, - { 1, "hf gallagher help" }, - { 0, "hf gallagher reader" }, - { 0, "hf gallagher clone" }, - { 0, "hf gallagher delete" }, - { 1, "hf gallagher diversifykey" }, - { 1, "hf gallagher decode" }, - { 1, "hf ksx6924 help" }, - { 0, "hf ksx6924 select" }, - { 0, "hf ksx6924 info" }, - { 0, "hf ksx6924 balance" }, - { 0, "hf ksx6924 init" }, - { 0, "hf ksx6924 prec" }, - { 1, "hf jooki help" }, - { 0, "hf jooki clone" }, - { 1, "hf jooki decode" }, - { 1, "hf jooki encode" }, - { 0, "hf jooki sim" }, - { 1, "hf iclass help" }, - { 1, "hf iclass list" }, - { 0, "hf iclass dump" }, - { 1, "hf iclass info" }, - { 0, "hf iclass rdbl" }, - { 0, "hf iclass reader" }, - { 0, "hf iclass restore" }, - { 0, "hf iclass sniff" }, - { 1, "hf iclass view" }, - { 0, "hf iclass wrbl" }, - { 0, "hf iclass chk" }, - { 1, "hf iclass loclass" }, - { 1, "hf iclass lookup" }, - { 0, "hf iclass sim" }, - { 0, "hf iclass eload" }, - { 0, "hf iclass esave" }, - { 0, "hf iclass eview" }, - { 1, "hf iclass configcard" }, - { 1, "hf iclass calcnewkey" }, - { 1, "hf iclass encode" }, - { 1, "hf iclass encrypt" }, - { 1, "hf iclass decrypt" }, - { 1, "hf iclass managekeys" }, - { 1, "hf iclass permutekey" }, - { 0, "hf iclass sam" }, - { 1, "hf legic help" }, - { 0, "hf legic dump" }, - { 0, "hf legic info" }, - { 1, "hf legic list" }, - { 0, "hf legic rdbl" }, - { 0, "hf legic reader" }, - { 0, "hf legic restore" }, - { 0, "hf legic wipe" }, - { 0, "hf legic wrbl" }, - { 0, "hf legic sim" }, - { 0, "hf legic eload" }, - { 0, "hf legic esave" }, - { 0, "hf legic eview" }, - { 0, "hf legic einfo" }, - { 1, "hf legic crc" }, - { 1, "hf legic view" }, - { 1, "hf lto help" }, - { 0, "hf lto dump" }, - { 0, "hf lto info" }, - { 1, "hf lto list" }, - { 0, "hf lto rdbl" }, - { 0, "hf lto reader" }, - { 0, "hf lto restore" }, - { 0, "hf lto wrbl" }, - { 1, "hf mf help" }, - { 1, "hf mf list" }, - { 0, "hf mf darkside" }, - { 0, "hf mf nested" }, - { 1, "hf mf hardnested" }, - { 0, "hf mf staticnested" }, - { 0, "hf mf autopwn" }, - { 0, "hf mf nack" }, - { 0, "hf mf chk" }, - { 0, "hf mf fchk" }, - { 1, "hf mf decrypt" }, - { 0, "hf mf supercard" }, - { 0, "hf mf auth4" }, - { 1, "hf mf acl" }, - { 0, "hf mf dump" }, - { 1, "hf mf mad" }, - { 0, "hf mf personalize" }, - { 0, "hf mf rdbl" }, - { 0, "hf mf rdsc" }, - { 0, "hf mf restore" }, - { 0, "hf mf setmod" }, - { 1, "hf mf value" }, - { 1, "hf mf view" }, - { 0, "hf mf wipe" }, - { 0, "hf mf wrbl" }, - { 0, "hf mf sim" }, - { 0, "hf mf ecfill" }, - { 0, "hf mf eclr" }, - { 0, "hf mf egetblk" }, - { 0, "hf mf egetsc" }, - { 0, "hf mf ekeyprn" }, - { 0, "hf mf eload" }, - { 0, "hf mf esave" }, - { 0, "hf mf esetblk" }, - { 0, "hf mf eview" }, - { 0, "hf mf cgetblk" }, - { 0, "hf mf cgetsc" }, - { 0, "hf mf cload" }, - { 0, "hf mf csave" }, - { 0, "hf mf csetblk" }, - { 0, "hf mf csetuid" }, - { 0, "hf mf cview" }, - { 0, "hf mf cwipe" }, - { 0, "hf mf gen3uid" }, - { 0, "hf mf gen3blk" }, - { 0, "hf mf gen3freeze" }, - { 0, "hf mf ggetblk" }, - { 0, "hf mf gload" }, - { 0, "hf mf gsave" }, - { 0, "hf mf gsetblk" }, - { 0, "hf mf gview" }, - { 0, "hf mf gdmcfg" }, - { 0, "hf mf gdmsetcfg" }, - { 0, "hf mf gdmsetblk" }, - { 0, "hf mf ndefformat" }, - { 0, "hf mf ndefread" }, - { 0, "hf mf ndefwrite" }, - { 1, "hf mfp help" }, - { 1, "hf mfp list" }, - { 0, "hf mfp auth" }, - { 0, "hf mfp chk" }, - { 0, "hf mfp dump" }, - { 0, "hf mfp info" }, - { 0, "hf mfp mad" }, - { 0, "hf mfp rdbl" }, - { 0, "hf mfp rdsc" }, - { 0, "hf mfp wrbl" }, - { 0, "hf mfp commitp" }, - { 0, "hf mfp initp" }, - { 0, "hf mfp wrp" }, - { 0, "hf mfp ndefformat" }, - { 0, "hf mfp ndefread" }, - { 0, "hf mfp ndefwrite" }, - { 1, "hf mfu help" }, - { 1, "hf mfu list" }, - { 1, "hf mfu keygen" }, - { 1, "hf mfu pwdgen" }, - { 0, "hf mfu otptear" }, - { 0, "hf mfu cauth" }, - { 0, "hf mfu dump" }, - { 0, "hf mfu info" }, - { 0, "hf mfu ndefread" }, - { 0, "hf mfu rdbl" }, - { 0, "hf mfu restore" }, - { 1, "hf mfu view" }, - { 0, "hf mfu wrbl" }, - { 0, "hf mfu tamper" }, - { 0, "hf mfu eload" }, - { 0, "hf mfu esave" }, - { 0, "hf mfu eview" }, - { 0, "hf mfu sim" }, - { 0, "hf mfu setpwd" }, - { 0, "hf mfu setuid" }, - { 1, "hf mfdes help" }, - { 0, "hf mfdes info" }, - { 0, "hf mfdes getuid" }, - { 0, "hf mfdes default" }, - { 0, "hf mfdes auth" }, - { 0, "hf mfdes chk" }, - { 0, "hf mfdes detect" }, - { 0, "hf mfdes freemem" }, - { 0, "hf mfdes setconfig" }, - { 0, "hf mfdes formatpicc" }, - { 1, "hf mfdes list" }, - { 0, "hf mfdes mad" }, - { 0, "hf mfdes lsapp" }, - { 0, "hf mfdes getaids" }, - { 0, "hf mfdes getappnames" }, - { 0, "hf mfdes bruteaid" }, - { 0, "hf mfdes createapp" }, - { 0, "hf mfdes deleteapp" }, - { 0, "hf mfdes selectapp" }, - { 0, "hf mfdes changekey" }, - { 0, "hf mfdes chkeysettings" }, - { 0, "hf mfdes getkeysettings" }, - { 0, "hf mfdes getkeyversions" }, - { 0, "hf mfdes getfileids" }, - { 0, "hf mfdes getfileisoids" }, - { 0, "hf mfdes lsfiles" }, - { 0, "hf mfdes dump" }, - { 0, "hf mfdes createfile" }, - { 0, "hf mfdes createvaluefile" }, - { 0, "hf mfdes createrecordfile" }, - { 0, "hf mfdes createmacfile" }, - { 0, "hf mfdes deletefile" }, - { 0, "hf mfdes getfilesettings" }, - { 0, "hf mfdes chfilesettings" }, - { 0, "hf mfdes read" }, - { 0, "hf mfdes write" }, - { 0, "hf mfdes value" }, - { 0, "hf mfdes clearrecfile" }, - { 1, "hf mfdes test" }, - { 1, "hf ntag424 help" }, - { 0, "hf ntag424 info" }, - { 0, "hf ntag424 sdm" }, - { 1, "hf ntag424 view" }, - { 1, "hf seos help" }, - { 0, "hf seos info" }, - { 1, "hf seos list" }, - { 1, "hf st25ta help" }, - { 0, "hf st25ta info" }, - { 1, "hf st25ta list" }, - { 1, "hf st25ta ndefread" }, - { 0, "hf st25ta protect" }, - { 0, "hf st25ta pwd" }, - { 0, "hf st25ta sim" }, - { 1, "hf tesla help" }, - { 0, "hf tesla info" }, - { 1, "hf tesla list" }, - { 1, "hf texkom help" }, - { 0, "hf texkom reader" }, - { 0, "hf texkom sim" }, - { 1, "hf thinfilm help" }, - { 0, "hf thinfilm info" }, - { 1, "hf thinfilm list" }, - { 0, "hf thinfilm sim" }, - { 1, "hf topaz help" }, - { 1, "hf topaz list" }, - { 0, "hf topaz dump" }, - { 0, "hf topaz info" }, - { 0, "hf topaz raw" }, - { 0, "hf topaz rdbl" }, - { 0, "hf topaz reader" }, - { 0, "hf topaz sim" }, - { 0, "hf topaz sniff" }, - { 1, "hf topaz view" }, - { 0, "hf topaz wrbl" }, - { 1, "hf vas help" }, - { 0, "hf vas reader" }, - { 1, "hf vas decrypt" }, - { 1, "hf waveshare help" }, - { 0, "hf waveshare loadbmp" }, - { 1, "hf xerox help" }, - { 0, "hf xerox info" }, - { 0, "hf xerox reader" }, - { 0, "hf xerox dump" }, - { 1, "hw help" }, - { 0, "hw break" }, - { 1, "hw connect" }, - { 0, "hw dbg" }, - { 0, "hw detectreader" }, - { 0, "hw fpgaoff" }, - { 0, "hw lcd" }, - { 0, "hw lcdreset" }, - { 0, "hw ping" }, - { 0, "hw readmem" }, - { 0, "hw reset" }, - { 0, "hw setlfdivisor" }, - { 0, "hw setmux" }, - { 0, "hw standalone" }, - { 0, "hw status" }, - { 0, "hw tearoff" }, - { 0, "hw tia" }, - { 1, "hw timeout" }, - { 0, "hw tune" }, - { 1, "hw version" }, - { 1, "lf help" }, - { 0, "lf config" }, - { 0, "lf cmdread" }, - { 0, "lf read" }, - { 1, "lf search" }, - { 0, "lf sim" }, - { 0, "lf simask" }, - { 0, "lf simfsk" }, - { 0, "lf simpsk" }, - { 0, "lf simbidir" }, - { 0, "lf sniff" }, - { 0, "lf tune" }, - { 1, "lf awid help" }, - { 1, "lf awid demod" }, - { 0, "lf awid reader" }, - { 0, "lf awid clone" }, - { 0, "lf awid sim" }, - { 0, "lf awid brute" }, - { 0, "lf awid watch" }, - { 1, "lf cotag help" }, - { 1, "lf cotag demod" }, - { 0, "lf cotag reader" }, - { 1, "lf destron help" }, - { 1, "lf destron demod" }, - { 0, "lf destron reader" }, - { 0, "lf destron clone" }, - { 0, "lf destron sim" }, - { 1, "lf em help" }, - { 1, "lf em 410x help" }, - { 1, "lf em 410x demod" }, - { 0, "lf em 410x reader" }, - { 0, "lf em 410x sim" }, - { 0, "lf em 410x brute" }, - { 0, "lf em 410x watch" }, - { 0, "lf em 410x spoof" }, - { 0, "lf em 410x clone" }, - { 1, "lf em 4x05 help" }, - { 0, "lf em 4x05 brute" }, - { 0, "lf em 4x05 chk" }, - { 1, "lf em 4x05 demod" }, - { 0, "lf em 4x05 dump" }, - { 0, "lf em 4x05 info" }, - { 0, "lf em 4x05 read" }, - { 1, "lf em 4x05 sniff" }, - { 0, "lf em 4x05 unlock" }, - { 0, "lf em 4x05 wipe" }, - { 0, "lf em 4x05 write" }, - { 1, "lf em 4x50 help" }, - { 0, "lf em 4x50 brute" }, - { 0, "lf em 4x50 chk" }, - { 0, "lf em 4x50 dump" }, - { 0, "lf em 4x50 info" }, - { 0, "lf em 4x50 login" }, - { 0, "lf em 4x50 rdbl" }, - { 0, "lf em 4x50 reader" }, - { 0, "lf em 4x50 restore" }, - { 0, "lf em 4x50 wrbl" }, - { 0, "lf em 4x50 wrpwd" }, - { 0, "lf em 4x50 wipe" }, - { 0, "lf em 4x50 eload" }, - { 0, "lf em 4x50 esave" }, - { 0, "lf em 4x50 eview" }, - { 0, "lf em 4x50 sim" }, - { 1, "lf em 4x70 help" }, - { 0, "lf em 4x70 brute" }, - { 0, "lf em 4x70 info" }, - { 0, "lf em 4x70 write" }, - { 0, "lf em 4x70 unlock" }, - { 0, "lf em 4x70 auth" }, - { 0, "lf em 4x70 writepin" }, - { 0, "lf em 4x70 writekey" }, - { 1, "lf fdxb help" }, - { 1, "lf fdxb demod" }, - { 0, "lf fdxb reader" }, - { 0, "lf fdxb clone" }, - { 0, "lf fdxb sim" }, - { 1, "lf gallagher help" }, - { 1, "lf gallagher demod" }, - { 0, "lf gallagher reader" }, - { 0, "lf gallagher clone" }, - { 0, "lf gallagher sim" }, - { 1, "lf gproxii help" }, - { 1, "lf gproxii demod" }, - { 0, "lf gproxii reader" }, - { 0, "lf gproxii clone" }, - { 0, "lf gproxii sim" }, - { 1, "lf hid help" }, - { 1, "lf hid demod" }, - { 0, "lf hid reader" }, - { 0, "lf hid clone" }, - { 0, "lf hid sim" }, - { 0, "lf hid brute" }, - { 0, "lf hid watch" }, - { 1, "lf hitag help" }, - { 1, "lf hitag list" }, - { 0, "lf hitag info" }, - { 0, "lf hitag dump" }, - { 0, "lf hitag read" }, - { 0, "lf hitag wrbl" }, - { 0, "lf hitag sniff" }, - { 0, "lf hitag cc" }, - { 0, "lf hitag ta" }, - { 0, "lf hitag eload" }, - { 0, "lf hitag sim" }, - { 1, "lf idteck help" }, - { 1, "lf idteck demod" }, - { 0, "lf idteck reader" }, - { 0, "lf idteck clone" }, - { 0, "lf idteck sim" }, - { 1, "lf indala help" }, - { 0, "lf indala brute" }, - { 1, "lf indala demod" }, - { 1, "lf indala altdemod" }, - { 0, "lf indala reader" }, - { 0, "lf indala clone" }, - { 0, "lf indala sim" }, - { 1, "lf io help" }, - { 1, "lf io demod" }, - { 0, "lf io reader" }, - { 0, "lf io clone" }, - { 0, "lf io sim" }, - { 0, "lf io watch" }, - { 1, "lf jablotron help" }, - { 1, "lf jablotron demod" }, - { 0, "lf jablotron reader" }, - { 0, "lf jablotron clone" }, - { 0, "lf jablotron sim" }, - { 1, "lf keri help" }, - { 1, "lf keri demod" }, - { 0, "lf keri reader" }, - { 0, "lf keri clone" }, - { 0, "lf keri sim" }, - { 1, "lf motorola help" }, - { 1, "lf motorola demod" }, - { 0, "lf motorola reader" }, - { 0, "lf motorola clone" }, - { 0, "lf motorola sim" }, - { 1, "lf nedap help" }, - { 1, "lf nedap demod" }, - { 0, "lf nedap reader" }, - { 0, "lf nedap clone" }, - { 0, "lf nedap sim" }, - { 1, "lf nexwatch help" }, - { 1, "lf nexwatch demod" }, - { 0, "lf nexwatch reader" }, - { 0, "lf nexwatch clone" }, - { 0, "lf nexwatch sim" }, - { 1, "lf noralsy help" }, - { 1, "lf noralsy demod" }, - { 0, "lf noralsy reader" }, - { 0, "lf noralsy clone" }, - { 0, "lf noralsy sim" }, - { 1, "lf pac help" }, - { 1, "lf pac demod" }, - { 0, "lf pac reader" }, - { 0, "lf pac clone" }, - { 0, "lf pac sim" }, - { 1, "lf paradox help" }, - { 1, "lf paradox demod" }, - { 0, "lf paradox reader" }, - { 0, "lf paradox clone" }, - { 0, "lf paradox sim" }, - { 1, "lf pcf7931 help" }, - { 0, "lf pcf7931 reader" }, - { 0, "lf pcf7931 write" }, - { 1, "lf pcf7931 config" }, - { 1, "lf presco help" }, - { 1, "lf presco demod" }, - { 0, "lf presco reader" }, - { 0, "lf presco clone" }, - { 0, "lf presco sim" }, - { 1, "lf pyramid help" }, - { 1, "lf pyramid demod" }, - { 0, "lf pyramid reader" }, - { 0, "lf pyramid clone" }, - { 0, "lf pyramid sim" }, - { 1, "lf securakey help" }, - { 1, "lf securakey demod" }, - { 0, "lf securakey reader" }, - { 0, "lf securakey clone" }, - { 0, "lf securakey sim" }, - { 1, "lf ti help" }, - { 1, "lf ti demod" }, - { 0, "lf ti reader" }, - { 0, "lf ti write" }, - { 1, "lf t55xx help" }, - { 0, "lf t55xx clonehelp" }, - { 1, "lf t55xx config" }, - { 0, "lf t55xx dangerraw" }, - { 1, "lf t55xx detect" }, - { 0, "lf t55xx deviceconfig" }, - { 0, "lf t55xx dump" }, - { 1, "lf t55xx info" }, - { 0, "lf t55xx p1detect" }, - { 0, "lf t55xx read" }, - { 0, "lf t55xx resetread" }, - { 0, "lf t55xx restore" }, - { 1, "lf t55xx trace" }, - { 0, "lf t55xx wakeup" }, - { 0, "lf t55xx write" }, - { 0, "lf t55xx bruteforce" }, - { 0, "lf t55xx chk" }, - { 0, "lf t55xx protect" }, - { 0, "lf t55xx recoverpw" }, - { 1, "lf t55xx sniff" }, - { 0, "lf t55xx special" }, - { 0, "lf t55xx wipe" }, - { 1, "lf viking help" }, - { 1, "lf viking demod" }, - { 0, "lf viking reader" }, - { 0, "lf viking clone" }, - { 0, "lf viking sim" }, - { 1, "lf visa2000 help" }, - { 1, "lf visa2000 demod" }, - { 0, "lf visa2000 reader" }, - { 0, "lf visa2000 clone" }, - { 0, "lf visa2000 sim" }, - { 1, "mem help" }, - { 0, "mem baudrate" }, - { 0, "mem dump" }, - { 0, "mem info" }, - { 0, "mem load" }, - { 0, "mem wipe" }, - { 1, "mem spiffs help" }, - { 0, "mem spiffs copy" }, - { 0, "mem spiffs check" }, - { 0, "mem spiffs dump" }, - { 0, "mem spiffs info" }, - { 0, "mem spiffs mount" }, - { 0, "mem spiffs remove" }, - { 0, "mem spiffs rename" }, - { 0, "mem spiffs test" }, - { 0, "mem spiffs tree" }, - { 0, "mem spiffs unmount" }, - { 0, "mem spiffs upload" }, - { 0, "mem spiffs view" }, - { 0, "mem spiffs wipe" }, - { 1, "nfc help" }, - { 1, "nfc decode" }, - { 0, "nfc type1 read" }, - { 1, "nfc type1 help" }, - { 0, "nfc type2 read" }, - { 1, "nfc type2 help" }, - { 0, "nfc type4a format" }, - { 0, "nfc type4a read" }, - { 0, "nfc type4a write" }, - { 0, "nfc type4a st25taread" }, - { 1, "nfc type4a help" }, - { 0, "nfc type4b read" }, - { 1, "nfc type4b help" }, - { 0, "nfc mf cformat" }, - { 0, "nfc mf cread" }, - { 0, "nfc mf cwrite" }, - { 0, "nfc mf pread" }, - { 1, "nfc mf help" }, - { 0, "nfc barcode read" }, - { 0, "nfc barcode sim" }, - { 1, "nfc barcode help" }, - { 1, "piv help" }, - { 0, "piv select" }, - { 0, "piv getdata" }, - { 0, "piv authsign" }, - { 0, "piv scan" }, - { 1, "piv list" }, - { 1, "smart help" }, - { 1, "smart list" }, - { 0, "smart info" }, - { 0, "smart reader" }, - { 0, "smart raw" }, - { 1, "smart upgrade" }, - { 0, "smart setclock" }, - { 0, "smart brute" }, - { 1, "script help" }, - { 1, "script list" }, - { 1, "script run" }, - { 1, "trace help" }, - { 1, "trace extract" }, - { 1, "trace list" }, - { 1, "trace load" }, - { 1, "trace save" }, - { 1, "usart help" }, - { 0, "usart btpin" }, - { 0, "usart btfactory" }, - { 0, "usart tx" }, - { 0, "usart rx" }, - { 0, "usart txrx" }, - { 0, "usart txhex" }, - { 0, "usart rxhex" }, - { 0, "usart config" }, - { 1, "wiegand help" }, - { 1, "wiegand list" }, - { 1, "wiegand encode" }, - { 1, "wiegand decode" }, - {0, NULL} -}; - -#ifdef __cplusplus -} -#endif - #endif \ No newline at end of file From 9a70bf1aecc9c7780a0e757442bd81eff40363e7 Mon Sep 17 00:00:00 2001 From: coderxian Date: Tue, 15 Aug 2023 17:16:17 -0500 Subject: [PATCH 213/299] Fixes issue 2076 --- client/src/cmdanalyse.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdanalyse.c b/client/src/cmdanalyse.c index bab54f3da..d1e14d694 100644 --- a/client/src/cmdanalyse.c +++ b/client/src/cmdanalyse.c @@ -1117,7 +1117,7 @@ static int CmdAnalyseUnits(const char *Cmd) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "ETU to US conversions"); - float test_us = ETU_TO_US(1); + double test_us = ETU_TO_US(1); PrintAndLogEx(INFO, " 1 ETU = %3.2f US (expect 9.44) %s", test_us, (test_us == 9.44) ? _GREEN_("ok") : _RED_("fail")); test_us = ETU_TO_US(10); PrintAndLogEx(INFO, " 10 ETU = %4.2f US (expect 94.40) %s", test_us, (test_us == 94.40) ? _GREEN_("ok") : _RED_("fail")); From dfabad37d95dbd4c1a82fefbf41358380cf94c0d Mon Sep 17 00:00:00 2001 From: Roman D Date: Thu, 17 Aug 2023 12:41:34 +0200 Subject: [PATCH 214/299] Configurable number of CPU cores. --- client/src/proxmark3.c | 17 +++++++++++++++++ client/src/util.c | 6 ++++++ client/src/util.h | 1 + 3 files changed, 24 insertions(+) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index f6c25a9eb..26f4a5698 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -581,6 +581,7 @@ static void show_help(bool showFullHelp, char *exec_name) { PrintAndLogEx(NORMAL, " --unlock-bootloader Enable flashing of bootloader area *DANGEROUS* (need --flash)"); PrintAndLogEx(NORMAL, " --force Enable flashing even if firmware seems to not match client version"); PrintAndLogEx(NORMAL, " --image image to flash. Can be specified several times."); + PrintAndLogEx(NORMAL, " --ncpu override number of CPU cores"); PrintAndLogEx(NORMAL, "\nExamples:"); PrintAndLogEx(NORMAL, "\n to run Proxmark3 client:\n"); PrintAndLogEx(NORMAL, " %s "SERIAL_PORT_EXAMPLE_H" -- runs the pm3 client", exec_name); @@ -996,6 +997,22 @@ int main(int argc, char *argv[]) { continue; } + if (strcmp(argv[i], "--ncpu") == 0) { + if (i + 1 == argc) { + PrintAndLogEx(ERR, _RED_("ERROR:") " missing CPU number specification after --ncpu\n"); + show_help(false, exec_name); + return 1; + } + long int ncpus = strtol(argv[i + 1], NULL, 10); + if (ncpus < 0 || ncpus >= INT_MAX) { + PrintAndLogEx(ERR, _RED_("ERROR:") " invalid number of CPU cores: --ncpu " _YELLOW_("%s") "\n", argv[i + 1]); + return 1; + } + g_numCPUs = ncpus; + i++; + continue; + } + // We got an unknown parameter PrintAndLogEx(ERR, _RED_("ERROR:") " invalid parameter: " _YELLOW_("%s") "\n", argv[i]); show_help(false, exec_name); diff --git a/client/src/util.c b/client/src/util.c index 51408a524..150b042a5 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -40,6 +40,8 @@ uint8_t g_debugMode = 0; uint8_t g_printAndLog = PRINTANDLOG_PRINT | PRINTANDLOG_LOG; // global client tell if a pending prompt is present bool g_pendingPrompt = false; +// global CPU core count override +int g_numCPUs = 0; #ifdef _WIN32 #include @@ -1079,6 +1081,10 @@ uint64_t HornerScheme(uint64_t num, uint64_t divider, uint64_t factor) { // determine number of logical CPU cores (use for multithreaded functions) int num_CPUs(void) { + if (g_numCPUs > 0) { + return g_numCPUs; + } + #if defined(_WIN32) #include SYSTEM_INFO sysinfo; diff --git a/client/src/util.h b/client/src/util.h index 4dab9ae06..0712d8d18 100644 --- a/client/src/util.h +++ b/client/src/util.h @@ -32,6 +32,7 @@ extern uint8_t g_debugMode; extern uint8_t g_printAndLog; extern bool g_pendingPrompt; +extern int g_numCPUs; #define PRINTANDLOG_PRINT 1 #define PRINTANDLOG_LOG 2 From 20f89013683c923da331296481acb00022dedcec Mon Sep 17 00:00:00 2001 From: Roman D Date: Thu, 17 Aug 2023 12:43:08 +0200 Subject: [PATCH 215/299] Fix macports Makefile configuration. --- client/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/Makefile b/client/Makefile index 0444b5932..b63fdf329 100644 --- a/client/Makefile +++ b/client/Makefile @@ -40,7 +40,7 @@ ifeq ($(USE_BREW),1) PKG_CONFIG_ENV := PKG_CONFIG_PATH=$(BREW_PREFIX)/lib/pkgconfig:$(BREW_PREFIX)/opt/qt/lib/pkgconfig:$(BREW_PREFIX)/opt/qt5/lib/pkgconfig endif -ifdef ($(USE_MACPORTS),1) +ifeq ($(USE_MACPORTS),1) INCLUDES += -I$(MACPORTS_PREFIX)/include LDLIBS += -L$(MACPORTS_PREFIX)/lib PKG_CONFIG_ENV := PKG_CONFIG_PATH=$(MACPORTS_PREFIX)/lib/pkgconfig From 44888f601555fb36851e3fdb2cf285b757c9d52a Mon Sep 17 00:00:00 2001 From: Adam Jon Foster Date: Fri, 18 Aug 2023 12:55:56 +0800 Subject: [PATCH 216/299] Update mfc_default_keys.dic Added 4 keys extracted from old dumps on Edith Cowan University Smart rider cards Signed-off-by: Adam Jon Foster --- client/dictionaries/mfc_default_keys.dic | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index a2ae9655e..2e9be89f3 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -2179,4 +2179,8 @@ D201DBB6AB6E # # Data from Discord, seems to be related to ASSA 427553754D47 - +# Keys found on Edith Cowan University Smart Riders +9A677289564D +186C59E6AFC9 +DDDAA35A9749 +9D0D0A829F49 From b17a733bdb185bd664028afcc22a669f406fa225 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 21 Aug 2023 12:36:02 +0200 Subject: [PATCH 217/299] modified some output and made sure a local state is used for multithreaded. Also added the mod fix from Doegox in sma.cpp --- CHANGELOG.md | 1 + tools/cryptorf/sma.cpp | 18 +++++++++++------- tools/cryptorf/sma_multi.cpp | 33 ++++++++++++++++++++++----------- 3 files changed, 34 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 30854d631..0080cf27a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fixed `cryptorf/sma_multi` - local state used in multithread (@iceman1001) - Changed `fpga_compress` - better deallocation of memory and closing of file handles (@iceman1001) - Changed `hf search` - less swaps of fpga images on device side (@iceman1001) - Changed `mkversion.sh` - now regenerates version_pm3.c (and consequently the binaries) only when needed (@doegox) diff --git a/tools/cryptorf/sma.cpp b/tools/cryptorf/sma.cpp index d15b0e6a2..2c0044388 100644 --- a/tools/cryptorf/sma.cpp +++ b/tools/cryptorf/sma.cpp @@ -159,6 +159,10 @@ void print_cs(const char *text, pcs s) { } static inline uint8_t mod(uint8_t a, uint8_t m) { + if (m == 0) { + return 0; // Actually, divide by zero error + } + // Just return the input when this is less or equal than the modular value if (a < m) return a; @@ -754,7 +758,7 @@ int main(int argc, const char *argv[]) { Q[pos] = rand(); } sm_auth(Gc, Ci, Q, Ch, Ci_1, &ostate); - printf(" Gc: "); + printf(" Gc... "); print_bytes(Gc, 8); } else { sscanf(argv[1], "%016" SCNx64, &nCi); @@ -765,7 +769,7 @@ int main(int argc, const char *argv[]) { num_to_bytes(nCh, 8, Ch); sscanf(argv[4], "%016" SCNx64, &nCi_1); num_to_bytes(nCi_1, 8, Ci_1); - printf(" Gc: unknown\n"); + printf(" Gc... unknown\n"); } for (pos = 0; pos < 8; pos++) { @@ -773,16 +777,16 @@ int main(int argc, const char *argv[]) { ks[(2 * pos) + 1] = Ch[pos]; } - printf(" Ci: "); + printf(" Ci... "); print_bytes(Ci, 8); - printf(" Q: "); + printf(" Q... "); print_bytes(Q, 8); - printf(" Ch: "); + printf(" Ch... "); print_bytes(Ch, 8); - printf("Ci+1: "); + printf("Ci+1... "); print_bytes(Ci_1, 8); printf("\n"); - printf(" Ks: "); + printf(" Ks... "); print_bytes(ks, 16); printf("\n"); diff --git a/tools/cryptorf/sma_multi.cpp b/tools/cryptorf/sma_multi.cpp index 50b962248..b57f85ef9 100644 --- a/tools/cryptorf/sma_multi.cpp +++ b/tools/cryptorf/sma_multi.cpp @@ -168,6 +168,7 @@ static inline uint8_t mod(uint8_t a, uint8_t m) { if (m == 0) { return 0; // Actually, divide by zero error } + // Just return the input when this is less or equal than the modular value if (a < m) return a; @@ -935,9 +936,19 @@ static void ice_compare( uint8_t *Ch, uint8_t *Ci_1 ) { - uint8_t Gc_chk[8]; - uint8_t Ch_chk[ 8]; - uint8_t Ci_1_chk[ 8]; + uint8_t Gc_chk[8] = {0}; + uint8_t Ch_chk[8] = {0}; + uint8_t Ci_1_chk[8] = {0}; + + crypto_state_t ls; + ls.b0 = ostate->b0; + ls.b1 = ostate->b1; + ls.b1l = ostate->b1l; + ls.b1r = ostate->b1r; + ls.b1s = ostate->b1s; + ls.l = ostate->l; + ls.m = ostate->m; + ls.r = ostate->r; for (std::size_t i = offset; i < candidates->size(); i += skips) { if (key_found.load(std::memory_order_relaxed)) @@ -946,7 +957,7 @@ static void ice_compare( uint64_t tkey = candidates->at(i); num_to_bytes(tkey, 8, Gc_chk); - sm_auth(Gc_chk, Ci, Q, Ch_chk, Ci_1_chk, ostate); + sm_auth(Gc_chk, Ci, Q, Ch_chk, Ci_1_chk, &ls); if ((memcmp(Ch_chk, Ch, 8) == 0) && (memcmp(Ci_1_chk, Ci_1, 8) == 0)) { g_ice_mtx.lock(); key_found = true; @@ -1008,7 +1019,7 @@ int main(int argc, const char *argv[]) { Q[pos] = rand(); } sm_auth(Gc, Ci, Q, Ch, Ci_1, &ostate); - printf(" Gc: "); + printf(" Gc... "); print_bytes(Gc, 8); } else { sscanf(argv[1], "%016" SCNx64, &nCi); @@ -1019,7 +1030,7 @@ int main(int argc, const char *argv[]) { num_to_bytes(nCh, 8, Ch); sscanf(argv[4], "%016" SCNx64, &nCi_1); num_to_bytes(nCi_1, 8, Ci_1); - printf(" Gc: unknown\n"); + printf(" Gc... unknown\n"); } for (pos = 0; pos < 8; pos++) { @@ -1027,16 +1038,16 @@ int main(int argc, const char *argv[]) { ks[(2 * pos) + 1] = Ch[pos]; } - printf(" Ci: "); + printf(" Ci... "); print_bytes(Ci, 8); - printf(" Q: "); + printf(" Q... "); print_bytes(Q, 8); - printf(" Ch: "); + printf(" Ch... "); print_bytes(Ch, 8); - printf("Ci+1: "); + printf("Ci+1... "); print_bytes(Ci_1, 8); printf("\n"); - printf(" Ks: "); + printf(" Ks... "); print_bytes(ks, 16); printf("\n"); From 5ecdd673ba898d5b7a1e0f528ae2d8d976c52e08 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 21 Aug 2023 12:37:05 +0200 Subject: [PATCH 218/299] added the possibility to compile cryptoRF solvers in the main makefile. Will add tests in regression script next --- Makefile | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c548646bf..8ca441faf 100644 --- a/Makefile +++ b/Makefile @@ -29,7 +29,7 @@ ifneq (,$(DESTDIR)) endif endif -all clean install uninstall check: %: client/% bootrom/% armsrc/% recovery/% mfkey/% nonce2key/% mf_nonce_brute/% mfd_aes_brute/% fpga_compress/% +all clean install uninstall check: %: client/% bootrom/% armsrc/% recovery/% mfkey/% nonce2key/% mf_nonce_brute/% mfd_aes_brute/% fpga_compress/% cryptorf/% # hitag2crack toolsuite is not yet integrated in "all", it must be called explicitly: "make hitag2crack" #all clean install uninstall check: %: hitag2crack/% @@ -109,6 +109,9 @@ endif $(Q)-$(INSTALLSUDO) $(RMDIR_SOFT) $(DESTDIR)$(PREFIX)$(PATHSEP)$(INSTALLSHARERELPATH) # tests +cryptorf/check: FORCE + $(info [*] CHECK $(patsubst %/check,%,$@)) + $(Q)$(BASH) tools/pm3_tests.sh $(CHECKARGS) $(patsubst %/check,%,$@) mfkey/check: FORCE $(info [*] CHECK $(patsubst %/check,%,$@)) $(Q)$(BASH) tools/pm3_tests.sh $(CHECKARGS) $(patsubst %/check,%,$@) @@ -145,6 +148,9 @@ common/check: FORCE check: common/check $(info [*] ALL CHECKS DONE) +cryptorf/%: FORCE + $(info [*] MAKE $@) + $(Q)$(MAKE) --no-print-directory -C tools/cryptorf $(patsubst cryptorf/%,%,$@) DESTDIR=$(MYDESTDIR) mfkey/%: FORCE $(info [*] MAKE $@) $(Q)$(MAKE) --no-print-directory -C tools/mfkey $(patsubst mfkey/%,%,$@) DESTDIR=$(MYDESTDIR) @@ -196,6 +202,7 @@ help: @echo "+ recovery - Make bootrom and fullimage files for JTAG flashing" @echo @echo "+ client - Make only the OS-specific host client" + @echo "+ cryptorf - Make tools/cryptorf" @echo "+ mfkey - Make tools/mfkey" @echo "+ nonce2key - Make tools/nonce2key" @echo "+ mf_nonce_brute - Make tools/mf_nonce_brute" @@ -232,6 +239,8 @@ fullimage/uninstall: armsrc/uninstall recovery: recovery/all +cryptorf: cryptorf/all + mfkey: mfkey/all nonce2key: nonce2key/all From 0d1b86cc46e51f1e57b7930b05fda6e738afc964 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 21 Aug 2023 13:08:08 +0200 Subject: [PATCH 219/299] added regressiontests for cryptoRF SMA code part --- CHANGELOG.md | 1 + tools/cryptorf/sma.cpp | 2 +- tools/cryptorf/sma_multi.cpp | 2 +- tools/pm3_tests.sh | 16 +++++++++++++++- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0080cf27a..e773482db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added cryptorf regressiontests (@iceman1001) - Fixed `cryptorf/sma_multi` - local state used in multithread (@iceman1001) - Changed `fpga_compress` - better deallocation of memory and closing of file handles (@iceman1001) - Changed `hf search` - less swaps of fpga images on device side (@iceman1001) diff --git a/tools/cryptorf/sma.cpp b/tools/cryptorf/sma.cpp index 2c0044388..c1c9b54e3 100644 --- a/tools/cryptorf/sma.cpp +++ b/tools/cryptorf/sma.cpp @@ -844,7 +844,7 @@ int main(int argc, const char *argv[]) { num_to_bytes(*itgc, 8, Gc_chk); sm_auth(Gc_chk, Ci, Q, Ch_chk, Ci_1_chk, &ostate); if ((memcmp(Ch_chk, Ch, 8) == 0) && (memcmp(Ci_1_chk, Ci_1, 8) == 0)) { - printf("\nFound valid key: " _GREEN_("%016" PRIx64)"\n\n", *itgc); + printf("\nValid key found [ " _GREEN_("%016" PRIx64)" ]\n\n", *itgc); return 0; } } diff --git a/tools/cryptorf/sma_multi.cpp b/tools/cryptorf/sma_multi.cpp index b57f85ef9..cacaa31d1 100644 --- a/tools/cryptorf/sma_multi.cpp +++ b/tools/cryptorf/sma_multi.cpp @@ -1128,7 +1128,7 @@ int main(int argc, const char *argv[]) { } if (key_found) { - printf("\nFound valid key: " _GREEN_("%016lX")"\n\n", key.load()); + printf("\nValid key found [ " _GREEN_("%016" PRIx64)" ]\n\n", key.load()); break; } diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index 0957fd386..0c34360c6 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -14,6 +14,7 @@ TESTNONCE2KEY=false TESTMFNONCEBRUTE=false TESTMFDAESBRUTE=false TESTHITAG2CRACK=false +TESTCRYPTORF=false TESTFPGACOMPRESS=false TESTBOOTROM=false TESTARMSRC=false @@ -27,7 +28,7 @@ while (( "$#" )); do case "$1" in -h|--help) echo """ -Usage: $0 [--long] [--opencl] [--clientbin /path/to/proxmark3] [mfkey|nonce2key|mf_nonce_brute|mfd_aes_brute|fpga_compress|bootrom|armsrc|client|recovery|common] +Usage: $0 [--long] [--opencl] [--clientbin /path/to/proxmark3] [mfkey|nonce2key|mf_nonce_brute|mfd_aes_brute|cryptorf|fpga_compress|bootrom|armsrc|client|recovery|common] --long: Enable slow tests --opencl: Enable tests requiring OpenCL (preferably a Nvidia GPU) --clientbin ...: Specify path to proxmark3 binary to test @@ -52,6 +53,11 @@ Usage: $0 [--long] [--opencl] [--clientbin /path/to/proxmark3] [mfkey|nonce2key| exit 1 fi ;; + cryptorf) + TESTALL=false + TESTCRYPTORF=true + shift + ;; mfkey) TESTALL=false TESTMFKEY=true @@ -295,6 +301,14 @@ while true; do if ! CheckExecute "mfd_aes_brute test 1/2" "$MFDASEBRUTEBIN 1605394800 bb6aea729414a5b1eff7b16328ce37fd 82f5f498dbc29f7570102397a2e5ef2b6dc14a864f665b3c54d11765af81e95c" "key.................... .*261C07A23F2BC8262F69F10A5BDF3764"; then break; fi if ! CheckExecute slow "mfd_aes_brute test 2/2" "$MFDASEBRUTEBIN 1546300800 3fda933e2953ca5e6cfbbf95d1b51ddf 97fe4b5de24188458d102959b888938c988e96fb98469ce7426f50f108eaa583" "key.................... .*E757178E13516A4F3171BC6EA85E165A"; then break; fi fi + + if $TESTALL || $TESTCRYPTORF; then + echo -e "\n${C_BLUE}Testing CryptoRF sma:${C_NC} ${CRYPTRFBRUTEBIN:=./tools/cryptorf/sma} ${CRYPTRF_MULTI_BRUTEBIN:=./tools/cryptorf/sma_multi}" + if ! CheckFileExist "sma exists" "$CRYPTRFBRUTEBIN"; then break; fi + if ! CheckFileExist "sma_multi exists" "$CRYPTRF_MULTI_BRUTEBIN"; then break; fi + if ! CheckExecute slow "sma test" "$CRYPTRFBRUTEBIN ffffffffffffffff 1234567812345678 88c9d4466a501a87 dec2ee1b1c9276e9" "key found \[.*4f794a463ff81d81.*\]"; then break; fi + if ! CheckExecute slow "sma_multi test" "$CRYPTRF_MULTI_BRUTEBIN ffffffffffffffff 1234567812345678 88c9d4466a501a87 dec2ee1b1c9276e9" "key found \[.*4f794a463ff81d81.*\]"; then break; fi + fi # hitag2crack not yet part of "all" # if $TESTALL || $TESTHITAG2CRACK; then if $TESTHITAG2CRACK; then From 456af75b78ee7a20d4e5c02b623f110075cdda04 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 21 Aug 2023 16:10:26 +0200 Subject: [PATCH 220/299] lets see if this makes osx happy by guarding the cpp code with defines --- tools/cryptorf/sma.cpp | 8 ++++++++ tools/cryptorf/sma_multi.cpp | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/tools/cryptorf/sma.cpp b/tools/cryptorf/sma.cpp index c1c9b54e3..3fb1da343 100644 --- a/tools/cryptorf/sma.cpp +++ b/tools/cryptorf/sma.cpp @@ -32,6 +32,10 @@ #include "cryptolib.h" #include "util.h" +#ifdef __cplusplus +extern "C" { +#endif + using namespace std; #ifdef _MSC_VER @@ -852,3 +856,7 @@ int main(int argc, const char *argv[]) { } return 0; } + +#if defined(__cplusplus) +} +#endif \ No newline at end of file diff --git a/tools/cryptorf/sma_multi.cpp b/tools/cryptorf/sma_multi.cpp index cacaa31d1..91cf97d7c 100644 --- a/tools/cryptorf/sma_multi.cpp +++ b/tools/cryptorf/sma_multi.cpp @@ -35,6 +35,10 @@ #include "cryptolib.h" #include "util.h" +#ifdef __cplusplus +extern "C" { +#endif + using namespace std; #ifdef _MSC_VER @@ -1136,3 +1140,7 @@ int main(int argc, const char *argv[]) { } return 0; } + +#if defined(__cplusplus) +} +#endif \ No newline at end of file From 908b8ca0b3bf2af143a19d94814c1882b9165b8c Mon Sep 17 00:00:00 2001 From: Roman D Date: Mon, 21 Aug 2023 22:24:13 +0200 Subject: [PATCH 221/299] Limit configurable CPU count to the number of detected CPU cores. --- client/src/proxmark3.c | 5 +++-- client/src/util.c | 6 +++++- client/src/util.h | 3 ++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 26f4a5698..3e924a1c7 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -1004,8 +1004,9 @@ int main(int argc, char *argv[]) { return 1; } long int ncpus = strtol(argv[i + 1], NULL, 10); - if (ncpus < 0 || ncpus >= INT_MAX) { - PrintAndLogEx(ERR, _RED_("ERROR:") " invalid number of CPU cores: --ncpu " _YELLOW_("%s") "\n", argv[i + 1]); + const int detected_cpus = detect_num_CPUs(); + if (ncpus < 0 || ncpus >= detected_cpus) { + PrintAndLogEx(ERR, _RED_("ERROR:") " invalid number of CPU cores: --ncpu " _YELLOW_("%s") " (available: %d)\n", argv[i + 1], detected_cpus); return 1; } g_numCPUs = ncpus; diff --git a/client/src/util.c b/client/src/util.c index 150b042a5..f1e58abe0 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -1079,12 +1079,16 @@ uint64_t HornerScheme(uint64_t num, uint64_t divider, uint64_t factor) { return result; } -// determine number of logical CPU cores (use for multithreaded functions) int num_CPUs(void) { if (g_numCPUs > 0) { return g_numCPUs; } + return detect_num_CPUs(); +} + +// determine number of logical CPU cores (use for multithreaded functions) +int detect_num_CPUs(void) { #if defined(_WIN32) #include SYSTEM_INFO sysinfo; diff --git a/client/src/util.h b/client/src/util.h index 0712d8d18..fa636ce9b 100644 --- a/client/src/util.h +++ b/client/src/util.h @@ -131,7 +131,8 @@ void wiegand_add_parity_swapped(uint8_t *target, uint8_t *source, uint8_t length uint32_t PackBits(uint8_t start, uint8_t len, const uint8_t *bits); uint64_t HornerScheme(uint64_t num, uint64_t divider, uint64_t factor); -int num_CPUs(void); // number of logical CPUs +int num_CPUs(void); +int detect_num_CPUs(void); // number of logical CPUs void str_lower(char *s); // converts string to lower case void str_upper(char *s); // converts string to UPPER case From 210d2847aeb2019d15ae69eadff68771a4b656ef Mon Sep 17 00:00:00 2001 From: nvx Date: Tue, 22 Aug 2023 07:32:07 +1000 Subject: [PATCH 222/299] Adds `hf iclass esetblk`, equivalent to `hf mf esetblk` Also some minor tweaks to make commands.json and commands.md properly on Windows. --- Makefile | 2 +- client/pyscripts/pm3_help2list.py | 2 +- client/src/cmdhficlass.c | 55 ++++++++++++++++++++++++++++--- client/src/cmdhftexkom.c | 8 ++--- client/src/pm3line_vocabulary.h | 1 + doc/commands.json | 28 ++++++++++++---- doc/commands.md | 1 + 7 files changed, 81 insertions(+), 16 deletions(-) diff --git a/Makefile b/Makefile index 8ca441faf..64b0aa6ab 100644 --- a/Makefile +++ b/Makefile @@ -327,7 +327,7 @@ style: # Make sure python3 is installed @command -v python3 >/dev/null || ( echo "Please install 'python3' package first" ; exit 1 ) # Update commands.json, patch port in case it was run under Windows - [ -x client/proxmark3 ] && client/proxmark3 --fulltext | sed 's#com[0-9]#/dev/ttyacm0#'|python3 client/pyscripts/pm3_help2json.py - doc/commands.json + [ -x client/proxmark3 ] && client/proxmark3 --fulltext | sed 's#com[0-9]#/dev/ttyACM0#'|python3 client/pyscripts/pm3_help2json.py - doc/commands.json # Update the readline autocomplete autogenerated code [ -x client/proxmark3 ] && client/proxmark3 --fulltext | python3 client/pyscripts/pm3_help2list.py - client/src/pm3line_vocabulary.h diff --git a/client/pyscripts/pm3_help2list.py b/client/pyscripts/pm3_help2list.py index 7355bca46..a896e5546 100755 --- a/client/pyscripts/pm3_help2list.py +++ b/client/pyscripts/pm3_help2list.py @@ -88,7 +88,7 @@ const static vocabulary_t vocabulary[] = {\n""") cmd = values['command'] - args.output_file.write(' {{ {}, "{}" }}, \n'.format(offline, cmd)) + args.output_file.write(' {{ {}, "{}" }},\n'.format(offline, cmd)) args.output_file.write(""" {0, NULL}\n}; diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 131944f6e..4a4ac3289 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -129,7 +129,7 @@ static inline uint32_t leadingzeros(uint64_t a) { #endif } -static void iclass_upload_emul(uint8_t *d, uint16_t n, uint16_t *bytes_sent) { +static void iclass_upload_emul(uint8_t *d, uint16_t n, uint16_t offset, uint16_t *bytes_sent) { struct p { uint16_t offset; @@ -155,7 +155,7 @@ static void iclass_upload_emul(uint8_t *d, uint16_t n, uint16_t *bytes_sent) { } struct p *payload = calloc(4 + bytes_in_packet, sizeof(uint8_t)); - payload->offset = *bytes_sent; + payload->offset = offset + *bytes_sent; payload->len = bytes_in_packet; memcpy(payload->data, d + *bytes_sent, bytes_in_packet); @@ -424,7 +424,7 @@ static int generate_config_card(const iclass_config_card_item_t *o, uint8_t *ke //Send to device PrintAndLogEx(INFO, "Uploading to device... "); uint16_t bytes_sent = 0; - iclass_upload_emul(data, tot_bytes, &bytes_sent); + iclass_upload_emul(data, tot_bytes, 0, &bytes_sent); free(data); PrintAndLogEx(NORMAL, ""); @@ -1092,7 +1092,7 @@ static int CmdHFiClassELoad(const char *Cmd) { //Send to device uint16_t bytes_sent = 0; - iclass_upload_emul(dump, bytes_read, &bytes_sent); + iclass_upload_emul(dump, bytes_read, 0, &bytes_sent); free(dump); PrintAndLogEx(SUCCESS, "uploaded " _YELLOW_("%d") " bytes to emulator memory", bytes_sent); PrintAndLogEx(HINT, "You are ready to simulate. See " _YELLOW_("`hf iclass sim -h`")); @@ -1222,6 +1222,52 @@ static int CmdHFiClassEView(const char *Cmd) { return PM3_SUCCESS; } +static int CmdHFiClassESetBlk(const char *Cmd) { + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf iclass esetblk", + "Display emulator memory.\n" + "Number of bytes to download defaults to 256. Other value is 2048.", + "hf iclass eview\n" + "hf iclass eview -s 2048\n" + "hf iclass eview -s 2048 -v"); + + void *argtable[] = { + arg_param_begin, + arg_int1("b", "blk", "", "block number"), + arg_str0("d", "data", "", "bytes to write, 16 hex bytes"), + arg_param_end + }; + CLIExecWithReturn(ctx, Cmd, argtable, true); + + int blk = arg_get_int_def(ctx, 1, 0); + + if (blk > 255) { + PrintAndLogEx(WARNING, "block number must be between 0 and 255. Got %i", blk); + return PM3_EINVARG; + } + + uint8_t data[PICOPASS_BLOCK_SIZE] = {0x00}; + int datalen = 0; + int res = CLIParamHexToBuf(arg_get_str(ctx, 2), data, sizeof(data), &datalen); + CLIParserFree(ctx); + if (res) { + PrintAndLogEx(FAILED, "Error parsing bytes"); + return PM3_EINVARG; + } + + if (datalen != sizeof(data)) { + PrintAndLogEx(WARNING, "block data must include 8 HEX bytes. Got %i", datalen); + return PM3_EINVARG; + } + + CLIParserFree(ctx); + + uint16_t bytes_sent = 0; + iclass_upload_emul(data, sizeof(data), blk * PICOPASS_BLOCK_SIZE, &bytes_sent); + + return PM3_SUCCESS; +} + static void iclass_decode_credentials(uint8_t *data) { BLOCK79ENCRYPTION encryption = (data[(6 * 8) + 7] & 0x03); bool has_values = (memcmp(data + (8 * 7), empty, 8) != 0) && (memcmp(data + (8 * 7), zeros, 8) != 0); @@ -4226,6 +4272,7 @@ static command_t CommandTable[] = { {"sim", CmdHFiClassSim, IfPm3Iclass, "Simulate iCLASS tag"}, {"eload", CmdHFiClassELoad, IfPm3Iclass, "Load Picopass / iCLASS dump file into emulator memory"}, {"esave", CmdHFiClassESave, IfPm3Iclass, "Save emulator memory to file"}, + {"esetblk", CmdHFiClassESetBlk, IfPm3Iclass, "Set emulator memory block data"}, {"eview", CmdHFiClassEView, IfPm3Iclass, "View emulator memory"}, {"-----------", CmdHelp, AlwaysAvailable, "---------------------- " _CYAN_("utils") " ----------------------"}, {"configcard", CmdHFiClassConfigCard, AlwaysAvailable, "Reader configuration card"}, diff --git a/client/src/cmdhftexkom.c b/client/src/cmdhftexkom.c index 4164060f7..6cb77a54e 100644 --- a/client/src/cmdhftexkom.c +++ b/client/src/cmdhftexkom.c @@ -850,10 +850,10 @@ static int CmdHFTexkomSim(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf texkom sim", "Simulate a texkom tag", - "hf texkom sim \r\n" - "hf texkom sim --raw FFFF638C7DC45553 -> simulate TK13 tag with id 8C7DC455\r\n" - "hf texkom sim --tk17 --raw FFFFCA17F31EC512 -> simulate TK17 tag with id 17F31EC5\r\n" - "hf texkom sim --id 8C7DC455 -> simulate TK13 tag with id 8C7DC455\r\n" + "hf texkom sim \n" + "hf texkom sim --raw FFFF638C7DC45553 -> simulate TK13 tag with id 8C7DC455\n" + "hf texkom sim --tk17 --raw FFFFCA17F31EC512 -> simulate TK17 tag with id 17F31EC5\n" + "hf texkom sim --id 8C7DC455 -> simulate TK13 tag with id 8C7DC455\n" "hf texkom sim --id 8C7DC455 --tk17 -> simulate TK17 tag with id 17F31EC5"); void *argtable[] = { diff --git a/client/src/pm3line_vocabulary.h b/client/src/pm3line_vocabulary.h index 0f617ef0d..8926ffb94 100644 --- a/client/src/pm3line_vocabulary.h +++ b/client/src/pm3line_vocabulary.h @@ -282,6 +282,7 @@ const static vocabulary_t vocabulary[] = { { 0, "hf iclass sim" }, { 0, "hf iclass eload" }, { 0, "hf iclass esave" }, + { 0, "hf iclass esetblk" }, { 0, "hf iclass eview" }, { 1, "hf iclass configcard" }, { 1, "hf iclass calcnewkey" }, diff --git a/doc/commands.json b/doc/commands.json index 858cc02cd..f92263843 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -215,10 +215,9 @@ "offline": true, "options": [ "-h, --help This help", - "-d ASN1 encoded byte array", - "-t, --test perform selftest" + "-d ASN1 encoded byte array" ], - "usage": "data atr [-ht] [-d ]" + "usage": "data atr [-h] [-d ]" }, "data autocorr": { "command": "data autocorr", @@ -3150,6 +3149,22 @@ ], "usage": "hf iclass esave [-h] [-f ] [-s <256|2048>]" }, + "hf iclass esetblk": { + "command": "hf iclass esetblk", + "description": "Display emulator memory. Number of bytes to download defaults to 256. Other value is 2048.", + "notes": [ + "hf iclass eview", + "hf iclass eview -s 2048", + "hf iclass eview -s 2048 -v" + ], + "offline": false, + "options": [ + "-h, --help This help", + "-b, --blk block number", + "-d, --data bytes to write, 16 hex bytes" + ], + "usage": "hf iclass esetblk [-h] -b [-d ]" + }, "hf iclass eview": { "command": "hf iclass eview", "description": "Display emulator memory. Number of bytes to download defaults to 256. Other value is 2048.", @@ -6986,6 +7001,7 @@ "description": "Simulate a texkom tag", "notes": [ "hf texkom sim", + "", "hf texkom sim --raw FFFF638C7DC45553 -> simulate TK13 tag with id 8C7DC455", "hf texkom sim --tk17 --raw FFFFCA17F31EC512 -> simulate TK17 tag with id 17F31EC5", "hf texkom sim --id 8C7DC455 -> simulate TK13 tag with id 8C7DC455", @@ -8770,7 +8786,7 @@ "-1, --ht1 Card type Hitag 1", "-2, --ht2 Card type Hitag 2", "-s, --hts Card type Hitag S", - "-m, --htm Card type Hitag \u03bc" + "-m, --htm Card type Hitag \u00ce\u00bc" ], "usage": "lf hitag eload [-h12sm] -f " }, @@ -11819,8 +11835,8 @@ } }, "metadata": { - "commands_extracted": 685, + "commands_extracted": 686, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-08-02T20:39:48" + "extracted_on": "2023-08-21T21:25:03" } } \ No newline at end of file diff --git a/doc/commands.md b/doc/commands.md index 27d6a05b4..919ce3f8e 100644 --- a/doc/commands.md +++ b/doc/commands.md @@ -421,6 +421,7 @@ Check column "offline" for their availability. |`hf iclass sim `|N |`Simulate iCLASS tag` |`hf iclass eload `|N |`Load Picopass / iCLASS dump file into emulator memory` |`hf iclass esave `|N |`Save emulator memory to file` +|`hf iclass esetblk `|N |`Set emulator memory block data` |`hf iclass eview `|N |`View emulator memory` |`hf iclass configcard `|Y |`Reader configuration card` |`hf iclass calcnewkey `|Y |`Calc diversified keys (blocks 3 & 4) to write new keys` From d183944bb16b9bb0a4a7702c5723084c0de635b2 Mon Sep 17 00:00:00 2001 From: nvx Date: Tue, 22 Aug 2023 07:53:57 +1000 Subject: [PATCH 223/299] Add CHANGELOG entry for hf iclass esetblk command --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e773482db..cf9c6f192 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added `hf iclass esetblk` - set iClass emulator memory block data (@nvx) - Added cryptorf regressiontests (@iceman1001) - Fixed `cryptorf/sma_multi` - local state used in multithread (@iceman1001) - Changed `fpga_compress` - better deallocation of memory and closing of file handles (@iceman1001) From 0d442d7f190b4c2827122abd515ca592c3e0f2d1 Mon Sep 17 00:00:00 2001 From: startrekdude Date: Tue, 22 Aug 2023 01:10:21 -0400 Subject: [PATCH 224/299] Add hf_cardhopper standalone mode Adds the hf_cardhopper standalone mode, as one component of my (Sam Haskins) and Trevor Stevado's long-range relay attack on ISO 14443-4 Type A protocols, as presented at DEF CON 31. --- CHANGELOG.md | 1 + armsrc/Standalone/Makefile.hal | 7 +- armsrc/Standalone/Makefile.inc | 4 + armsrc/Standalone/hf_cardhopper.c | 408 ++++++++++++++++++ .../4_Advanced-compilation-parameters.md | 1 + tools/build_all_firmwares.sh | 4 +- 6 files changed, 421 insertions(+), 4 deletions(-) create mode 100644 armsrc/Standalone/hf_cardhopper.c diff --git a/CHANGELOG.md b/CHANGELOG.md index e773482db..eec2ac775 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,6 +44,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Changed `hf_mf_luxeo_dump.lua` - now have list of keys to iterate (@iceman1001) - Fixed the timeout of TCP connections (@wh201906) - Changed the connection timeout configurable (@wh201906) + - Add hf_cardhopper standalone mode for long-distance relay attacks (@startrekdude) ## [Seven.4.16717][2023-06-25] - Change `hf 14a info` - now identifes QL88 tags (@iceman1001) diff --git a/armsrc/Standalone/Makefile.hal b/armsrc/Standalone/Makefile.hal index da204eaca..1a903a0ac 100644 --- a/armsrc/Standalone/Makefile.hal +++ b/armsrc/Standalone/Makefile.hal @@ -86,6 +86,9 @@ define KNOWN_STANDALONE_DEFINITIONS | HF_BOG | 14a sniff with ULC/ULEV1/NTAG auth | | (RDV4 only) | storing in flashmem - Bogito | +----------------------------------------------------------+ +| HF_CARDHOPPER | Relay 14a protocols over long distances| +| (RDV4 only) | (w/ IP backbone) - Sam Haskins | ++----------------------------------------------------------+ | HF_COLIN | Mifare ultra fast sniff/sim/clone | | (RDV4 only) | - Colin Brigato | +----------------------------------------------------------+ @@ -130,9 +133,9 @@ endef STANDALONE_MODES := LF_SKELETON STANDALONE_MODES += LF_EM4100EMUL LF_EM4100RSWB LF_EM4100RSWW LF_EM4100RWC LF_HIDBRUTE LF_HIDFCBRUTE LF_ICEHID LF_MULTIHID LF_NEDAP_SIM LF_NEXID LF_PROXBRUTE LF_PROX2BRUTE LF_SAMYRUN LF_THAREXDE -STANDALONE_MODES += HF_14ASNIFF HF_14BSNIFF HF_15SNIFF HF_AVEFUL HF_BOG HF_COLIN HF_CRAFTBYTE HF_ICECLASS HF_LEGIC HF_LEGICSIM HF_MATTYRUN HF_MFCSIM HF_MSDSAL HF_REBLAY HF_TCPRST HF_TMUDFORD HF_YOUNG +STANDALONE_MODES += HF_14ASNIFF HF_14BSNIFF HF_15SNIFF HF_AVEFUL HF_BOG HF_CARDHOPPER HF_COLIN HF_CRAFTBYTE HF_ICECLASS HF_LEGIC HF_LEGICSIM HF_MATTYRUN HF_MFCSIM HF_MSDSAL HF_REBLAY HF_TCPRST HF_TMUDFORD HF_YOUNG STANDALONE_MODES += DANKARMULTI -STANDALONE_MODES_REQ_BT := HF_REBLAY +STANDALONE_MODES_REQ_BT := HF_CARDHOPPER HF_REBLAY STANDALONE_MODES_REQ_SMARTCARD := STANDALONE_MODES_REQ_FLASH := LF_HIDFCBRUTE LF_ICEHID LF_NEXID LF_THAREXDE HF_BOG HF_COLIN HF_ICECLASS HF_LEGICSIM HF_MFCSIM ifneq ($(filter $(STANDALONE),$(STANDALONE_MODES)),) diff --git a/armsrc/Standalone/Makefile.inc b/armsrc/Standalone/Makefile.inc index 6aeb163bb..19e3645ff 100644 --- a/armsrc/Standalone/Makefile.inc +++ b/armsrc/Standalone/Makefile.inc @@ -97,6 +97,10 @@ endif ifneq (,$(findstring WITH_STANDALONE_HF_BOG,$(APP_CFLAGS))) SRC_STANDALONE = hf_bog.c endif +# WITH_STANDALONE_HF_CARDHOPPER +ifneq (,$(findstring WITH_STANDALONE_HF_CARDHOPPER,$(APP_CFLAGS))) + SRC_STANDALONE = hf_cardhopper.c +endif # WITH_STANDALONE_HF_COLIN ifneq (,$(findstring WITH_STANDALONE_HF_COLIN,$(APP_CFLAGS))) SRC_STANDALONE = vtsend.c hf_colin.c frozen.c nprintf.c diff --git a/armsrc/Standalone/hf_cardhopper.c b/armsrc/Standalone/hf_cardhopper.c new file mode 100644 index 000000000..7101b5ae7 --- /dev/null +++ b/armsrc/Standalone/hf_cardhopper.c @@ -0,0 +1,408 @@ +/* + * hf_cardhopper standalone mode by Sam Haskins + * + * A component of our (me + Trevor Stevado) research on long-range relay + * attacks against 14a-based protocols (as presented at DEF CON '31). + * Works with a CardHopper (recommended) or BlueShark add-on. + * + * If you're reading this, you're clearly a very interesting person--- + * do reach out if you get any fun results? [ sam AT loudmouth DOT io ] + * Good luck, and may the odds be ever in your favour! + * + * The companion Android app is available on our gitlab: gitlab.com/loudmouth-security + * + * For more information, see: https://media.defcon.org/DEF%20CON%2031/DEF%20CON%2031%20presentations/Trevor%20Stevado%20Sam%20Haskins%20-%20Unlocking%20Doors%20from%20Half%20a%20Continent%20Away.pdf + */ + +#include + +#include "appmain.h" +#include "BigBuf.h" +#include "dbprint.h" +#include "fpgaloader.h" +#include "iso14443a.h" +#include "protocols.h" +#include "proxmark3_arm.h" +#include "standalone.h" +#include "ticks.h" +#include "util.h" +#include "usart.h" + + +void ModInfo(void) { + DbpString(" HF - Long-range relay 14a over serial<->IP - a.k.a. CardHopper (Sam Haskins)"); +} + + +typedef struct PACKED { + uint8_t len; + uint8_t dat[255]; +} packet_t; + +// Magic numbers +static const uint8_t magicREAD[4] = "READ"; +static const uint8_t magicCARD[4] = "CARD"; +static const uint8_t magicEND [4] = "\xff" "END"; +static const uint8_t magicRSRT[7] = "RESTART"; +static const uint8_t magicERR [4] = "\xff" "ERR"; +static uint8_t magicACK [1] = "\xfe"; // is constant, but must be passed to API that doesn't like that + +// Forward declarations +static void become_reader(void); +static void select_card(void); + +static void become_card(void); +static void prepare_emulation(uint8_t*, uint16_t*, uint8_t*, packet_t*); +static void cook_ats(packet_t*, uint8_t, uint8_t); +static bool try_use_canned_response(uint8_t*, int, tag_response_info_t*); +static void reply_with_packet(packet_t*); + +static void read_packet(packet_t*); +static void write_packet(packet_t*); + +static bool GetIso14443aCommandFromReaderInterruptible(uint8_t*, uint8_t*, int*); + + +void RunMod(void) { + StandAloneMode(); + DbpString(_CYAN_("[@]") " CardHopper has started - waiting for mode"); + FpgaDownloadAndGo(FPGA_BITSTREAM_HF); + + clear_trace(); + set_tracing(true); + + // Indicate we are alive and in CardHopper + LEDsoff(); + LED_A_ON(); + LED_D_ON(); + + while (1) { + WDT_HIT(); + + packet_t modeRx = { 0 }; + read_packet(&modeRx); + + if (memcmp(magicREAD, modeRx.dat, sizeof(magicREAD)) == 0) { + DbpString(_CYAN_("[@]") " I am a READER. I talk to a CARD."); + become_reader(); + } else if (memcmp(magicCARD, modeRx.dat, sizeof(magicCARD)) == 0) { + DbpString(_CYAN_("[@]") " I am a CARD. I talk to a READER."); + become_card(); + } else if (memcmp(magicEND, modeRx.dat, sizeof(magicEND)) == 0) { + break; + } else { + DbpString(_YELLOW_("[!]") " unknown mode!"); + Dbhexdump(modeRx.len, modeRx.dat, true); + } + } + + DbpString(_CYAN_("[@]") " exiting ..."); + FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + LEDsoff(); +} + + +static void become_reader(void) { + iso14443a_setup(FPGA_HF_ISO14443A_READER_MOD); + select_card(); // also sends UID, ATS + + DbpString(_CYAN_("[@]") " entering reader main loop ..."); + packet_t packet = { 0 }; + packet_t *rx = &packet; + packet_t *tx = &packet; + uint8_t toCard[256] = { 0 }; + uint8_t parity[MAX_PARITY_SIZE] = { 0 }; + + while(1) { + WDT_HIT(); + + read_packet(rx); + if (memcmp(magicRSRT, rx->dat, sizeof(magicRSRT)) == 0) break; + + memcpy(toCard, rx->dat, rx->len); + AddCrc14A(toCard, rx->len); + ReaderTransmit(toCard, rx->len + 2, NULL); + + tx->len = ReaderReceive(tx->dat, parity); + if (tx->len == 0) { + tx->len = sizeof(magicERR); + memcpy(tx->dat, magicERR, sizeof(magicERR)); + } else tx->len -= 2; // cut off the CRC + + write_packet(tx); + } +} + + +static void select_card(void) { + iso14a_card_select_t card = { 0 }; + while(1) { + WDT_HIT(); + + int ret = iso14443a_select_card(NULL, &card, NULL, true, 0, false); + if (ret && ret != 1) + Dbprintf(_RED_("[!]") " Error selecting card: %d", ret); + if (ret == 1) break; + + SpinDelay(20); + } + + DbpString(_CYAN_("[@]") " UID:"); + Dbhexdump(card.uidlen, card.uid, false); + DbpString(_CYAN_("[@]") " ATS:"); + Dbhexdump(card.ats_len - 2 /* no CRC */, card.ats, false); + + packet_t tx = { 0 }; + tx.len = card.uidlen; + memcpy(tx.dat, card.uid, tx.len); + write_packet(&tx); + + tx.len = card.ats_len - 2; + memcpy(tx.dat, card.ats, tx.len); + write_packet(&tx); +} + + +static void become_card(void) { + iso14443a_setup(FPGA_HF_ISO14443A_TAGSIM_LISTEN); + + uint8_t tagType; + uint16_t flags; + uint8_t data[PM3_CMD_DATA_SIZE] = { 0 }; + packet_t ats = { 0 }; + prepare_emulation(&tagType, &flags, data, &ats); + + tag_response_info_t *canned; + uint32_t cuid; + uint32_t counters[3] = { 0 }; + uint8_t tearings[3] = { 0xbd, 0xbd, 0xbd }; + uint8_t pages; + SimulateIso14443aInit(tagType, flags, data, &canned, &cuid, counters, tearings, &pages); + + DbpString(_CYAN_("[@]") " Setup done - entering emulation loop"); + int fromReaderLen; + uint8_t fromReaderDat[256] = { 0 }; + uint8_t parity[MAX_PARITY_SIZE] = { 0 }; + packet_t packet = { 0 }; + packet_t *tx = &packet; + packet_t *rx = &packet; + + while (1) { + WDT_HIT(); + + if (!GetIso14443aCommandFromReaderInterruptible(fromReaderDat, parity, &fromReaderLen)) { + if (usart_rxdata_available()) { + read_packet(rx); + if (memcmp(magicRSRT, rx->dat, sizeof(magicRSRT)) == 0) { + DbpString(_CYAN_("[@]") " Breaking from reader loop"); + break; + } + } + continue; + } + + // Option 1: Use a canned response + if (try_use_canned_response(fromReaderDat, fromReaderLen, canned)) continue; + + // Option 2: Reply with our cooked ATS + if (fromReaderDat[0] == ISO14443A_CMD_RATS && fromReaderLen == 4) { + reply_with_packet(&ats); + continue; + } + + // Option 3: Relay the message + tx->len = fromReaderLen - 2; // cut off the crc + memcpy(tx->dat, fromReaderDat, tx->len); + write_packet(tx); + + read_packet(rx); + reply_with_packet(rx); + } +} + + +static void prepare_emulation(uint8_t *tagType, uint16_t *flags, uint8_t *data, packet_t *ats) { + packet_t tagTypeRx = { 0 }; read_packet(&tagTypeRx); + packet_t timeModeRx = { 0 }; read_packet(&timeModeRx); + packet_t uidRx = { 0 }; read_packet(&uidRx); + read_packet(ats); + + *tagType = tagTypeRx.dat[0]; + Dbprintf(_CYAN_("[@]") " Using tag type: %hhu", *tagType); + + DbpString(_CYAN_("[@]") " Time control parameters:"); + Dbhexdump(timeModeRx.len, timeModeRx.dat, false); + uint8_t fwi = timeModeRx.dat[0] & 0x0f; + uint8_t sfgi = timeModeRx.dat[1] & 0x0f; + Dbprintf(_CYAN_("[@]") " Parsed as fwi = %hhu, sfgi = %hhu", fwi, sfgi); + + if (fwi == 0xf) { + DbpString(_YELLOW_("[!]") " Refusing to use 15 as FWI - will use 14"); + fwi = 0xe; + } + if (sfgi == 0xf) { + DbpString(_YELLOW_("[!]") " Refusing to use 15 as SFGI - will use 14"); + sfgi = 0xe; + } + + memcpy(data, uidRx.dat, uidRx.len); + *flags = (uidRx.len == 10 ? FLAG_10B_UID_IN_DATA : (uidRx.len == 7 ? FLAG_7B_UID_IN_DATA : FLAG_4B_UID_IN_DATA)); + DbpString(_CYAN_("[@]") " UID:"); + Dbhexdump(uidRx.len, data, false); + Dbprintf(_CYAN_("[@]") " Flags: %hu", *flags); + + DbpString(_CYAN_("[@]") " Original ATS:"); + Dbhexdump(ats->len, ats->dat, false); + cook_ats(ats, fwi, sfgi); + DbpString(_CYAN_("[@]") " Cooked ATS:"); + Dbhexdump(ats->len, ats->dat, false); +} + + +static void cook_ats(packet_t *ats, uint8_t fwi, uint8_t sfgi) { + if (ats->len != ats->dat[0]) { + DbpString(_RED_("[!]") " Malformed ATS - unable to cook; things may go wrong!"); + return; + } + + // If the ATS is too short (unusual), pad it to length with hopefully-sensible data + // Might be better for the phone side to do this tbh + if (ats->len == 1) { + ats->len = 4; + ats->dat[0] = 0x04; ats->dat[1] = 0x78; ats->dat[2] = 0x77; ats->dat[3] = 0x80; + } else if (ats->len == 2) { + ats->len = 4; + ats->dat[0] = 0x04; ats->dat[2] = 0x77; ats->dat[3] = 0x80; + } else if (ats->len == 3) { + ats->len = 4; + ats->dat[0] = 0x04; ats->dat[3] = 0x80; + } + + // Set the SFGI as well as the FWI - needed for some older readers (firmware revs?) + uint8_t cookedTB0 = (fwi << 4) | sfgi; + ats->dat[3] = cookedTB0; +} + + +static bool try_use_canned_response(uint8_t *dat, int len, tag_response_info_t *canned) { + if ((dat[0] == ISO14443A_CMD_REQA || dat[0] == ISO14443A_CMD_WUPA) && len == 1) { + EmSendPrecompiledCmd(canned + RESP_INDEX_ATQA); + return true; + } + + if (dat[1] == 0x20 && len == 2) { + if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT) { + EmSendPrecompiledCmd(canned + RESP_INDEX_UIDC1); + return true; + } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_2) { + EmSendPrecompiledCmd(canned + RESP_INDEX_UIDC2); + return true; + } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_3) { + EmSendPrecompiledCmd(canned + RESP_INDEX_UIDC3); + return true; + } + } + + if (dat[1] == 0x70 && len == 9) { + if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT) { + EmSendPrecompiledCmd(canned + RESP_INDEX_SAKC1); + return true; + } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_2) { + EmSendPrecompiledCmd(canned + RESP_INDEX_SAKC2); + return true; + } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_3) { + EmSendPrecompiledCmd(canned + RESP_INDEX_SAKC3); + return true; + } + } + + if (dat[0] == ISO14443A_CMD_PPS) { + EmSendPrecompiledCmd(canned + RESP_INDEX_PPS); + return true; + } + + // No response is expected to these 14a commands + if ((dat[0] == 0xf2 && len == 4) || dat[0] == 0xfa) return true; + if (dat[0] == ISO14443A_CMD_HALT && len == 4) return true; + + // Ignore Apple ECP2 polling + if (dat[0] == 0x6a) return true; + + return false; +} + + +static uint8_t g_responseBuffer [512 ] = { 0 }; +static uint8_t g_modulationBuffer[1024] = { 0 }; + +static void reply_with_packet(packet_t *packet) { + tag_response_info_t response = { 0 }; + response.response = g_responseBuffer; + response.modulation = g_modulationBuffer; + + memcpy(response.response, packet->dat, packet->len); + AddCrc14A(response.response, packet->len); + response.response_n = packet->len + 2; + + prepare_tag_modulation(&response, sizeof(g_modulationBuffer)); + EmSendPrecompiledCmd(&response); +} + + +static void read_packet(packet_t *packet) { + while(!usart_rxdata_available()) { + WDT_HIT(); + SpinDelayUs(100); + } + + uint32_t dataReceived = usart_read_ng((uint8_t*) packet, sizeof(packet_t)) - 1; + while(dataReceived != packet->len) { + while(!usart_rxdata_available()) WDT_HIT(); + + dataReceived += usart_read_ng(packet->dat + dataReceived, 255 - dataReceived); + } + usart_writebuffer_sync(magicACK, sizeof(magicACK)); +} + + +static void write_packet(packet_t *packet) { + usart_writebuffer_sync((uint8_t*) packet, packet->len + 1); +} + + +static bool GetIso14443aCommandFromReaderInterruptible(uint8_t *received, uint8_t *par, int *len) { + LED_D_OFF(); + FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_ISO14443A | FPGA_HF_ISO14443A_TAGSIM_LISTEN); + + Uart14aInit(received, par); + + uint8_t b = (uint8_t)AT91C_BASE_SSC->SSC_RHR; + (void)b; + + uint8_t flip = 0; + uint16_t checker = 4000; + for (;;) { + WDT_HIT(); + + if (flip == 3) { + if (usart_rxdata_available()) + return false; + + flip = 0; + } + + if (checker-- == 0) { + flip++; + checker = 4000; + } + + if (AT91C_BASE_SSC->SSC_SR & (AT91C_SSC_RXRDY)) { + b = (uint8_t)AT91C_BASE_SSC->SSC_RHR; + if (MillerDecoding(b, 0)) { + *len = GetUart14a()->len; + return true; + } + } + } + return false; +} diff --git a/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md b/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md index 53726b9dd..823e527da 100644 --- a/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md +++ b/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md @@ -121,6 +121,7 @@ Here are the supported values you can assign to `STANDALONE` in `Makefile.platfo | HF_15SNIFF | 15693 sniff storing to flashmem - Glaser | HF_AVEFUL | MIFARE Ultralight read/simulation - Ave Ozkal | HF_BOG | 14a sniff with ULC/ULEV1/NTAG auth storing in flashmem - Bogito +| HF_CARDHOPPER | Long distance (over IP) relay of 14a protocols - Sam Haskins | HF_COLIN | Mifare ultra fast sniff/sim/clone - Colin Brigato | HF_CRAFTBYTE | UID stealer - Emulates scanned 14a UID - Anze Jensterle | HF_ICECLASS | iCLASS 4-1 mode sim/read & dump/loclass/glitch & config to flashmem - Iceman1001 diff --git a/tools/build_all_firmwares.sh b/tools/build_all_firmwares.sh index 4a0fe5947..261d89135 100755 --- a/tools/build_all_firmwares.sh +++ b/tools/build_all_firmwares.sh @@ -32,9 +32,9 @@ mv bootrom/obj/bootrom.elf "$DEST/PM3BOOTROM.elf" # cf armsrc/Standalone/Makefile.hal STANDALONE_MODES=(LF_SKELETON) STANDALONE_MODES+=(LF_EM4100EMUL LF_EM4100RSWB LF_EM4100RSWW LF_EM4100RWC LF_HIDBRUTE LF_HIDFCBRUTE LF_ICEHID LF_MULTIHID LF_NEDAP_SIM LF_NEXID LF_PROXBRUTE LF_PROX2BRUTE LF_SAMYRUN LF_THAREXDE) -STANDALONE_MODES+=(HF_14ASNIFF HF_14BSNIFF HF_15SNIFF HF_AVEFUL HF_BOG HF_COLIN HF_CRAFTBYTE HF_ICECLASS HF_LEGIC HF_LEGICSIM HF_MATTYRUN HF_MFCSIM HF_MSDSAL HF_REBLAY HF_TCPRST HF_TMUDFORD HF_YOUNG) +STANDALONE_MODES+=(HF_14ASNIFF HF_14BSNIFF HF_15SNIFF HF_AVEFUL HF_BOG HF_CARDHOPPER HF_COLIN HF_CRAFTBYTE HF_ICECLASS HF_LEGIC HF_LEGICSIM HF_MATTYRUN HF_MFCSIM HF_MSDSAL HF_REBLAY HF_TCPRST HF_TMUDFORD HF_YOUNG) STANDALONE_MODES+=(DANKARMULTI) -STANDALONE_MODES_REQ_BT=(HF_REBLAY) +STANDALONE_MODES_REQ_BT=(HF_CARDHOPPER HF_REBLAY) STANDALONE_MODES_REQ_SMARTCARD=() STANDALONE_MODES_REQ_FLASH=(LF_HIDFCBRUTE LF_ICEHID LF_NEXID LF_THAREXDE HF_BOG HF_COLIN HF_ICECLASS HF_LEGICSIM HF_MFCSIM) From bc8761500885f5c1a644712392b376dd5ea2a49a Mon Sep 17 00:00:00 2001 From: nvx Date: Wed, 23 Aug 2023 02:43:18 +1000 Subject: [PATCH 225/299] Fix help text for hf iclass esetblk --- client/src/cmdhficlass.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 4a4ac3289..92df71046 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -1225,16 +1225,13 @@ static int CmdHFiClassEView(const char *Cmd) { static int CmdHFiClassESetBlk(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf iclass esetblk", - "Display emulator memory.\n" - "Number of bytes to download defaults to 256. Other value is 2048.", - "hf iclass eview\n" - "hf iclass eview -s 2048\n" - "hf iclass eview -s 2048 -v"); + "Sets an individual block in emulator memory.", + "hf iclass esetblk -b 7 -d 0000000000000000"); void *argtable[] = { arg_param_begin, arg_int1("b", "blk", "", "block number"), - arg_str0("d", "data", "", "bytes to write, 16 hex bytes"), + arg_str0("d", "data", "", "bytes to write, 8 hex bytes"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); From 9fdf314347778511ff2323670e440f805fad6220 Mon Sep 17 00:00:00 2001 From: nvx Date: Wed, 23 Aug 2023 03:15:21 +1000 Subject: [PATCH 226/299] regenerate doc/commands.json --- doc/commands.json | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/doc/commands.json b/doc/commands.json index f92263843..12509b1e7 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -3151,17 +3151,15 @@ }, "hf iclass esetblk": { "command": "hf iclass esetblk", - "description": "Display emulator memory. Number of bytes to download defaults to 256. Other value is 2048.", + "description": "Sets an individual block in emulator memory.", "notes": [ - "hf iclass eview", - "hf iclass eview -s 2048", - "hf iclass eview -s 2048 -v" + "hf iclass esetblk -b 7 -d 0000000000000000" ], "offline": false, "options": [ "-h, --help This help", "-b, --blk block number", - "-d, --data bytes to write, 16 hex bytes" + "-d, --data bytes to write, 8 hex bytes" ], "usage": "hf iclass esetblk [-h] -b [-d ]" }, @@ -7001,7 +6999,6 @@ "description": "Simulate a texkom tag", "notes": [ "hf texkom sim", - "", "hf texkom sim --raw FFFF638C7DC45553 -> simulate TK13 tag with id 8C7DC455", "hf texkom sim --tk17 --raw FFFFCA17F31EC512 -> simulate TK17 tag with id 17F31EC5", "hf texkom sim --id 8C7DC455 -> simulate TK13 tag with id 8C7DC455", @@ -11837,6 +11834,6 @@ "metadata": { "commands_extracted": 686, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-08-21T21:25:03" + "extracted_on": "2023-08-22T17:13:49" } } \ No newline at end of file From a2a31423555aa5d74a869404005d1ddeb6783fa3 Mon Sep 17 00:00:00 2001 From: nvx Date: Wed, 23 Aug 2023 09:27:05 +1000 Subject: [PATCH 227/299] Improve iClass SIO and legacy credential detection to improve reliability. Now relies on the legacy config block for SR detection and the end-of-SIO detection no longer partially cuts off the SIO for any dumps I have. --- CHANGELOG.md | 1 + client/src/cmdhficlass.c | 107 +++++++++++++++++++++++---------------- client/src/util.c | 19 +++++++ client/src/util.h | 1 + doc/commands.json | 4 +- 5 files changed, 85 insertions(+), 47 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 06254cec2..b1bd9deb5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed iClass SIO and Legacy credential detection to be more reliable (@nvx) - Added `hf iclass esetblk` - set iClass emulator memory block data (@nvx) - Added cryptorf regressiontests (@iceman1001) - Fixed `cryptorf/sma_multi` - local state used in multithread (@iceman1001) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 92df71046..5204fc488 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -1266,6 +1266,11 @@ static int CmdHFiClassESetBlk(const char *Cmd) { } static void iclass_decode_credentials(uint8_t *data) { + if (memcmp(data + (5 * PICOPASS_BLOCK_SIZE), "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", PICOPASS_BLOCK_SIZE)) { + // Not a Legacy or SR card, nothing to do here. + return; + } + BLOCK79ENCRYPTION encryption = (data[(6 * 8) + 7] & 0x03); bool has_values = (memcmp(data + (8 * 7), empty, 8) != 0) && (memcmp(data + (8 * 7), zeros, 8) != 0); if (has_values && encryption == None) { @@ -1290,7 +1295,7 @@ static void iclass_decode_credentials(uint8_t *data) { wiegand_message_t packed = initialize_message_object(top, mid, bot, 0); HIDTryUnpack(&packed); } else { - PrintAndLogEx(INFO, "No credential found"); + PrintAndLogEx(INFO, "No unencrypted legacy credential found"); } } @@ -1515,23 +1520,19 @@ static int CmdHFiClassDecrypt(const char *Cmd) { // decode block 9 has_values = (memcmp(decrypted + (8 * 9), empty, 8) != 0) && (memcmp(decrypted + (8 * 9), zeros, 8) != 0); - if (has_values) { - + if (has_values && use_sc) { uint8_t usr_blk_len = GetNumberBlocksForUserId(decrypted + (8 * 6)); if (usr_blk_len < 3) { - if (use_sc) { + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "Block 9 decoder"); - PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "Block 9 decoder"); + uint8_t pinsize = GetPinSize(decrypted + (8 * 6)); + if (pinsize > 0) { - uint8_t pinsize = GetPinSize(decrypted + (8 * 6)); - if (pinsize > 0) { - - uint64_t pin = bytes_to_num(decrypted + (8 * 9), 5); - char tmp[17] = {0}; - snprintf(tmp, sizeof(tmp), "%."PRIu64, BCD2DEC(pin)); - PrintAndLogEx(INFO, "PIN........................ " _GREEN_("%.*s"), pinsize, tmp); - } + uint64_t pin = bytes_to_num(decrypted + (8 * 9), 5); + char tmp[17] = {0}; + snprintf(tmp, sizeof(tmp), "%."PRIu64, BCD2DEC(pin)); + PrintAndLogEx(INFO, "PIN........................ " _GREEN_("%.*s"), pinsize, tmp); } } } @@ -2628,50 +2629,60 @@ static int CmdHFiClass_loclass(const char *Cmd) { } static void detect_credential(uint8_t *data, bool *legacy, bool *se, bool *sr) { - bool r1 = !memcmp(data + (5 * 8), "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", 8); + *legacy = false; + *sr = false; + *se = false; - uint8_t pattern_se[] = {0x05, 0x00}; - bool r2 = byte_strstr(data + (6 * 8), 6 * 8, pattern_se, sizeof(pattern_se)) != -1; + // Legacy AIA + if (!memcmp(data + (5 * PICOPASS_BLOCK_SIZE), "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", PICOPASS_BLOCK_SIZE)) { + *legacy = true; - uint8_t pattern_sr[] = {0x05, 0x00, 0x05, 0x00}; - bool r3 = byte_strstr(data + (11 * 8), 6 * 8, pattern_sr, sizeof(pattern_sr)) != -1; + // SR bit set in legacy config block + if ((data[6 * PICOPASS_BLOCK_SIZE] & 0xA0) == 0xA0) { + // If the card is blank (all FF's) then we'll reach here too, so check for an empty block 10 + // to avoid false positivies + if (memcmp(data + (10 * PICOPASS_BLOCK_SIZE), "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", PICOPASS_BLOCK_SIZE)) { + *sr = true; + } + } - *legacy = (r1) && (data[6 * 8] != 0x30); - *se = (r2) && (data[6 * 8] == 0x30); - *sr = (r3) && (data[10 * 8] == 0x30); - r1 = NULL, r2 = NULL, r3 = NULL; + return; + } + + // SE AIA + if (!memcmp(data + (5 * PICOPASS_BLOCK_SIZE), "\xFF\xFF\xFF\x00\x06\xFF\xFF\xFF", PICOPASS_BLOCK_SIZE)) { + *se = true; + return; + } } // print ASN1 decoded array in TLV view static void printIclassSIO(uint8_t *iclass_dump) { - bool isLegacy, isSE, isSR; detect_credential(iclass_dump, &isLegacy, &isSE, &isSR); - int dlen = 0; uint8_t *sio_start; if (isSE) { - - sio_start = iclass_dump + (6 * 8); - uint8_t pattern_se[] = {0x05, 0x00}; - dlen = byte_strstr(sio_start, 8 * 8, pattern_se, sizeof(pattern_se)); - if (dlen == -1) { - return; - } - dlen += sizeof(pattern_se); + // SE SIO starts at block 6 + sio_start = iclass_dump + (6 * PICOPASS_BLOCK_SIZE); } else if (isSR) { - - sio_start = iclass_dump + (10 * 8); - uint8_t pattern_sr[] = {0x05, 0x00, 0x05, 0x00}; - dlen = byte_strstr(sio_start, 8 * 8, pattern_sr, sizeof(pattern_sr)); - if (dlen == -1) { - return; - } - dlen += sizeof(pattern_sr); + // SR SIO starts at block 10 + sio_start = iclass_dump + (10 * PICOPASS_BLOCK_SIZE); } else { + // No SIO on Legacy credentials return; } + // Readers assume the SIO always fits within 7 blocks (they don't read any further blocks) + // Search backwards to find the last 0x05 0x00 seen at the end of the SIO + const uint8_t pattern_sio_end[] = {0x05, 0x00}; + int dlen = byte_strrstr(sio_start, 7 * PICOPASS_BLOCK_SIZE, pattern_sio_end, 2); + if (dlen == -1) { + return; + } + + dlen += sizeof(pattern_sio_end); + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "---------------------------- " _CYAN_("SIO - RAW") " ----------------------------"); print_hex_noascii_break(sio_start, dlen, 32); @@ -2702,8 +2713,15 @@ void printIclassDumpContents(uint8_t *iclass_dump, uint8_t startblock, uint8_t e else maxmemcount = 31; - if (startblock == 0) - startblock = 6; + uint8_t pagemap = get_pagemap(hdr); + + if (startblock == 0) { + if (pagemap == PICOPASS_NON_SECURE_PAGEMODE) { + startblock = 3; + } else { + startblock = 6; + } + } if ((endblock > maxmemcount) || (endblock == 0)) endblock = maxmemcount; @@ -2721,7 +2739,6 @@ void printIclassDumpContents(uint8_t *iclass_dump, uint8_t startblock, uint8_t e , filemaxblock ); */ - uint8_t pagemap = get_pagemap(hdr); bool isLegacy = false, isSE = false, isSR = false; if (filemaxblock >= 17) { @@ -2886,7 +2903,7 @@ static int CmdHFiClassView(const char *Cmd) { void *argtable[] = { arg_param_begin, arg_str1("f", "file", "", "filename of dump (bin/eml/json)"), - arg_int0(NULL, "first", "", "Begin printing from this block (default block 6)"), + arg_int0(NULL, "first", "", "Begin printing from this block (default first user block - 6 or 3 on non secured chips)"), arg_int0(NULL, "last", "", "End printing at this block (default 0, ALL)"), arg_lit0("v", "verbose", "verbose output"), arg_lit0("z", "dense", "dense dump output style"), diff --git a/client/src/util.c b/client/src/util.c index f1e58abe0..30a96a3dc 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -1289,6 +1289,25 @@ int byte_strstr(const uint8_t *src, size_t srclen, const uint8_t *pattern, size_ return -1; } +int byte_strrstr(const uint8_t *src, size_t srclen, const uint8_t *pattern, size_t plen) { + for (int i = srclen - plen; i >= 0; i--) { + // compare only first byte + if (src[i] != pattern[0]) + continue; + + // try to match rest of the pattern + for (int j = plen - 1; j >= 1; j--) { + + if (src[i + j] != pattern[j]) + break; + + if (j == 1) + return i; + } + } + return -1; +} + void sb_append_char(smartbuf *sb, unsigned char c) { if (sb->idx >= sb->size) { sb->size *= 2; diff --git a/client/src/util.h b/client/src/util.h index fa636ce9b..cfaf97167 100644 --- a/client/src/util.h +++ b/client/src/util.h @@ -155,6 +155,7 @@ uint32_t leadingzeros32(uint32_t a); uint64_t leadingzeros64(uint64_t a); int byte_strstr(const uint8_t *src, size_t srclen, const uint8_t *pattern, size_t plen); +int byte_strrstr(const uint8_t *src, size_t srclen, const uint8_t *pattern, size_t plen); struct smartbuf { char *ptr; diff --git a/doc/commands.json b/doc/commands.json index 12509b1e7..cf96b6895 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -3403,7 +3403,7 @@ "options": [ "-h, --help This help", "-f, --file filename of dump (bin/eml/json)", - "--first Begin printing from this block (default block 6)", + "--first Begin printing from this block (default first user block - 6 or 3 on non secured chips)", "--last End printing at this block (default 0, ALL)", "-v, --verbose verbose output", "-z, --dense dense dump output style" @@ -11834,6 +11834,6 @@ "metadata": { "commands_extracted": 686, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-08-22T17:13:49" + "extracted_on": "2023-08-22T23:15:58" } } \ No newline at end of file From 760bfbb39901d42df3892bb03e0d999fcde5bb27 Mon Sep 17 00:00:00 2001 From: David Driscoll Date: Wed, 23 Aug 2023 22:05:00 -0400 Subject: [PATCH 228/299] Fix macOS errors while building after cryptoRF solvers was added. --- tools/cryptorf/Makefile | 6 ++++++ tools/cryptorf/sma.cpp | 4 +--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/tools/cryptorf/Makefile b/tools/cryptorf/Makefile index 5ff3250e6..32c2c5ab4 100644 --- a/tools/cryptorf/Makefile +++ b/tools/cryptorf/Makefile @@ -8,6 +8,12 @@ MYLDLIBS = -lpthread BINS = cm sm sma sma_multi INSTALLTOOLS = $(BINS) +platform = $(shell uname) + +ifeq ($(platform),Darwin) +CXXFLAGS = -std=c++14 +endif + include ../../Makefile.host # checking platform can be done only after Makefile.host diff --git a/tools/cryptorf/sma.cpp b/tools/cryptorf/sma.cpp index 3fb1da343..9cf5caf40 100644 --- a/tools/cryptorf/sma.cpp +++ b/tools/cryptorf/sma.cpp @@ -671,13 +671,12 @@ static inline void search_gc_candidates_left(const uint64_t lstate_before_gc, co void combine_valid_left_right_states(vector *plcstates, vector *prcstates, vector *pgc_candidates) { vector::iterator itl, itr; - size_t pos, count; + size_t pos; uint64_t gc; bool valid; // Clean up the candidate list pgc_candidates->clear(); - count = 0; for (itl = plcstates->begin(); itl != plcstates->end(); ++itl) { for (itr = prcstates->begin(); itr != prcstates->end(); ++itr) { valid = true; @@ -700,7 +699,6 @@ void combine_valid_left_right_states(vector *plcstates, vector *prcs // printf("%09llx - ",itl->l); // printf("%07llx\n",itr->r); } - count++; } } printf("Found a total of " _YELLOW_("%llu")" combinations, ", ((unsigned long long)plcstates->size()) * prcstates->size()); From 42330fc5ed535b095acd6a320aedab832a265eb8 Mon Sep 17 00:00:00 2001 From: nvx Date: Thu, 24 Aug 2023 15:08:11 +1000 Subject: [PATCH 229/299] Misc tidyups replacing magic numbers with defines, better help text, and some added comments --- client/src/cmdhficlass.c | 46 +++++++++++++++++++++------------------- client/src/util.c | 5 +++++ 2 files changed, 29 insertions(+), 22 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 5204fc488..5e271a743 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -42,8 +42,10 @@ #define PICOPASS_BLOCK_SIZE 8 #define NUM_CSNS 9 +#define MAC_ITEM_SIZE 24 // csn(8) + epurse(8) + nr(4) + mac(4) = 24 bytes #define ICLASS_KEYS_MAX 8 #define ICLASS_AUTH_RETRY 10 +#define ICLASS_CFG_BLK_SR_BIT 0xA0 // indicates SIO present when set in block6[0] (legacy tags) #define ICLASS_DECRYPTION_BIN "iclass_decryptionkey.bin" static void print_picopass_info(const picopass_hdr_t *hdr); @@ -54,13 +56,13 @@ static void iclass_set_last_known_card(picopass_hdr_t *card) { memcpy(&iclass_last_known_card, card, sizeof(picopass_hdr_t)); } -static uint8_t empty[8] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; -static uint8_t zeros[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; +static uint8_t empty[PICOPASS_BLOCK_SIZE] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; +static uint8_t zeros[PICOPASS_BLOCK_SIZE] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; static int CmdHelp(const char *Cmd); static void printIclassSIO(uint8_t *iclass_dump); -static uint8_t iClass_Key_Table[ICLASS_KEYS_MAX][8] = { +static uint8_t iClass_Key_Table[ICLASS_KEYS_MAX][PICOPASS_BLOCK_SIZE] = { { 0xAE, 0xA6, 0x84, 0xA6, 0xDA, 0xB2, 0x32, 0x78 }, { 0xFD, 0xCB, 0x5A, 0x52, 0xEA, 0x8F, 0x30, 0x90 }, { 0xF0, 0xE1, 0xD2, 0xC3, 0xB4, 0xA5, 0x96, 0x87 }, @@ -747,7 +749,7 @@ static int CmdHFiClassSim(const char *Cmd) { // remember to change the define NUM_CSNS to match. // pre-defined 9 CSN by iceman - uint8_t csns[8 * NUM_CSNS] = { + uint8_t csns[NUM_CSNS * PICOPASS_BLOCK_SIZE] = { 0x01, 0x0A, 0x0F, 0xFF, 0xF7, 0xFF, 0x12, 0xE0, 0x0C, 0x06, 0x0C, 0xFE, 0xF7, 0xFF, 0x12, 0xE0, 0x10, 0x97, 0x83, 0x7B, 0xF7, 0xFF, 0x12, 0xE0, @@ -779,7 +781,7 @@ static int CmdHFiClassSim(const char *Cmd) { PrintAndLogEx(INFO, "press " _YELLOW_("`enter`") " to cancel"); PacketResponseNG resp; clearCommandBuffer(); - SendCommandMIX(CMD_HF_ICLASS_SIMULATE, sim_type, NUM_CSNS, 1, csns, 8 * NUM_CSNS); + SendCommandMIX(CMD_HF_ICLASS_SIMULATE, sim_type, NUM_CSNS, 1, csns, NUM_CSNS * PICOPASS_BLOCK_SIZE); while (WaitForResponseTimeout(CMD_ACK, &resp, 2000) == false) { tries++; @@ -799,7 +801,7 @@ static int CmdHFiClassSim(const char *Cmd) { if (num_mac == 0) break; - size_t datalen = NUM_CSNS * 24; + size_t datalen = NUM_CSNS * MAC_ITEM_SIZE; uint8_t *dump = calloc(datalen, sizeof(uint8_t)); if (!dump) { PrintAndLogEx(WARNING, "Failed to allocate memory"); @@ -811,11 +813,11 @@ static int CmdHFiClassSim(const char *Cmd) { uint8_t i = 0; for (i = 0 ; i < NUM_CSNS ; i++) { //copy CSN - memcpy(dump + i * 24, csns + i * 8, 8); + memcpy(dump + (i * MAC_ITEM_SIZE), csns + i * 8, 8); //copy epurse - memcpy(dump + i * 24 + 8, resp.data.asBytes + i * 16, 8); + memcpy(dump + (i * MAC_ITEM_SIZE) + 8, resp.data.asBytes + i * 16, 8); // NR_MAC (eight bytes from the response) ( 8b csn + 8b epurse == 16) - memcpy(dump + i * 24 + 16, resp.data.asBytes + i * 16 + 8, 8); + memcpy(dump + (i * MAC_ITEM_SIZE) + 16, resp.data.asBytes + i * 16 + 8, 8); } /** Now, save to dumpfile **/ saveFile("iclass_mac_attack", ".bin", dump, datalen); @@ -830,7 +832,7 @@ static int CmdHFiClassSim(const char *Cmd) { PrintAndLogEx(INFO, "press Enter to cancel"); PacketResponseNG resp; clearCommandBuffer(); - SendCommandMIX(CMD_HF_ICLASS_SIMULATE, sim_type, NUM_CSNS, 1, csns, 8 * NUM_CSNS); + SendCommandMIX(CMD_HF_ICLASS_SIMULATE, sim_type, NUM_CSNS, 1, csns, NUM_CSNS * PICOPASS_BLOCK_SIZE); while (WaitForResponseTimeout(CMD_ACK, &resp, 2000) == false) { tries++; @@ -850,25 +852,23 @@ static int CmdHFiClassSim(const char *Cmd) { if (num_mac == 0) break; - size_t datalen = NUM_CSNS * 24; + size_t datalen = NUM_CSNS * MAC_ITEM_SIZE; uint8_t *dump = calloc(datalen, sizeof(uint8_t)); if (!dump) { PrintAndLogEx(WARNING, "Failed to allocate memory"); return PM3_EMALLOC; } -#define MAC_ITEM_SIZE 24 - //KEYROLL 1 //Need zeroes for the CC-field memset(dump, 0, datalen); for (uint8_t i = 0; i < NUM_CSNS ; i++) { // copy CSN - memcpy(dump + i * MAC_ITEM_SIZE, csns + i * 8, 8); //CSN + memcpy(dump + (i * MAC_ITEM_SIZE), csns + i * 8, 8); //CSN // copy EPURSE - memcpy(dump + i * MAC_ITEM_SIZE + 8, resp.data.asBytes + i * 16, 8); + memcpy(dump + (i * MAC_ITEM_SIZE) + 8, resp.data.asBytes + i * 16, 8); // copy NR_MAC (eight bytes from the response) ( 8b csn + 8b epurse == 16) - memcpy(dump + i * MAC_ITEM_SIZE + 16, resp.data.asBytes + i * 16 + 8, 8); + memcpy(dump + (i * MAC_ITEM_SIZE) + 16, resp.data.asBytes + i * 16 + 8, 8); } saveFile("iclass_mac_attack_keyroll_A", ".bin", dump, datalen); @@ -877,11 +877,11 @@ static int CmdHFiClassSim(const char *Cmd) { for (uint8_t i = 0; i < NUM_CSNS; i++) { uint8_t resp_index = (i + NUM_CSNS) * 16; // Copy CSN - memcpy(dump + i * MAC_ITEM_SIZE, csns + i * 8, 8); + memcpy(dump + (i * MAC_ITEM_SIZE), csns + i * 8, 8); // copy EPURSE - memcpy(dump + i * MAC_ITEM_SIZE + 8, resp.data.asBytes + resp_index, 8); + memcpy(dump + (i * MAC_ITEM_SIZE) + 8, resp.data.asBytes + resp_index, 8); // copy NR_MAC (eight bytes from the response) ( 8b csn + 8 epurse == 16) - memcpy(dump + i * MAC_ITEM_SIZE + 16, resp.data.asBytes + resp_index + 8, 8); + memcpy(dump + (i * MAC_ITEM_SIZE) + 16, resp.data.asBytes + resp_index + 8, 8); resp_index++; } saveFile("iclass_mac_attack_keyroll_B", ".bin", dump, datalen); @@ -2638,7 +2638,7 @@ static void detect_credential(uint8_t *data, bool *legacy, bool *se, bool *sr) { *legacy = true; // SR bit set in legacy config block - if ((data[6 * PICOPASS_BLOCK_SIZE] & 0xA0) == 0xA0) { + if ((data[6 * PICOPASS_BLOCK_SIZE] & ICLASS_CFG_BLK_SR_BIT) == ICLASS_CFG_BLK_SR_BIT) { // If the card is blank (all FF's) then we'll reach here too, so check for an empty block 10 // to avoid false positivies if (memcmp(data + (10 * PICOPASS_BLOCK_SIZE), "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", PICOPASS_BLOCK_SIZE)) { @@ -2898,12 +2898,14 @@ static int CmdHFiClassView(const char *Cmd) { CLIParserInit(&ctx, "hf iclass view", "Print a iCLASS tag dump file (bin/eml/json)", "hf iclass view -f hf-iclass-AA162D30F8FF12F1-dump.bin\n" - "hf iclass view --first 1 -f hf-iclass-AA162D30F8FF12F1-dump.bin\n"); + "hf iclass view --first 1 -f hf-iclass-AA162D30F8FF12F1-dump.bin\n\n" + "If --first is not specified it will default to the first user block\n" + "which is block 6 for secured chips or block 3 for non-secured chips"); void *argtable[] = { arg_param_begin, arg_str1("f", "file", "", "filename of dump (bin/eml/json)"), - arg_int0(NULL, "first", "", "Begin printing from this block (default first user block - 6 or 3 on non secured chips)"), + arg_int0(NULL, "first", "", "Begin printing from this block (default first user block)"), arg_int0(NULL, "last", "", "End printing at this block (default 0, ALL)"), arg_lit0("v", "verbose", "verbose output"), arg_lit0("z", "dense", "dense dump output style"), diff --git a/client/src/util.c b/client/src/util.c index 30a96a3dc..e531b51ea 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -1266,6 +1266,8 @@ inline uint64_t leadingzeros64(uint64_t a) { } +// byte_strstr searches for the first occurrence of pattern in src +// returns the byte offset the pattern is found at, or -1 if not found int byte_strstr(const uint8_t *src, size_t srclen, const uint8_t *pattern, size_t plen) { size_t max = srclen - plen + 1; @@ -1289,6 +1291,9 @@ int byte_strstr(const uint8_t *src, size_t srclen, const uint8_t *pattern, size_ return -1; } +// byte_strrstr is like byte_strstr except searches in reverse +// ie it returns the last occurrence of the pattern in src instead of the first +// returns the byte offset the pattern is found at, or -1 if not found int byte_strrstr(const uint8_t *src, size_t srclen, const uint8_t *pattern, size_t plen) { for (int i = srclen - plen; i >= 0; i--) { // compare only first byte From 8dd963d305a31429bba4ae1418b65142fa39cd24 Mon Sep 17 00:00:00 2001 From: nvx Date: Thu, 24 Aug 2023 15:18:39 +1000 Subject: [PATCH 230/299] make style --- armsrc/Standalone/hf_cardhopper.c | 527 ++++++++++++++-------------- armsrc/em4x70.c | 16 +- armsrc/fpgaloader.c | 40 +-- armsrc/hitag2_crypto.c | 6 +- armsrc/spiffs.c | 4 +- client/src/proxguiqt.cpp | 14 +- common/commonutil.c | 308 ++++++++-------- doc/commands.json | 9 +- tools/cryptorf/sma.cpp | 2 +- tools/cryptorf/sma_multi.cpp | 2 +- tools/fpga_compress/fpga_compress.c | 2 +- 11 files changed, 471 insertions(+), 459 deletions(-) diff --git a/armsrc/Standalone/hf_cardhopper.c b/armsrc/Standalone/hf_cardhopper.c index 7101b5ae7..cfad35605 100644 --- a/armsrc/Standalone/hf_cardhopper.c +++ b/armsrc/Standalone/hf_cardhopper.c @@ -30,13 +30,13 @@ void ModInfo(void) { - DbpString(" HF - Long-range relay 14a over serial<->IP - a.k.a. CardHopper (Sam Haskins)"); + DbpString(" HF - Long-range relay 14a over serial<->IP - a.k.a. CardHopper (Sam Haskins)"); } typedef struct PACKED { - uint8_t len; - uint8_t dat[255]; + uint8_t len; + uint8_t dat[255]; } packet_t; // Magic numbers @@ -52,283 +52,292 @@ static void become_reader(void); static void select_card(void); static void become_card(void); -static void prepare_emulation(uint8_t*, uint16_t*, uint8_t*, packet_t*); -static void cook_ats(packet_t*, uint8_t, uint8_t); -static bool try_use_canned_response(uint8_t*, int, tag_response_info_t*); -static void reply_with_packet(packet_t*); +static void prepare_emulation(uint8_t *, uint16_t *, uint8_t *, packet_t *); +static void cook_ats(packet_t *, uint8_t, uint8_t); +static bool try_use_canned_response(uint8_t *, int, tag_response_info_t *); +static void reply_with_packet(packet_t *); -static void read_packet(packet_t*); -static void write_packet(packet_t*); +static void read_packet(packet_t *); +static void write_packet(packet_t *); -static bool GetIso14443aCommandFromReaderInterruptible(uint8_t*, uint8_t*, int*); +static bool GetIso14443aCommandFromReaderInterruptible(uint8_t *, uint8_t *, int *); void RunMod(void) { - StandAloneMode(); - DbpString(_CYAN_("[@]") " CardHopper has started - waiting for mode"); - FpgaDownloadAndGo(FPGA_BITSTREAM_HF); + StandAloneMode(); + DbpString(_CYAN_("[@]") " CardHopper has started - waiting for mode"); + FpgaDownloadAndGo(FPGA_BITSTREAM_HF); - clear_trace(); - set_tracing(true); + clear_trace(); + set_tracing(true); - // Indicate we are alive and in CardHopper - LEDsoff(); - LED_A_ON(); - LED_D_ON(); + // Indicate we are alive and in CardHopper + LEDsoff(); + LED_A_ON(); + LED_D_ON(); - while (1) { - WDT_HIT(); + while (1) { + WDT_HIT(); - packet_t modeRx = { 0 }; - read_packet(&modeRx); + packet_t modeRx = { 0 }; + read_packet(&modeRx); - if (memcmp(magicREAD, modeRx.dat, sizeof(magicREAD)) == 0) { - DbpString(_CYAN_("[@]") " I am a READER. I talk to a CARD."); - become_reader(); - } else if (memcmp(magicCARD, modeRx.dat, sizeof(magicCARD)) == 0) { - DbpString(_CYAN_("[@]") " I am a CARD. I talk to a READER."); - become_card(); - } else if (memcmp(magicEND, modeRx.dat, sizeof(magicEND)) == 0) { - break; - } else { - DbpString(_YELLOW_("[!]") " unknown mode!"); - Dbhexdump(modeRx.len, modeRx.dat, true); + if (memcmp(magicREAD, modeRx.dat, sizeof(magicREAD)) == 0) { + DbpString(_CYAN_("[@]") " I am a READER. I talk to a CARD."); + become_reader(); + } else if (memcmp(magicCARD, modeRx.dat, sizeof(magicCARD)) == 0) { + DbpString(_CYAN_("[@]") " I am a CARD. I talk to a READER."); + become_card(); + } else if (memcmp(magicEND, modeRx.dat, sizeof(magicEND)) == 0) { + break; + } else { + DbpString(_YELLOW_("[!]") " unknown mode!"); + Dbhexdump(modeRx.len, modeRx.dat, true); + } } - } - DbpString(_CYAN_("[@]") " exiting ..."); - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - LEDsoff(); + DbpString(_CYAN_("[@]") " exiting ..."); + FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + LEDsoff(); } static void become_reader(void) { - iso14443a_setup(FPGA_HF_ISO14443A_READER_MOD); - select_card(); // also sends UID, ATS + iso14443a_setup(FPGA_HF_ISO14443A_READER_MOD); + select_card(); // also sends UID, ATS - DbpString(_CYAN_("[@]") " entering reader main loop ..."); - packet_t packet = { 0 }; - packet_t *rx = &packet; - packet_t *tx = &packet; - uint8_t toCard[256] = { 0 }; - uint8_t parity[MAX_PARITY_SIZE] = { 0 }; + DbpString(_CYAN_("[@]") " entering reader main loop ..."); + packet_t packet = { 0 }; + packet_t *rx = &packet; + packet_t *tx = &packet; + uint8_t toCard[256] = { 0 }; + uint8_t parity[MAX_PARITY_SIZE] = { 0 }; - while(1) { - WDT_HIT(); + while (1) { + WDT_HIT(); - read_packet(rx); - if (memcmp(magicRSRT, rx->dat, sizeof(magicRSRT)) == 0) break; + read_packet(rx); + if (memcmp(magicRSRT, rx->dat, sizeof(magicRSRT)) == 0) break; - memcpy(toCard, rx->dat, rx->len); - AddCrc14A(toCard, rx->len); - ReaderTransmit(toCard, rx->len + 2, NULL); + memcpy(toCard, rx->dat, rx->len); + AddCrc14A(toCard, rx->len); + ReaderTransmit(toCard, rx->len + 2, NULL); - tx->len = ReaderReceive(tx->dat, parity); - if (tx->len == 0) { - tx->len = sizeof(magicERR); - memcpy(tx->dat, magicERR, sizeof(magicERR)); - } else tx->len -= 2; // cut off the CRC + tx->len = ReaderReceive(tx->dat, parity); + if (tx->len == 0) { + tx->len = sizeof(magicERR); + memcpy(tx->dat, magicERR, sizeof(magicERR)); + } else tx->len -= 2; // cut off the CRC - write_packet(tx); - } + write_packet(tx); + } } static void select_card(void) { - iso14a_card_select_t card = { 0 }; - while(1) { - WDT_HIT(); + iso14a_card_select_t card = { 0 }; + while (1) { + WDT_HIT(); - int ret = iso14443a_select_card(NULL, &card, NULL, true, 0, false); - if (ret && ret != 1) - Dbprintf(_RED_("[!]") " Error selecting card: %d", ret); - if (ret == 1) break; + int ret = iso14443a_select_card(NULL, &card, NULL, true, 0, false); + if (ret && ret != 1) + Dbprintf(_RED_("[!]") " Error selecting card: %d", ret); + if (ret == 1) break; - SpinDelay(20); - } + SpinDelay(20); + } - DbpString(_CYAN_("[@]") " UID:"); - Dbhexdump(card.uidlen, card.uid, false); - DbpString(_CYAN_("[@]") " ATS:"); - Dbhexdump(card.ats_len - 2 /* no CRC */, card.ats, false); + DbpString(_CYAN_("[@]") " UID:"); + Dbhexdump(card.uidlen, card.uid, false); + DbpString(_CYAN_("[@]") " ATS:"); + Dbhexdump(card.ats_len - 2 /* no CRC */, card.ats, false); - packet_t tx = { 0 }; - tx.len = card.uidlen; - memcpy(tx.dat, card.uid, tx.len); - write_packet(&tx); + packet_t tx = { 0 }; + tx.len = card.uidlen; + memcpy(tx.dat, card.uid, tx.len); + write_packet(&tx); - tx.len = card.ats_len - 2; - memcpy(tx.dat, card.ats, tx.len); - write_packet(&tx); + tx.len = card.ats_len - 2; + memcpy(tx.dat, card.ats, tx.len); + write_packet(&tx); } static void become_card(void) { - iso14443a_setup(FPGA_HF_ISO14443A_TAGSIM_LISTEN); + iso14443a_setup(FPGA_HF_ISO14443A_TAGSIM_LISTEN); - uint8_t tagType; - uint16_t flags; - uint8_t data[PM3_CMD_DATA_SIZE] = { 0 }; - packet_t ats = { 0 }; - prepare_emulation(&tagType, &flags, data, &ats); + uint8_t tagType; + uint16_t flags; + uint8_t data[PM3_CMD_DATA_SIZE] = { 0 }; + packet_t ats = { 0 }; + prepare_emulation(&tagType, &flags, data, &ats); - tag_response_info_t *canned; - uint32_t cuid; - uint32_t counters[3] = { 0 }; - uint8_t tearings[3] = { 0xbd, 0xbd, 0xbd }; - uint8_t pages; - SimulateIso14443aInit(tagType, flags, data, &canned, &cuid, counters, tearings, &pages); + tag_response_info_t *canned; + uint32_t cuid; + uint32_t counters[3] = { 0 }; + uint8_t tearings[3] = { 0xbd, 0xbd, 0xbd }; + uint8_t pages; + SimulateIso14443aInit(tagType, flags, data, &canned, &cuid, counters, tearings, &pages); - DbpString(_CYAN_("[@]") " Setup done - entering emulation loop"); - int fromReaderLen; - uint8_t fromReaderDat[256] = { 0 }; - uint8_t parity[MAX_PARITY_SIZE] = { 0 }; - packet_t packet = { 0 }; - packet_t *tx = &packet; - packet_t *rx = &packet; + DbpString(_CYAN_("[@]") " Setup done - entering emulation loop"); + int fromReaderLen; + uint8_t fromReaderDat[256] = { 0 }; + uint8_t parity[MAX_PARITY_SIZE] = { 0 }; + packet_t packet = { 0 }; + packet_t *tx = &packet; + packet_t *rx = &packet; - while (1) { - WDT_HIT(); + while (1) { + WDT_HIT(); - if (!GetIso14443aCommandFromReaderInterruptible(fromReaderDat, parity, &fromReaderLen)) { - if (usart_rxdata_available()) { - read_packet(rx); - if (memcmp(magicRSRT, rx->dat, sizeof(magicRSRT)) == 0) { - DbpString(_CYAN_("[@]") " Breaking from reader loop"); - break; + if (!GetIso14443aCommandFromReaderInterruptible(fromReaderDat, parity, &fromReaderLen)) { + if (usart_rxdata_available()) { + read_packet(rx); + if (memcmp(magicRSRT, rx->dat, sizeof(magicRSRT)) == 0) { + DbpString(_CYAN_("[@]") " Breaking from reader loop"); + break; + } + } + continue; } - } - continue; + + // Option 1: Use a canned response + if (try_use_canned_response(fromReaderDat, fromReaderLen, canned)) continue; + + // Option 2: Reply with our cooked ATS + if (fromReaderDat[0] == ISO14443A_CMD_RATS && fromReaderLen == 4) { + reply_with_packet(&ats); + continue; + } + + // Option 3: Relay the message + tx->len = fromReaderLen - 2; // cut off the crc + memcpy(tx->dat, fromReaderDat, tx->len); + write_packet(tx); + + read_packet(rx); + reply_with_packet(rx); } - - // Option 1: Use a canned response - if (try_use_canned_response(fromReaderDat, fromReaderLen, canned)) continue; - - // Option 2: Reply with our cooked ATS - if (fromReaderDat[0] == ISO14443A_CMD_RATS && fromReaderLen == 4) { - reply_with_packet(&ats); - continue; - } - - // Option 3: Relay the message - tx->len = fromReaderLen - 2; // cut off the crc - memcpy(tx->dat, fromReaderDat, tx->len); - write_packet(tx); - - read_packet(rx); - reply_with_packet(rx); - } } static void prepare_emulation(uint8_t *tagType, uint16_t *flags, uint8_t *data, packet_t *ats) { - packet_t tagTypeRx = { 0 }; read_packet(&tagTypeRx); - packet_t timeModeRx = { 0 }; read_packet(&timeModeRx); - packet_t uidRx = { 0 }; read_packet(&uidRx); - read_packet(ats); + packet_t tagTypeRx = { 0 }; + read_packet(&tagTypeRx); + packet_t timeModeRx = { 0 }; + read_packet(&timeModeRx); + packet_t uidRx = { 0 }; + read_packet(&uidRx); + read_packet(ats); - *tagType = tagTypeRx.dat[0]; - Dbprintf(_CYAN_("[@]") " Using tag type: %hhu", *tagType); + *tagType = tagTypeRx.dat[0]; + Dbprintf(_CYAN_("[@]") " Using tag type: %hhu", *tagType); - DbpString(_CYAN_("[@]") " Time control parameters:"); - Dbhexdump(timeModeRx.len, timeModeRx.dat, false); - uint8_t fwi = timeModeRx.dat[0] & 0x0f; - uint8_t sfgi = timeModeRx.dat[1] & 0x0f; - Dbprintf(_CYAN_("[@]") " Parsed as fwi = %hhu, sfgi = %hhu", fwi, sfgi); + DbpString(_CYAN_("[@]") " Time control parameters:"); + Dbhexdump(timeModeRx.len, timeModeRx.dat, false); + uint8_t fwi = timeModeRx.dat[0] & 0x0f; + uint8_t sfgi = timeModeRx.dat[1] & 0x0f; + Dbprintf(_CYAN_("[@]") " Parsed as fwi = %hhu, sfgi = %hhu", fwi, sfgi); - if (fwi == 0xf) { - DbpString(_YELLOW_("[!]") " Refusing to use 15 as FWI - will use 14"); - fwi = 0xe; - } - if (sfgi == 0xf) { - DbpString(_YELLOW_("[!]") " Refusing to use 15 as SFGI - will use 14"); - sfgi = 0xe; - } + if (fwi == 0xf) { + DbpString(_YELLOW_("[!]") " Refusing to use 15 as FWI - will use 14"); + fwi = 0xe; + } + if (sfgi == 0xf) { + DbpString(_YELLOW_("[!]") " Refusing to use 15 as SFGI - will use 14"); + sfgi = 0xe; + } - memcpy(data, uidRx.dat, uidRx.len); - *flags = (uidRx.len == 10 ? FLAG_10B_UID_IN_DATA : (uidRx.len == 7 ? FLAG_7B_UID_IN_DATA : FLAG_4B_UID_IN_DATA)); - DbpString(_CYAN_("[@]") " UID:"); - Dbhexdump(uidRx.len, data, false); - Dbprintf(_CYAN_("[@]") " Flags: %hu", *flags); + memcpy(data, uidRx.dat, uidRx.len); + *flags = (uidRx.len == 10 ? FLAG_10B_UID_IN_DATA : (uidRx.len == 7 ? FLAG_7B_UID_IN_DATA : FLAG_4B_UID_IN_DATA)); + DbpString(_CYAN_("[@]") " UID:"); + Dbhexdump(uidRx.len, data, false); + Dbprintf(_CYAN_("[@]") " Flags: %hu", *flags); - DbpString(_CYAN_("[@]") " Original ATS:"); - Dbhexdump(ats->len, ats->dat, false); - cook_ats(ats, fwi, sfgi); - DbpString(_CYAN_("[@]") " Cooked ATS:"); - Dbhexdump(ats->len, ats->dat, false); + DbpString(_CYAN_("[@]") " Original ATS:"); + Dbhexdump(ats->len, ats->dat, false); + cook_ats(ats, fwi, sfgi); + DbpString(_CYAN_("[@]") " Cooked ATS:"); + Dbhexdump(ats->len, ats->dat, false); } static void cook_ats(packet_t *ats, uint8_t fwi, uint8_t sfgi) { - if (ats->len != ats->dat[0]) { - DbpString(_RED_("[!]") " Malformed ATS - unable to cook; things may go wrong!"); - return; - } + if (ats->len != ats->dat[0]) { + DbpString(_RED_("[!]") " Malformed ATS - unable to cook; things may go wrong!"); + return; + } - // If the ATS is too short (unusual), pad it to length with hopefully-sensible data - // Might be better for the phone side to do this tbh - if (ats->len == 1) { - ats->len = 4; - ats->dat[0] = 0x04; ats->dat[1] = 0x78; ats->dat[2] = 0x77; ats->dat[3] = 0x80; - } else if (ats->len == 2) { - ats->len = 4; - ats->dat[0] = 0x04; ats->dat[2] = 0x77; ats->dat[3] = 0x80; - } else if (ats->len == 3) { - ats->len = 4; - ats->dat[0] = 0x04; ats->dat[3] = 0x80; - } + // If the ATS is too short (unusual), pad it to length with hopefully-sensible data + // Might be better for the phone side to do this tbh + if (ats->len == 1) { + ats->len = 4; + ats->dat[0] = 0x04; + ats->dat[1] = 0x78; + ats->dat[2] = 0x77; + ats->dat[3] = 0x80; + } else if (ats->len == 2) { + ats->len = 4; + ats->dat[0] = 0x04; + ats->dat[2] = 0x77; + ats->dat[3] = 0x80; + } else if (ats->len == 3) { + ats->len = 4; + ats->dat[0] = 0x04; + ats->dat[3] = 0x80; + } - // Set the SFGI as well as the FWI - needed for some older readers (firmware revs?) - uint8_t cookedTB0 = (fwi << 4) | sfgi; - ats->dat[3] = cookedTB0; + // Set the SFGI as well as the FWI - needed for some older readers (firmware revs?) + uint8_t cookedTB0 = (fwi << 4) | sfgi; + ats->dat[3] = cookedTB0; } static bool try_use_canned_response(uint8_t *dat, int len, tag_response_info_t *canned) { - if ((dat[0] == ISO14443A_CMD_REQA || dat[0] == ISO14443A_CMD_WUPA) && len == 1) { - EmSendPrecompiledCmd(canned + RESP_INDEX_ATQA); - return true; - } - - if (dat[1] == 0x20 && len == 2) { - if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT) { - EmSendPrecompiledCmd(canned + RESP_INDEX_UIDC1); - return true; - } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_2) { - EmSendPrecompiledCmd(canned + RESP_INDEX_UIDC2); - return true; - } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_3) { - EmSendPrecompiledCmd(canned + RESP_INDEX_UIDC3); - return true; + if ((dat[0] == ISO14443A_CMD_REQA || dat[0] == ISO14443A_CMD_WUPA) && len == 1) { + EmSendPrecompiledCmd(canned + RESP_INDEX_ATQA); + return true; } - } - if (dat[1] == 0x70 && len == 9) { - if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT) { - EmSendPrecompiledCmd(canned + RESP_INDEX_SAKC1); - return true; - } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_2) { - EmSendPrecompiledCmd(canned + RESP_INDEX_SAKC2); - return true; - } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_3) { - EmSendPrecompiledCmd(canned + RESP_INDEX_SAKC3); - return true; + if (dat[1] == 0x20 && len == 2) { + if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT) { + EmSendPrecompiledCmd(canned + RESP_INDEX_UIDC1); + return true; + } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_2) { + EmSendPrecompiledCmd(canned + RESP_INDEX_UIDC2); + return true; + } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_3) { + EmSendPrecompiledCmd(canned + RESP_INDEX_UIDC3); + return true; + } } - } - if (dat[0] == ISO14443A_CMD_PPS) { - EmSendPrecompiledCmd(canned + RESP_INDEX_PPS); - return true; - } + if (dat[1] == 0x70 && len == 9) { + if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT) { + EmSendPrecompiledCmd(canned + RESP_INDEX_SAKC1); + return true; + } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_2) { + EmSendPrecompiledCmd(canned + RESP_INDEX_SAKC2); + return true; + } else if (dat[0] == ISO14443A_CMD_ANTICOLL_OR_SELECT_3) { + EmSendPrecompiledCmd(canned + RESP_INDEX_SAKC3); + return true; + } + } - // No response is expected to these 14a commands - if ((dat[0] == 0xf2 && len == 4) || dat[0] == 0xfa) return true; - if (dat[0] == ISO14443A_CMD_HALT && len == 4) return true; + if (dat[0] == ISO14443A_CMD_PPS) { + EmSendPrecompiledCmd(canned + RESP_INDEX_PPS); + return true; + } - // Ignore Apple ECP2 polling - if (dat[0] == 0x6a) return true; + // No response is expected to these 14a commands + if ((dat[0] == 0xf2 && len == 4) || dat[0] == 0xfa) return true; + if (dat[0] == ISO14443A_CMD_HALT && len == 4) return true; - return false; + // Ignore Apple ECP2 polling + if (dat[0] == 0x6a) return true; + + return false; } @@ -336,73 +345,73 @@ static uint8_t g_responseBuffer [512 ] = { 0 }; static uint8_t g_modulationBuffer[1024] = { 0 }; static void reply_with_packet(packet_t *packet) { - tag_response_info_t response = { 0 }; - response.response = g_responseBuffer; - response.modulation = g_modulationBuffer; + tag_response_info_t response = { 0 }; + response.response = g_responseBuffer; + response.modulation = g_modulationBuffer; - memcpy(response.response, packet->dat, packet->len); - AddCrc14A(response.response, packet->len); - response.response_n = packet->len + 2; + memcpy(response.response, packet->dat, packet->len); + AddCrc14A(response.response, packet->len); + response.response_n = packet->len + 2; - prepare_tag_modulation(&response, sizeof(g_modulationBuffer)); - EmSendPrecompiledCmd(&response); + prepare_tag_modulation(&response, sizeof(g_modulationBuffer)); + EmSendPrecompiledCmd(&response); } static void read_packet(packet_t *packet) { - while(!usart_rxdata_available()) { - WDT_HIT(); - SpinDelayUs(100); - } + while (!usart_rxdata_available()) { + WDT_HIT(); + SpinDelayUs(100); + } - uint32_t dataReceived = usart_read_ng((uint8_t*) packet, sizeof(packet_t)) - 1; - while(dataReceived != packet->len) { - while(!usart_rxdata_available()) WDT_HIT(); + uint32_t dataReceived = usart_read_ng((uint8_t *) packet, sizeof(packet_t)) - 1; + while (dataReceived != packet->len) { + while (!usart_rxdata_available()) WDT_HIT(); - dataReceived += usart_read_ng(packet->dat + dataReceived, 255 - dataReceived); - } - usart_writebuffer_sync(magicACK, sizeof(magicACK)); + dataReceived += usart_read_ng(packet->dat + dataReceived, 255 - dataReceived); + } + usart_writebuffer_sync(magicACK, sizeof(magicACK)); } static void write_packet(packet_t *packet) { - usart_writebuffer_sync((uint8_t*) packet, packet->len + 1); + usart_writebuffer_sync((uint8_t *) packet, packet->len + 1); } static bool GetIso14443aCommandFromReaderInterruptible(uint8_t *received, uint8_t *par, int *len) { - LED_D_OFF(); - FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_ISO14443A | FPGA_HF_ISO14443A_TAGSIM_LISTEN); + LED_D_OFF(); + FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_ISO14443A | FPGA_HF_ISO14443A_TAGSIM_LISTEN); - Uart14aInit(received, par); + Uart14aInit(received, par); - uint8_t b = (uint8_t)AT91C_BASE_SSC->SSC_RHR; - (void)b; + uint8_t b = (uint8_t)AT91C_BASE_SSC->SSC_RHR; + (void)b; - uint8_t flip = 0; - uint16_t checker = 4000; - for (;;) { - WDT_HIT(); + uint8_t flip = 0; + uint16_t checker = 4000; + for (;;) { + WDT_HIT(); - if (flip == 3) { - if (usart_rxdata_available()) - return false; + if (flip == 3) { + if (usart_rxdata_available()) + return false; - flip = 0; + flip = 0; + } + + if (checker-- == 0) { + flip++; + checker = 4000; + } + + if (AT91C_BASE_SSC->SSC_SR & (AT91C_SSC_RXRDY)) { + b = (uint8_t)AT91C_BASE_SSC->SSC_RHR; + if (MillerDecoding(b, 0)) { + *len = GetUart14a()->len; + return true; + } + } } - - if (checker-- == 0) { - flip++; - checker = 4000; - } - - if (AT91C_BASE_SSC->SSC_SR & (AT91C_SSC_RXRDY)) { - b = (uint8_t)AT91C_BASE_SSC->SSC_RHR; - if (MillerDecoding(b, 0)) { - *len = GetUart14a()->len; - return true; - } - } - } - return false; + return false; } diff --git a/armsrc/em4x70.c b/armsrc/em4x70.c index ab73bd153..40eadb890 100644 --- a/armsrc/em4x70.c +++ b/armsrc/em4x70.c @@ -376,27 +376,27 @@ static int bruteforce(const uint8_t address, const uint8_t *rnd, const uint8_t * uint16_t rev_k = reflect16(k); switch (address) { case 9: - c = set_byte(&temp_rnd[0], rev_rnd[0] + ((rev_k ) & 0xFFu)); + c = set_byte(&temp_rnd[0], rev_rnd[0] + ((rev_k) & 0xFFu)); c = set_byte(&temp_rnd[1], rev_rnd[1] + c + ((rev_k >> 8) & 0xFFu)); c = set_byte(&temp_rnd[2], rev_rnd[2] + c); c = set_byte(&temp_rnd[3], rev_rnd[3] + c); c = set_byte(&temp_rnd[4], rev_rnd[4] + c); c = set_byte(&temp_rnd[5], rev_rnd[5] + c); - set_byte( &temp_rnd[6], rev_rnd[6] + c); + set_byte(&temp_rnd[6], rev_rnd[6] + c); break; case 8: - c = set_byte(&temp_rnd[2], rev_rnd[2] + ((rev_k ) & 0xFFu)); + c = set_byte(&temp_rnd[2], rev_rnd[2] + ((rev_k) & 0xFFu)); c = set_byte(&temp_rnd[3], rev_rnd[3] + c + ((rev_k >> 8) & 0xFFu)); c = set_byte(&temp_rnd[4], rev_rnd[4] + c); c = set_byte(&temp_rnd[5], rev_rnd[5] + c); - set_byte( &temp_rnd[6], rev_rnd[6] + c); + set_byte(&temp_rnd[6], rev_rnd[6] + c); break; case 7: - c = set_byte(&temp_rnd[4], rev_rnd[4] + ((rev_k ) & 0xFFu)); + c = set_byte(&temp_rnd[4], rev_rnd[4] + ((rev_k) & 0xFFu)); c = set_byte(&temp_rnd[5], rev_rnd[5] + c + ((rev_k >> 8) & 0xFFu)); - set_byte( &temp_rnd[6], rev_rnd[6] + c); + set_byte(&temp_rnd[6], rev_rnd[6] + c); break; default: @@ -853,8 +853,8 @@ void em4x70_write_pin(const em4x70_data_t *etd, bool ledcontrol) { if (em4x70_read_id()) { // Write new PIN - if ((write((etd->pin ) & 0xFFFF, EM4X70_PIN_WORD_UPPER) == PM3_SUCCESS) && - (write((etd->pin >> 16) & 0xFFFF, EM4X70_PIN_WORD_LOWER) == PM3_SUCCESS)) { + if ((write((etd->pin) & 0xFFFF, EM4X70_PIN_WORD_UPPER) == PM3_SUCCESS) && + (write((etd->pin >> 16) & 0xFFFF, EM4X70_PIN_WORD_LOWER) == PM3_SUCCESS)) { // Now Try to authenticate using the new PIN diff --git a/armsrc/fpgaloader.c b/armsrc/fpgaloader.c index 2d3f8caab..4d687f338 100644 --- a/armsrc/fpgaloader.c +++ b/armsrc/fpgaloader.c @@ -111,27 +111,27 @@ void SetupSpi(int mode) { AT91C_SPI_NCPHA | // Clock Phase data captured on leading edge, changes on following edge (0 << 0); // Clock Polarity inactive state is logic 0 break; -/* - case SPI_LCD_MODE: - AT91C_BASE_SPI->SPI_MR = - ( 0 << 24) | // Delay between chip selects (take default: 6 MCK periods) - (0xB << 16) | // Peripheral Chip Select (selects LCD SPI_NCS2 or PA10) - ( 0 << 7) | // Local Loopback Disabled - ( 1 << 4) | // Mode Fault Detection disabled - ( 0 << 2) | // Chip selects connected directly to peripheral - ( 0 << 1) | // Fixed Peripheral Select - ( 1 << 0); // Master Mode + /* + case SPI_LCD_MODE: + AT91C_BASE_SPI->SPI_MR = + ( 0 << 24) | // Delay between chip selects (take default: 6 MCK periods) + (0xB << 16) | // Peripheral Chip Select (selects LCD SPI_NCS2 or PA10) + ( 0 << 7) | // Local Loopback Disabled + ( 1 << 4) | // Mode Fault Detection disabled + ( 0 << 2) | // Chip selects connected directly to peripheral + ( 0 << 1) | // Fixed Peripheral Select + ( 1 << 0); // Master Mode - AT91C_BASE_SPI->SPI_CSR[2] = - ( 1 << 24) | // Delay between Consecutive Transfers (32 MCK periods) - ( 1 << 16) | // Delay Before SPCK (1 MCK period) - ( 6 << 8) | // Serial Clock Baud Rate (baudrate = MCK/6 = 24MHz/6 = 4M baud - AT91C_SPI_BITS_9 | // Bits per Transfer (9 bits) - ( 0 << 3) | // Chip Select inactive after transfer - ( 1 << 1) | // Clock Phase data captured on leading edge, changes on following edge - ( 0 << 0); // Clock Polarity inactive state is logic 0 - break; -*/ + AT91C_BASE_SPI->SPI_CSR[2] = + ( 1 << 24) | // Delay between Consecutive Transfers (32 MCK periods) + ( 1 << 16) | // Delay Before SPCK (1 MCK period) + ( 6 << 8) | // Serial Clock Baud Rate (baudrate = MCK/6 = 24MHz/6 = 4M baud + AT91C_SPI_BITS_9 | // Bits per Transfer (9 bits) + ( 0 << 3) | // Chip Select inactive after transfer + ( 1 << 1) | // Clock Phase data captured on leading edge, changes on following edge + ( 0 << 0); // Clock Polarity inactive state is logic 0 + break; + */ default: DisableSpi(); break; diff --git a/armsrc/hitag2_crypto.c b/armsrc/hitag2_crypto.c index 9b59b5521..931c17fa8 100644 --- a/armsrc/hitag2_crypto.c +++ b/armsrc/hitag2_crypto.c @@ -90,17 +90,17 @@ uint32_t _hitag2_byte(uint64_t *x) { } void hitag2_cipher_reset(struct hitag2_tag *tag, const uint8_t *iv) { - uint64_t key = ((uint64_t)tag->sectors[2][2] ) | + uint64_t key = ((uint64_t)tag->sectors[2][2]) | ((uint64_t)tag->sectors[2][3] << 8) | ((uint64_t)tag->sectors[1][0] << 16) | ((uint64_t)tag->sectors[1][1] << 24) | ((uint64_t)tag->sectors[1][2] << 32) | ((uint64_t)tag->sectors[1][3] << 40); - uint32_t uid = ((uint32_t)tag->sectors[0][0] ) | + uint32_t uid = ((uint32_t)tag->sectors[0][0]) | ((uint32_t)tag->sectors[0][1] << 8) | ((uint32_t)tag->sectors[0][2] << 16) | ((uint32_t)tag->sectors[0][3] << 24); - uint32_t iv_ = (((uint32_t)(iv[0])) ) | + uint32_t iv_ = (((uint32_t)(iv[0]))) | (((uint32_t)(iv[1])) << 8) | (((uint32_t)(iv[2])) << 16) | (((uint32_t)(iv[3])) << 24); diff --git a/armsrc/spiffs.c b/armsrc/spiffs.c index 359f2f07c..3154bfc0f 100644 --- a/armsrc/spiffs.c +++ b/armsrc/spiffs.c @@ -199,7 +199,7 @@ int rdv40_spiffs_check(void) { void write_to_spiffs(const char *filename, const uint8_t *src, uint32_t size) { spiffs_file fd = SPIFFS_open(&fs, filename, SPIFFS_CREAT | SPIFFS_TRUNC | SPIFFS_RDWR, 0); // Note: SPIFFS_write() doesn't declare third parameter as const (but should) - if (SPIFFS_write(&fs, fd, (void*)src, size) < 0) { + if (SPIFFS_write(&fs, fd, (void *)src, size) < 0) { Dbprintf("wr errno %i\n", SPIFFS_errno(&fs)); } SPIFFS_close(&fs, fd); @@ -208,7 +208,7 @@ void write_to_spiffs(const char *filename, const uint8_t *src, uint32_t size) { void append_to_spiffs(const char *filename, const uint8_t *src, uint32_t size) { spiffs_file fd = SPIFFS_open(&fs, filename, SPIFFS_APPEND | SPIFFS_RDWR, 0); // Note: SPIFFS_write() doesn't declare third parameter as const (but should) - if (SPIFFS_write(&fs, fd, (void*)src, size) < 0) { + if (SPIFFS_write(&fs, fd, (void *)src, size) < 0) { Dbprintf("errno %i\n", SPIFFS_errno(&fs)); } SPIFFS_close(&fs, fd); diff --git a/client/src/proxguiqt.cpp b/client/src/proxguiqt.cpp index e7dfe1018..1c9a05d11 100644 --- a/client/src/proxguiqt.cpp +++ b/client/src/proxguiqt.cpp @@ -854,7 +854,7 @@ void Plot::Zoom(double factor, uint32_t refX) { } } } else { // Zoom out - if (g_GraphPixelsPerPointNew >= (1.0 / ZOOM_LIMIT) ) { + if (g_GraphPixelsPerPointNew >= (1.0 / ZOOM_LIMIT)) { g_GraphPixelsPerPoint = g_GraphPixelsPerPointNew; // shift graph towards refX when zooming out if (refX > g_GraphStart) { @@ -951,7 +951,7 @@ void Plot::wheelEvent(QWheelEvent *event) { Zoom(1.0 / ZOOM_STEP, x); } } else { - Move(PageWidth * delta * move_offset / 120 ); + Move(PageWidth * delta * move_offset / 120); } this->update(); } @@ -981,7 +981,7 @@ void Plot::keyPressEvent(QKeyEvent *event) { if (event->modifiers() & Qt::ControlModifier) offset = 1; else - offset = int(ZOOM_LIMIT/g_GraphPixelsPerPoint); + offset = int(ZOOM_LIMIT / g_GraphPixelsPerPoint); } switch (event->key()) { @@ -990,13 +990,13 @@ void Plot::keyPressEvent(QKeyEvent *event) { if (event->modifiers() & Qt::ControlModifier) { Zoom(ZOOM_STEP, CursorBPos); } else { - Zoom(ZOOM_STEP*2, CursorBPos); + Zoom(ZOOM_STEP * 2, CursorBPos); } } else { if (event->modifiers() & Qt::ControlModifier) { Zoom(ZOOM_STEP, CursorAPos); } else { - Zoom(ZOOM_STEP*2, CursorAPos); + Zoom(ZOOM_STEP * 2, CursorAPos); } } break; @@ -1006,13 +1006,13 @@ void Plot::keyPressEvent(QKeyEvent *event) { if (event->modifiers() & Qt::ControlModifier) { Zoom(1.0 / ZOOM_STEP, CursorBPos); } else { - Zoom(1.0 / (ZOOM_STEP*2), CursorBPos); + Zoom(1.0 / (ZOOM_STEP * 2), CursorBPos); } } else { if (event->modifiers() & Qt::ControlModifier) { Zoom(1.0 / ZOOM_STEP, CursorAPos); } else { - Zoom(1.0 / (ZOOM_STEP*2), CursorAPos); + Zoom(1.0 / (ZOOM_STEP * 2), CursorAPos); } } break; diff --git a/common/commonutil.c b/common/commonutil.c index 11037c2f7..58e694d76 100644 --- a/common/commonutil.c +++ b/common/commonutil.c @@ -162,254 +162,254 @@ uint64_t bytes_to_num(const uint8_t *src, size_t len) { uint16_t MemLeToUint2byte(const uint8_t *data) { return (uint16_t)( - (((uint16_t)(data[1])) << (8*1)) + - (((uint16_t)(data[0])) << (8*0)) - ); + (((uint16_t)(data[1])) << (8 * 1)) + + (((uint16_t)(data[0])) << (8 * 0)) + ); } uint32_t MemLeToUint3byte(const uint8_t *data) { return (uint32_t)( - (((uint32_t)(data[2])) << (8*2)) + - (((uint32_t)(data[1])) << (8*1)) + - (((uint32_t)(data[0])) << (8*0)) - ); + (((uint32_t)(data[2])) << (8 * 2)) + + (((uint32_t)(data[1])) << (8 * 1)) + + (((uint32_t)(data[0])) << (8 * 0)) + ); } uint32_t MemLeToUint4byte(const uint8_t *data) { return (uint32_t)( - (((uint32_t)(data[3])) << (8*3)) + - (((uint32_t)(data[2])) << (8*2)) + - (((uint32_t)(data[1])) << (8*1)) + - (((uint32_t)(data[0])) << (8*0)) - ); + (((uint32_t)(data[3])) << (8 * 3)) + + (((uint32_t)(data[2])) << (8 * 2)) + + (((uint32_t)(data[1])) << (8 * 1)) + + (((uint32_t)(data[0])) << (8 * 0)) + ); } uint64_t MemLeToUint5byte(const uint8_t *data) { return (uint64_t)( - (((uint64_t)(data[4])) << (8*4)) + - (((uint64_t)(data[3])) << (8*3)) + - (((uint64_t)(data[2])) << (8*2)) + - (((uint64_t)(data[1])) << (8*1)) + - (((uint64_t)(data[0])) << (8*0)) - ); + (((uint64_t)(data[4])) << (8 * 4)) + + (((uint64_t)(data[3])) << (8 * 3)) + + (((uint64_t)(data[2])) << (8 * 2)) + + (((uint64_t)(data[1])) << (8 * 1)) + + (((uint64_t)(data[0])) << (8 * 0)) + ); } uint64_t MemLeToUint6byte(const uint8_t *data) { return (uint64_t)( - (((uint64_t)(data[5])) << (8*5)) + - (((uint64_t)(data[4])) << (8*4)) + - (((uint64_t)(data[3])) << (8*3)) + - (((uint64_t)(data[2])) << (8*2)) + - (((uint64_t)(data[1])) << (8*1)) + - (((uint64_t)(data[0])) << (8*0)) - ); + (((uint64_t)(data[5])) << (8 * 5)) + + (((uint64_t)(data[4])) << (8 * 4)) + + (((uint64_t)(data[3])) << (8 * 3)) + + (((uint64_t)(data[2])) << (8 * 2)) + + (((uint64_t)(data[1])) << (8 * 1)) + + (((uint64_t)(data[0])) << (8 * 0)) + ); } uint64_t MemLeToUint7byte(const uint8_t *data) { return (uint64_t)( - (((uint64_t)(data[6])) << (8*6)) + - (((uint64_t)(data[5])) << (8*5)) + - (((uint64_t)(data[4])) << (8*4)) + - (((uint64_t)(data[3])) << (8*3)) + - (((uint64_t)(data[2])) << (8*2)) + - (((uint64_t)(data[1])) << (8*1)) + - (((uint64_t)(data[0])) << (8*0)) - ); + (((uint64_t)(data[6])) << (8 * 6)) + + (((uint64_t)(data[5])) << (8 * 5)) + + (((uint64_t)(data[4])) << (8 * 4)) + + (((uint64_t)(data[3])) << (8 * 3)) + + (((uint64_t)(data[2])) << (8 * 2)) + + (((uint64_t)(data[1])) << (8 * 1)) + + (((uint64_t)(data[0])) << (8 * 0)) + ); } uint64_t MemLeToUint8byte(const uint8_t *data) { return (uint64_t)( - (((uint64_t)(data[7])) << (8*7)) + - (((uint64_t)(data[6])) << (8*6)) + - (((uint64_t)(data[5])) << (8*5)) + - (((uint64_t)(data[4])) << (8*4)) + - (((uint64_t)(data[3])) << (8*3)) + - (((uint64_t)(data[2])) << (8*2)) + - (((uint64_t)(data[1])) << (8*1)) + - (((uint64_t)(data[0])) << (8*0)) - ); + (((uint64_t)(data[7])) << (8 * 7)) + + (((uint64_t)(data[6])) << (8 * 6)) + + (((uint64_t)(data[5])) << (8 * 5)) + + (((uint64_t)(data[4])) << (8 * 4)) + + (((uint64_t)(data[3])) << (8 * 3)) + + (((uint64_t)(data[2])) << (8 * 2)) + + (((uint64_t)(data[1])) << (8 * 1)) + + (((uint64_t)(data[0])) << (8 * 0)) + ); } uint16_t MemBeToUint2byte(const uint8_t *data) { return (uint16_t)( - (((uint16_t)(data[0])) << (8*1)) + - (((uint16_t)(data[1])) << (8*0)) - ); + (((uint16_t)(data[0])) << (8 * 1)) + + (((uint16_t)(data[1])) << (8 * 0)) + ); } uint32_t MemBeToUint3byte(const uint8_t *data) { return (uint32_t)( - (((uint32_t)(data[0])) << (8*2)) + - (((uint32_t)(data[1])) << (8*1)) + - (((uint32_t)(data[2])) << (8*0)) - ); + (((uint32_t)(data[0])) << (8 * 2)) + + (((uint32_t)(data[1])) << (8 * 1)) + + (((uint32_t)(data[2])) << (8 * 0)) + ); } uint32_t MemBeToUint4byte(const uint8_t *data) { return (uint32_t)( - (((uint32_t)(data[0])) << (8*3)) + - (((uint32_t)(data[1])) << (8*2)) + - (((uint32_t)(data[2])) << (8*1)) + - (((uint32_t)(data[3])) << (8*0)) - ); + (((uint32_t)(data[0])) << (8 * 3)) + + (((uint32_t)(data[1])) << (8 * 2)) + + (((uint32_t)(data[2])) << (8 * 1)) + + (((uint32_t)(data[3])) << (8 * 0)) + ); } uint64_t MemBeToUint5byte(const uint8_t *data) { return (uint64_t)( - (((uint64_t)(data[0])) << (8*4)) + - (((uint64_t)(data[1])) << (8*3)) + - (((uint64_t)(data[2])) << (8*2)) + - (((uint64_t)(data[3])) << (8*1)) + - (((uint64_t)(data[4])) << (8*0)) - ); + (((uint64_t)(data[0])) << (8 * 4)) + + (((uint64_t)(data[1])) << (8 * 3)) + + (((uint64_t)(data[2])) << (8 * 2)) + + (((uint64_t)(data[3])) << (8 * 1)) + + (((uint64_t)(data[4])) << (8 * 0)) + ); } uint64_t MemBeToUint6byte(const uint8_t *data) { return (uint64_t)( - (((uint64_t)(data[0])) << (8*5)) + - (((uint64_t)(data[1])) << (8*4)) + - (((uint64_t)(data[2])) << (8*3)) + - (((uint64_t)(data[3])) << (8*2)) + - (((uint64_t)(data[4])) << (8*1)) + - (((uint64_t)(data[5])) << (8*0)) - ); + (((uint64_t)(data[0])) << (8 * 5)) + + (((uint64_t)(data[1])) << (8 * 4)) + + (((uint64_t)(data[2])) << (8 * 3)) + + (((uint64_t)(data[3])) << (8 * 2)) + + (((uint64_t)(data[4])) << (8 * 1)) + + (((uint64_t)(data[5])) << (8 * 0)) + ); } uint64_t MemBeToUint7byte(const uint8_t *data) { return (uint64_t)( - (((uint64_t)(data[0])) << (8*6)) + - (((uint64_t)(data[1])) << (8*5)) + - (((uint64_t)(data[2])) << (8*4)) + - (((uint64_t)(data[3])) << (8*3)) + - (((uint64_t)(data[4])) << (8*2)) + - (((uint64_t)(data[5])) << (8*1)) + - (((uint64_t)(data[6])) << (8*0)) - ); + (((uint64_t)(data[0])) << (8 * 6)) + + (((uint64_t)(data[1])) << (8 * 5)) + + (((uint64_t)(data[2])) << (8 * 4)) + + (((uint64_t)(data[3])) << (8 * 3)) + + (((uint64_t)(data[4])) << (8 * 2)) + + (((uint64_t)(data[5])) << (8 * 1)) + + (((uint64_t)(data[6])) << (8 * 0)) + ); } uint64_t MemBeToUint8byte(const uint8_t *data) { return (uint64_t)( - (((uint64_t)(data[0])) << (8*7)) + - (((uint64_t)(data[1])) << (8*6)) + - (((uint64_t)(data[2])) << (8*5)) + - (((uint64_t)(data[3])) << (8*4)) + - (((uint64_t)(data[4])) << (8*3)) + - (((uint64_t)(data[5])) << (8*2)) + - (((uint64_t)(data[6])) << (8*1)) + - (((uint64_t)(data[7])) << (8*0)) - ); + (((uint64_t)(data[0])) << (8 * 7)) + + (((uint64_t)(data[1])) << (8 * 6)) + + (((uint64_t)(data[2])) << (8 * 5)) + + (((uint64_t)(data[3])) << (8 * 4)) + + (((uint64_t)(data[4])) << (8 * 3)) + + (((uint64_t)(data[5])) << (8 * 2)) + + (((uint64_t)(data[6])) << (8 * 1)) + + (((uint64_t)(data[7])) << (8 * 0)) + ); } void Uint2byteToMemLe(uint8_t *data, uint16_t value) { - data[0] = (uint8_t)((value >> (8*0)) & 0xffu); - data[1] = (uint8_t)((value >> (8*1)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 0)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 1)) & 0xffu); } void Uint3byteToMemLe(uint8_t *data, uint32_t value) { - data[0] = (uint8_t)((value >> (8*0)) & 0xffu); - data[1] = (uint8_t)((value >> (8*1)) & 0xffu); - data[2] = (uint8_t)((value >> (8*2)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 0)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 2)) & 0xffu); } void Uint4byteToMemLe(uint8_t *data, uint32_t value) { - data[0] = (uint8_t)((value >> (8*0)) & 0xffu); - data[1] = (uint8_t)((value >> (8*1)) & 0xffu); - data[2] = (uint8_t)((value >> (8*2)) & 0xffu); - data[3] = (uint8_t)((value >> (8*3)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 0)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 2)) & 0xffu); + data[3] = (uint8_t)((value >> (8 * 3)) & 0xffu); } void Uint5byteToMemLe(uint8_t *data, uint64_t value) { - data[0] = (uint8_t)((value >> (8*0)) & 0xffu); - data[1] = (uint8_t)((value >> (8*1)) & 0xffu); - data[2] = (uint8_t)((value >> (8*2)) & 0xffu); - data[3] = (uint8_t)((value >> (8*3)) & 0xffu); - data[4] = (uint8_t)((value >> (8*4)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 0)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 2)) & 0xffu); + data[3] = (uint8_t)((value >> (8 * 3)) & 0xffu); + data[4] = (uint8_t)((value >> (8 * 4)) & 0xffu); } void Uint6byteToMemLe(uint8_t *data, uint64_t value) { - data[0] = (uint8_t)((value >> (8*0)) & 0xffu); - data[1] = (uint8_t)((value >> (8*1)) & 0xffu); - data[2] = (uint8_t)((value >> (8*2)) & 0xffu); - data[3] = (uint8_t)((value >> (8*3)) & 0xffu); - data[4] = (uint8_t)((value >> (8*4)) & 0xffu); - data[5] = (uint8_t)((value >> (8*5)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 0)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 2)) & 0xffu); + data[3] = (uint8_t)((value >> (8 * 3)) & 0xffu); + data[4] = (uint8_t)((value >> (8 * 4)) & 0xffu); + data[5] = (uint8_t)((value >> (8 * 5)) & 0xffu); } void Uint7byteToMemLe(uint8_t *data, uint64_t value) { - data[0] = (uint8_t)((value >> (8*0)) & 0xffu); - data[1] = (uint8_t)((value >> (8*1)) & 0xffu); - data[2] = (uint8_t)((value >> (8*2)) & 0xffu); - data[3] = (uint8_t)((value >> (8*3)) & 0xffu); - data[4] = (uint8_t)((value >> (8*4)) & 0xffu); - data[5] = (uint8_t)((value >> (8*5)) & 0xffu); - data[6] = (uint8_t)((value >> (8*6)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 0)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 2)) & 0xffu); + data[3] = (uint8_t)((value >> (8 * 3)) & 0xffu); + data[4] = (uint8_t)((value >> (8 * 4)) & 0xffu); + data[5] = (uint8_t)((value >> (8 * 5)) & 0xffu); + data[6] = (uint8_t)((value >> (8 * 6)) & 0xffu); } void Uint8byteToMemLe(uint8_t *data, uint64_t value) { - data[0] = (uint8_t)((value >> (8*0)) & 0xffu); - data[1] = (uint8_t)((value >> (8*1)) & 0xffu); - data[2] = (uint8_t)((value >> (8*2)) & 0xffu); - data[3] = (uint8_t)((value >> (8*3)) & 0xffu); - data[4] = (uint8_t)((value >> (8*4)) & 0xffu); - data[5] = (uint8_t)((value >> (8*5)) & 0xffu); - data[6] = (uint8_t)((value >> (8*6)) & 0xffu); - data[7] = (uint8_t)((value >> (8*7)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 0)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 2)) & 0xffu); + data[3] = (uint8_t)((value >> (8 * 3)) & 0xffu); + data[4] = (uint8_t)((value >> (8 * 4)) & 0xffu); + data[5] = (uint8_t)((value >> (8 * 5)) & 0xffu); + data[6] = (uint8_t)((value >> (8 * 6)) & 0xffu); + data[7] = (uint8_t)((value >> (8 * 7)) & 0xffu); } void Uint2byteToMemBe(uint8_t *data, uint16_t value) { - data[0] = (uint8_t)((value >> (8*1)) & 0xffu); - data[1] = (uint8_t)((value >> (8*0)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 0)) & 0xffu); } void Uint3byteToMemBe(uint8_t *data, uint32_t value) { - data[0] = (uint8_t)((value >> (8*2)) & 0xffu); - data[1] = (uint8_t)((value >> (8*1)) & 0xffu); - data[2] = (uint8_t)((value >> (8*0)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 2)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 0)) & 0xffu); } void Uint4byteToMemBe(uint8_t *data, uint32_t value) { - data[0] = (uint8_t)((value >> (8*3)) & 0xffu); - data[1] = (uint8_t)((value >> (8*2)) & 0xffu); - data[2] = (uint8_t)((value >> (8*1)) & 0xffu); - data[3] = (uint8_t)((value >> (8*0)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 3)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 2)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[3] = (uint8_t)((value >> (8 * 0)) & 0xffu); } void Uint5byteToMemBe(uint8_t *data, uint64_t value) { - data[0] = (uint8_t)((value >> (8*4)) & 0xffu); - data[1] = (uint8_t)((value >> (8*3)) & 0xffu); - data[2] = (uint8_t)((value >> (8*2)) & 0xffu); - data[3] = (uint8_t)((value >> (8*1)) & 0xffu); - data[4] = (uint8_t)((value >> (8*0)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 4)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 3)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 2)) & 0xffu); + data[3] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[4] = (uint8_t)((value >> (8 * 0)) & 0xffu); } void Uint6byteToMemBe(uint8_t *data, uint64_t value) { - data[0] = (uint8_t)((value >> (8*5)) & 0xffu); - data[1] = (uint8_t)((value >> (8*4)) & 0xffu); - data[2] = (uint8_t)((value >> (8*3)) & 0xffu); - data[3] = (uint8_t)((value >> (8*2)) & 0xffu); - data[4] = (uint8_t)((value >> (8*1)) & 0xffu); - data[5] = (uint8_t)((value >> (8*0)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 5)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 4)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 3)) & 0xffu); + data[3] = (uint8_t)((value >> (8 * 2)) & 0xffu); + data[4] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[5] = (uint8_t)((value >> (8 * 0)) & 0xffu); } void Uint7byteToMemBe(uint8_t *data, uint64_t value) { - data[0] = (uint8_t)((value >> (8*6)) & 0xffu); - data[1] = (uint8_t)((value >> (8*5)) & 0xffu); - data[2] = (uint8_t)((value >> (8*4)) & 0xffu); - data[3] = (uint8_t)((value >> (8*3)) & 0xffu); - data[4] = (uint8_t)((value >> (8*2)) & 0xffu); - data[5] = (uint8_t)((value >> (8*1)) & 0xffu); - data[6] = (uint8_t)((value >> (8*0)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 6)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 5)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 4)) & 0xffu); + data[3] = (uint8_t)((value >> (8 * 3)) & 0xffu); + data[4] = (uint8_t)((value >> (8 * 2)) & 0xffu); + data[5] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[6] = (uint8_t)((value >> (8 * 0)) & 0xffu); } void Uint8byteToMemBe(uint8_t *data, uint64_t value) { - data[0] = (uint8_t)((value >> (8*7)) & 0xffu); - data[1] = (uint8_t)((value >> (8*6)) & 0xffu); - data[2] = (uint8_t)((value >> (8*5)) & 0xffu); - data[3] = (uint8_t)((value >> (8*4)) & 0xffu); - data[4] = (uint8_t)((value >> (8*3)) & 0xffu); - data[5] = (uint8_t)((value >> (8*2)) & 0xffu); - data[6] = (uint8_t)((value >> (8*1)) & 0xffu); - data[7] = (uint8_t)((value >> (8*0)) & 0xffu); + data[0] = (uint8_t)((value >> (8 * 7)) & 0xffu); + data[1] = (uint8_t)((value >> (8 * 6)) & 0xffu); + data[2] = (uint8_t)((value >> (8 * 5)) & 0xffu); + data[3] = (uint8_t)((value >> (8 * 4)) & 0xffu); + data[4] = (uint8_t)((value >> (8 * 3)) & 0xffu); + data[5] = (uint8_t)((value >> (8 * 2)) & 0xffu); + data[6] = (uint8_t)((value >> (8 * 1)) & 0xffu); + data[7] = (uint8_t)((value >> (8 * 0)) & 0xffu); } // RotateLeft - Ultralight, Desfire diff --git a/doc/commands.json b/doc/commands.json index cf96b6895..895998486 100644 --- a/doc/commands.json +++ b/doc/commands.json @@ -3397,13 +3397,16 @@ "description": "Print a iCLASS tag dump file (bin/eml/json)", "notes": [ "hf iclass view -f hf-iclass-AA162D30F8FF12F1-dump.bin", - "hf iclass view --first 1 -f hf-iclass-AA162D30F8FF12F1-dump.bin" + "hf iclass view --first 1 -f hf-iclass-AA162D30F8FF12F1-dump.bin", + "", + "If --first is not specified it will default to the first user block", + "which is block 6 for secured chips or block 3 for non-secured chips" ], "offline": true, "options": [ "-h, --help This help", "-f, --file filename of dump (bin/eml/json)", - "--first Begin printing from this block (default first user block - 6 or 3 on non secured chips)", + "--first Begin printing from this block (default first user block)", "--last End printing at this block (default 0, ALL)", "-v, --verbose verbose output", "-z, --dense dense dump output style" @@ -11834,6 +11837,6 @@ "metadata": { "commands_extracted": 686, "extracted_by": "PM3Help2JSON v1.00", - "extracted_on": "2023-08-22T23:15:58" + "extracted_on": "2023-08-24T05:14:06" } } \ No newline at end of file diff --git a/tools/cryptorf/sma.cpp b/tools/cryptorf/sma.cpp index 3fb1da343..06f1729f3 100644 --- a/tools/cryptorf/sma.cpp +++ b/tools/cryptorf/sma.cpp @@ -859,4 +859,4 @@ int main(int argc, const char *argv[]) { #if defined(__cplusplus) } -#endif \ No newline at end of file +#endif diff --git a/tools/cryptorf/sma_multi.cpp b/tools/cryptorf/sma_multi.cpp index 91cf97d7c..c8f6ec0ec 100644 --- a/tools/cryptorf/sma_multi.cpp +++ b/tools/cryptorf/sma_multi.cpp @@ -1143,4 +1143,4 @@ int main(int argc, const char *argv[]) { #if defined(__cplusplus) } -#endif \ No newline at end of file +#endif diff --git a/tools/fpga_compress/fpga_compress.c b/tools/fpga_compress/fpga_compress.c index 152c8627e..ab1d93243 100644 --- a/tools/fpga_compress/fpga_compress.c +++ b/tools/fpga_compress/fpga_compress.c @@ -262,7 +262,7 @@ static int zlib_decompress(FILE *infile, FILE *outfiles[], uint8_t num_outfiles, for (uint16_t j = 0; j < num_outfiles; j++) { if (k * FPGA_INTERLEAVE_SIZE < outfilesizes[j]) { uint16_t chunk = (outfilesizes[j] - (k * FPGA_INTERLEAVE_SIZE) < FPGA_INTERLEAVE_SIZE) ? - outfilesizes[j] - (k * FPGA_INTERLEAVE_SIZE) : FPGA_INTERLEAVE_SIZE; + outfilesizes[j] - (k * FPGA_INTERLEAVE_SIZE) : FPGA_INTERLEAVE_SIZE; fwrite(outbufall + offset, chunk, sizeof(char), outfiles[j]); } From 424e68dff65946bee3d15a041caaea614534a553 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 24 Aug 2023 10:20:01 +0200 Subject: [PATCH 231/299] fixing the wrong calculations --- armsrc/iso14443b.c | 53 +++++++++++++++++++++++++---------------- client/src/cmdanalyse.c | 46 +++++++++++++++++------------------ include/iso14b.h | 15 ++++++------ 3 files changed, 63 insertions(+), 51 deletions(-) diff --git a/armsrc/iso14443b.c b/armsrc/iso14443b.c index 8fe502833..7d28255e1 100644 --- a/armsrc/iso14443b.c +++ b/armsrc/iso14443b.c @@ -39,9 +39,14 @@ * Current timing issues with ISO14443-b implementation * Proxmark3 * Carrier Frequency 13.56MHz +* 1 / 13 560 000 = 73.74 nano seconds ( 0.07374 µs ) + * SSP_CLK runs at 13.56MHz / 4 = 3,39MHz +* 1 / 3 390 000 = 294.98 nano seconds ( 0.2949 µs ) * -* +* 1 ETU = 9.4395 µs = 32 SSP_CLK = 128 FC +* 1 SSP_CLK = 4 FC +* 1 µs 3 SSP_CLK about 14 FC * PROBLEM 1. * ---------- * one way of calculating time, that relates both to PM3 ssp_clk 3.39MHz, ISO freq of 13.56Mhz and ETUs @@ -106,6 +111,9 @@ * */ + + + #ifndef MAX_14B_TIMEOUT // FWT(max) = 4949 ms or 4.95 seconds. // SSP_CLK = 4949000 * 3.39 = 16777120 @@ -122,8 +130,8 @@ // ETU 14 * 9.4395 µS = 132 µS == 0.132ms // TR2, counting from start of PICC EOF 14 ETU. -#define DELAY_ISO14443B_PICC_TO_PCD_READER ETU_TO_SSP(14) -#define DELAY_ISO14443B_PCD_TO_PICC_READER ETU_TO_SSP(15) +#define DELAY_ISO14443B_PICC_TO_PCD_READER HF14_ETU_TO_SSP(14) +#define DELAY_ISO14443B_PCD_TO_PICC_READER HF14_ETU_TO_SSP(15) /* Guard Time (per 14443-2) in ETU * @@ -138,41 +146,41 @@ * TR0 */ #ifndef ISO14B_TR0 -# define ISO14B_TR0 ETU_TO_SSP(32) +# define ISO14B_TR0 HF14_ETU_TO_SSP(16) #endif #ifndef ISO14B_TR0_MAX -# define ISO14B_TR0_MAX ETU_TO_SSP(32) +# define ISO14B_TR0_MAX HF14_ETU_TO_SSP(32) // * TR0 - 32 ETU's maximum for ATQB only // * TR0 - FWT for all other commands -// TR0 max is 151/fsc = 151/848kHz = 302us or 64 samples from FPGA -// 32 ETU * 9.4395 µS == 302 µS -// 32 * 8 = 256 sub carrier cycles, -// 256 / 4 = 64 I/Q pairs. +// TR0 max is 159 µS or 32 samples from FPGA +// 16 ETU * 9.4395 µS == 151 µS +// 16 * 8 = 128 sub carrier cycles, +// 128 / 4 = 32 I/Q pairs. // since 1 I/Q pair after 4 subcarrier cycles at 848kHz subcarrier #endif // 8 ETU = 75 µS == 256 SSP_CLK #ifndef ISO14B_TR0_MIN -# define ISO14B_TR0_MIN ETU_TO_SSP(8) +# define ISO14B_TR0_MIN HF14_ETU_TO_SSP(8) #endif // Synchronization time (per 14443-2) in ETU -// 10 ETU = 94,39 µS == 320 SSP_CLK +// 16 ETU = 151 µS == 512 SSP_CLK #ifndef ISO14B_TR1_MIN -# define ISO14B_TR1_MIN ETU_TO_SSP(10) +# define ISO14B_TR1_MIN HF14_ETU_TO_SSP(16) #endif // Synchronization time (per 14443-2) in ETU // 25 ETU == 236 µS == 800 SSP_CLK #ifndef ISO14B_TR1_MAX -# define ISO14B_TR1 ETU_TO_SSP(25) +# define ISO14B_TR1 HF14_ETU_TO_SSP(25) #endif // Frame Delay Time PICC to PCD (per 14443-3 Amendment 1) in ETU // 14 ETU == 132 µS == 448 SSP_CLK #ifndef ISO14B_TR2 -# define ISO14B_TR2 ETU_TO_SSP(14) +# define ISO14B_TR2 HF14_ETU_TO_SSP(14) #endif // 4sample @@ -440,7 +448,7 @@ static void Uart14bInit(uint8_t *data) { // param timeout accepts ETU static void iso14b_set_timeout(uint32_t timeout_etu) { - uint32_t ssp = ETU_TO_SSP(timeout_etu); + uint32_t ssp = HF14_ETU_TO_SSP(timeout_etu); if (ssp > MAX_14B_TIMEOUT) ssp = MAX_14B_TIMEOUT; @@ -1381,7 +1389,7 @@ static int Get14443bAnswerFromTag(uint8_t *response, uint16_t max_len, uint32_t } if (Demod.len > 0) { - uint32_t sof_time = *eof_time - ETU_TO_SSP( + uint32_t sof_time = *eof_time - HF14_ETU_TO_SSP( (Demod.len * (8 + 2)) // time for byte transfers // + (10) // time for TR1 + (10 + 2) // time for SOF transfer @@ -1401,7 +1409,6 @@ static void TransmitFor14443b_AsReader(uint32_t *start_time) { FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | FPGA_HF_READER_MODE_SEND_SHALLOW_MOD); - // TR2 minimum 14 ETUs if (*start_time < ISO14B_TR0) { // *start_time = DELAY_ARM_TO_TAG; @@ -1544,7 +1551,7 @@ static void CodeAndTransmit14443bAsReader(const uint8_t *cmd, int len, uint32_t // eof_time in ssp clocks, but bits was added here! // *eof_time = *start_time + (10 * ts->max) + 10 + 2 + 10; - *eof_time = *start_time + ETU_TO_SSP(8 * ts->max); + *eof_time = *start_time + HF14_ETU_TO_SSP(8 * ts->max); LogTrace(cmd, len, *start_time, *eof_time, NULL, true); } @@ -1579,7 +1586,13 @@ int iso14443b_apdu(uint8_t const *msg, size_t msg_len, bool send_chaining, void CodeAndTransmit14443bAsReader(real_cmd, msg_len + 3, &start_time, &eof_time, true); eof_time += DELAY_ISO14443B_PCD_TO_PICC_READER; - int len = Get14443bAnswerFromTag(rxdata, rxmaxlen, iso14b_timeout, &eof_time); + +// Activation frame waiting time +// 65536/fc == 4833 µS +// SSP_CLK = 4833 µS * 3.39 = 16384 + + + int len = Get14443bAnswerFromTag(rxdata, rxmaxlen, iso14b_timeout , &eof_time); FpgaDisableTracing(); uint8_t *data_bytes = (uint8_t *) rxdata; @@ -1836,7 +1849,7 @@ int iso14443b_select_xrx_card(iso14b_card_select_t *card) { int slot; for (slot = 0; slot < 4; slot++) { - start_time = eof_time + ETU_TO_SSP(30); //(24); // next slot after 24 ETU + start_time = eof_time + HF14_ETU_TO_SSP(30); //(24); // next slot after 24 ETU retlen = Get14443bAnswerFromTag(x_atqb, sizeof(x_atqb), iso14b_timeout, &eof_time); diff --git a/client/src/cmdanalyse.c b/client/src/cmdanalyse.c index d1e14d694..e8b925292 100644 --- a/client/src/cmdanalyse.c +++ b/client/src/cmdanalyse.c @@ -1116,25 +1116,24 @@ static int CmdAnalyseUnits(const char *Cmd) { PrintAndLogEx(INFO, " 302 US = %i ETU (expect 32) %s", test, (test == 10) ? _GREEN_("ok") : _RED_("fail")); PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "ETU to US conversions"); - double test_us = ETU_TO_US(1); + PrintAndLogEx(INFO, "ETU to Micro seconds (µS) conversions"); + double test_us = HF14_ETU_TO_US(1); PrintAndLogEx(INFO, " 1 ETU = %3.2f US (expect 9.44) %s", test_us, (test_us == 9.44) ? _GREEN_("ok") : _RED_("fail")); - test_us = ETU_TO_US(10); + test_us = HF14_ETU_TO_US(10); PrintAndLogEx(INFO, " 10 ETU = %4.2f US (expect 94.40) %s", test_us, (test_us == 94.40) ? _GREEN_("ok") : _RED_("fail")); - test_us = ETU_TO_US(32); + test_us = HF14_ETU_TO_US(32); PrintAndLogEx(INFO, " 32 ETU = %5.2f US (expect 302.06) %s", test_us, (test_us == 320.06) ? _GREEN_("ok") : _RED_("fail")); - PrintAndLogEx(INFO, "ETU in %f us", ONE_ETU_IN_US); PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "US to SSP CLK 3.39MHz conversions"); - PrintAndLogEx(INFO, " 9 US = %i SSP (expect 32) ", US_TO_SSP(9)); - PrintAndLogEx(INFO, " 10 US = %i SSP (expect 32 or 48) ", US_TO_SSP(10)); - PrintAndLogEx(INFO, " 94 US = %i SSP (expect 320) ", US_TO_SSP(94)); - PrintAndLogEx(INFO, " 95 US = %i SSP (expect 320 or 336) ", US_TO_SSP(95)); - PrintAndLogEx(INFO, " 302 US = %i SSP (expect 1024) ", US_TO_SSP(302)); + PrintAndLogEx(INFO, "Microseconds (µS) to SSP CLK 3.39MHz conversions"); + PrintAndLogEx(INFO, " 9 µS = %i SSP (expect 32) ", US_TO_SSP(9)); + PrintAndLogEx(INFO, " 10 µS = %i SSP (expect 32 or 48) ", US_TO_SSP(10)); + PrintAndLogEx(INFO, " 94 µS = %i SSP (expect 320) ", US_TO_SSP(94)); + PrintAndLogEx(INFO, " 95 µS = %i SSP (expect 320 or 336) ", US_TO_SSP(95)); + PrintAndLogEx(INFO, " 302 µS = %i SSP (expect 1024) ", US_TO_SSP(302)); - PrintAndLogEx(INFO, " 4949000 US = %i SSP ", US_TO_SSP(4949000)); + PrintAndLogEx(INFO, " 4949000 µS = %i SSP ", US_TO_SSP(4949000)); PrintAndLogEx(NORMAL, ""); @@ -1145,22 +1144,21 @@ static int CmdAnalyseUnits(const char *Cmd) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "ETU to SSP CLK 3.39MHz conversions"); - PrintAndLogEx(INFO, " 1 ETU = %i SSP (expect 32) " _GREEN_("ok"), ETU_TO_SSP(1)); - PrintAndLogEx(INFO, " 10 ETU = %i SSP (expect 320) " _GREEN_("ok"), ETU_TO_SSP(10)); - PrintAndLogEx(INFO, " 32 ETU = %i SSP (expect 1024) " _GREEN_("ok"), ETU_TO_SSP(32)); + PrintAndLogEx(INFO, " 1 ETU = %i SSP (expect 32) " _GREEN_("ok"), HF14_ETU_TO_SSP(1)); + PrintAndLogEx(INFO, " 10 ETU = %i SSP (expect 320) " _GREEN_("ok"), HF14_ETU_TO_SSP(10)); + PrintAndLogEx(INFO, " 32 ETU = %i SSP (expect 1024) " _GREEN_("ok"), HF14_ETU_TO_SSP(32)); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "SSP CLK 3.39MHz to ETU conversions"); - PrintAndLogEx(INFO, "1024 SSP = %i ETU (expect 32) " _GREEN_("ok"), SSP_TO_ETU(1024)); - PrintAndLogEx(INFO, " 320 SSP = %i ETU (expect 10) " _GREEN_("ok"), SSP_TO_ETU(320)); - PrintAndLogEx(INFO, " 32 SSP = %i ETU (expect 1) " _GREEN_("ok"), SSP_TO_ETU(32)); - } else if (etu) { + PrintAndLogEx(INFO, "1024 SSP = %i ETU (expect 32) " _GREEN_("ok"), HF14_SSP_TO_ETU(1024)); + PrintAndLogEx(INFO, " 320 SSP = %i ETU (expect 10) " _GREEN_("ok"), HF14_SSP_TO_ETU(320)); + PrintAndLogEx(INFO, " 32 SSP = %i ETU (expect 1) " _GREEN_("ok"), HF14_SSP_TO_ETU(32)); + } else if (etu > -1) { - PrintAndLogEx(INFO, " %3.2f ETU = %u us ", ETU_TO_US(etu), 0); - PrintAndLogEx(INFO, " %i ETU = %u SSP ", ETU_TO_SSP(etu), 0); - } else if (us) { - PrintAndLogEx(INFO, " %i us = %u ETU ", US_TO_ETU(us), 0); - PrintAndLogEx(INFO, " %i us = %u SSP ", US_TO_SSP(us), 0); + PrintAndLogEx(INFO, " %i ETU = %3.2f µS", etu, HF14_ETU_TO_US(etu)); + PrintAndLogEx(INFO, " %i ETU = %i SSP", etu, HF14_ETU_TO_SSP(etu)); + } else if (us > -1) { + PrintAndLogEx(INFO, " %i µS = %3.2f ETU = %u SSP", us, US_TO_ETU(us), US_TO_SSP(us)); } return PM3_SUCCESS; diff --git a/include/iso14b.h b/include/iso14b.h index a9b55e69c..10995eba0 100644 --- a/include/iso14b.h +++ b/include/iso14b.h @@ -65,17 +65,18 @@ typedef struct { } PACKED iso14b_raw_cmd_t; -#define US_TO_SSP(x) ( (int32_t)((x) * 3.39) ) +#define US_TO_SSP(x) ( (int32_t) ((x) * 3.39) ) #define SSP_TO_US(x) ( (int32_t)((x) / 3.39) ) -#define ETU_TO_SSP(x) ( (int32_t)((x) * 32) ) -#define SSP_TO_ETU(x) ( (int32_t)((x) / 32) ) +#define HF14_ETU_TO_SSP(x) ((x) << 5) // 1 ETU = 32 SSP +#define HF14_SSP_TO_ETU(x) ((x) >> 5) // -#define ONE_ETU_IN_US (12800000.0 / 1356000.0) -#define ETU_TO_US(x) (float)(ONE_ETU_IN_US * (x)) +#define HF14_ETU_TO_US(x) ( (float)((x) * 9.4396) ) +#define HF14_ETU_TO_US_2(x) ( (int32_t)( ((x) * 9439600) / 1000000) ) -// #define ETU_TO_US(x) ( (int32_t)( ((x) * 9440000) / 1000000) ) -#define US_TO_ETU(x) ( (int32_t)( ((x) * 1000000) / 9440000) ) +// #define US_TO_ETU(x) ( (int32_t)( ((x) * 1000000) / 9439600) ) + +#define US_TO_ETU(x) ( (float)((x) / 9.4396) ) #endif // _ISO14B_H_ From 9659bc85fee49011e5648156125ca86525a0a34b Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 24 Aug 2023 10:20:28 +0200 Subject: [PATCH 232/299] maur keys --- client/dictionaries/mfc_default_keys.dic | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 2e9be89f3..20f20f0bc 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -136,6 +136,11 @@ F1D83F964314 199404281970 199404281998 # +# Data from http://www.proxmark.org/forum/viewtopic.php?pid=25925#p25925 +# Tengo Cards Key A +FFF011223358 +FF9F11223358 +# # more Keys from mfc_default_keys.lua 000000000001 000000000002 @@ -600,6 +605,7 @@ BFB6796A11DB # Data from Salto A/B 6A1987C40A21 7F33625BC129 +6BE9314930D8 # # Data from forum 2338B4913111 From 5e9e7c6b902e005a4d88adc92512d6f08faa08bb Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 24 Aug 2023 10:21:11 +0200 Subject: [PATCH 233/299] added missing ISO14443a command WTX --- include/protocols.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/protocols.h b/include/protocols.h index 58b992717..516cdf7d3 100644 --- a/include/protocols.h +++ b/include/protocols.h @@ -178,6 +178,7 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. #define ISO14443A_CMD_RATS 0xE0 #define ISO14443A_CMD_PPS 0xD0 #define ISO14443A_CMD_NXP_DESELECT 0xC2 +#define ISO14443A_CMD_WTX 0xF2 #define MIFARE_SELECT_CT 0x88 #define MIFARE_AUTH_KEYA 0x60 From 279d6486c1d89ab29c3e71fc34dcca58845d776c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 24 Aug 2023 10:22:18 +0200 Subject: [PATCH 234/299] stylish --- client/src/cmdlft55xx.c | 61 ++++++++++++++++++++++++++++++++--------- client/src/cmdlft55xx.h | 19 +++++++------ 2 files changed, 58 insertions(+), 22 deletions(-) diff --git a/client/src/cmdlft55xx.c b/client/src/cmdlft55xx.c index ffb90513b..75475d161 100644 --- a/client/src/cmdlft55xx.c +++ b/client/src/cmdlft55xx.c @@ -4139,8 +4139,9 @@ static int CmdT55xxSniff(const char *Cmd) { blockAddr = 0; for (uint8_t i = 3; i < 6; i++) { blockAddr <<= 1; - if (data[i] == '1') + if (data[i] == '1') { blockAddr |= 1; + } } blockData = 0; have_data = true; @@ -4155,21 +4156,26 @@ static int CmdT55xxSniff(const char *Cmd) { usedPassword = 0; for (uint8_t i = 2; i <= 33; i++) { usedPassword <<= 1; - if (data[i] == '1') + if (data[i] == '1') { usedPassword |= 1; } + } + // Lock bit 34 blockData = 0; for (uint8_t i = 35; i <= 66; i++) { blockData <<= 1; - if (data[i] == '1') + if (data[i] == '1') { blockData |= 1; } + } + blockAddr = 0; for (uint8_t i = 67; i <= 69; i++) { blockAddr <<= 1; - if (data[i] == '1') + if (data[i] == '1') { blockAddr |= 1; + } } have_data = true; modeText = "Default pwd write"; @@ -4190,20 +4196,24 @@ static int CmdT55xxSniff(const char *Cmd) { blockData = 0; for (uint8_t i = 3; i <= 34; i++) { blockData <<= 1; - if (data[i] == '1') + if (data[i] == '1') { blockData |= 1; } + } + for (uint8_t i = 2; i <= 33; i++) { usedPassword <<= 1; if (data[i] == '1') { usedPassword |= 1; } } + blockAddr = 0; for (uint8_t i = 35; i <= 37; i++) { blockAddr <<= 1; - if (data[i] == '1') + if (data[i] == '1') { blockAddr |= 1; + } } have_data = true; modeText = "Default write/pwd read"; @@ -4227,21 +4237,27 @@ static int CmdT55xxSniff(const char *Cmd) { usedPassword = 0; for (uint8_t i = 5; i <= 36; i++) { usedPassword <<= 1; - if (data[i] == '1') + if (data[i] == '1') { usedPassword |= 1; } + } + blockData = 0; for (uint8_t i = 38; i <= 69; i++) { blockData <<= 1; - if (data[i] == '1') + if (data[i] == '1') { blockData |= 1; } + } + blockAddr = 0; for (uint8_t i = 70; i <= 72; i++) { blockAddr <<= 1; - if (data[i] == '1') + if (data[i] == '1') { blockAddr |= 1; } + } + have_data = true; modeText = "Leading 0 pwd write"; snprintf(pwdText, sizeof(pwdText), " %08X", usedPassword); @@ -4253,10 +4269,29 @@ static int CmdT55xxSniff(const char *Cmd) { // Print results if (have_data) { - if (blockAddr == 7) - PrintAndLogEx(SUCCESS, "%-22s | "_GREEN_("%10s")" | "_YELLOW_("%8s")" | "_YELLOW_("%d")" | "_GREEN_("%d")" | %3d | %3d | %s", modeText, pwdText, dataText, blockAddr, page, minWidth, maxWidth, data); - else - PrintAndLogEx(SUCCESS, "%-22s | "_GREEN_("%10s")" | "_GREEN_("%8s")" | "_GREEN_("%d")" | "_GREEN_("%d")" | %3d | %3d | %s", modeText, pwdText, dataText, blockAddr, page, minWidth, maxWidth, data); + if (blockAddr == 7) { + PrintAndLogEx(SUCCESS, "%-22s | "_GREEN_("%10s")" | "_YELLOW_("%8s")" | "_YELLOW_("%d")" | "_GREEN_("%d")" | %3d | %3d | %s" + , modeText + , pwdText + , dataText + , blockAddr + , page + , minWidth + , maxWidth + , data + ); + } else { + PrintAndLogEx(SUCCESS, "%-22s | "_GREEN_("%10s")" | "_GREEN_("%8s")" | "_GREEN_("%d")" | "_GREEN_("%d")" | %3d | %3d | %s" + , modeText + , pwdText + , dataText + , blockAddr + , page + , minWidth + , maxWidth + , data + ); + } } } diff --git a/client/src/cmdlft55xx.h b/client/src/cmdlft55xx.h index def6a5be6..6dbab378c 100644 --- a/client/src/cmdlft55xx.h +++ b/client/src/cmdlft55xx.h @@ -21,15 +21,15 @@ #include "common.h" -#define T55x7_CONFIGURATION_BLOCK 0x00 -#define T55x7_PWD_BLOCK 0x07 -#define T55x7_TRACE_BLOCK1 0x01 -#define T55x7_TRACE_BLOCK2 0x02 -#define T55x7_PAGE0 0x00 -#define T55x7_PAGE1 0x01 -#define T55x7_PWD 0x00000010 -#define REGULAR_READ_MODE_BLOCK 0xFF -#define T55x7_BLOCK_COUNT 12 +#define T55x7_CONFIGURATION_BLOCK 0x00 +#define T55x7_PWD_BLOCK 0x07 +#define T55x7_TRACE_BLOCK1 0x01 +#define T55x7_TRACE_BLOCK2 0x02 +#define T55x7_PAGE0 0x00 +#define T55x7_PAGE1 0x01 +#define T55x7_PWD 0x00000010 +#define REGULAR_READ_MODE_BLOCK 0xFF +#define T55x7_BLOCK_COUNT 12 // config blocks #define T55X7_DEFAULT_CONFIG_BLOCK 0x000880E8 // ASK, compat mode, data rate 32, manchester, STT, 7 data blocks @@ -70,6 +70,7 @@ #define T55X7_PAC_CONFIG_BLOCK 0x00080080 // NRZ, data rate 32, 4 data blocks #define T55X7_VERICHIP_CONFIG_BLOCK 0x000C0080 // NRZ, data rate 40, 4 data blocks + #define T55X7_bin 0b0010 // Q5 / Termic / T5555 From 62da4017a0c92d02ea8e512d2541b8d1adbb6c75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?An=C5=BEe=20Jen=C5=A1terle?= Date: Thu, 24 Aug 2023 15:26:48 +0200 Subject: [PATCH 235/299] Add Slovenian Mercator Pika keys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Anže Jenšterle --- client/dictionaries/mfc_default_keys.dic | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 20f20f0bc..b2d656969 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -2190,3 +2190,6 @@ D201DBB6AB6E 186C59E6AFC9 DDDAA35A9749 9D0D0A829F49 +# Mercator Pika Card, Slovenia +97D77FAE77D3 +5AF445D2B87A From c41c6858073c12f2948a5cc791190cf3f20bf688 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 24 Aug 2023 17:52:12 +0200 Subject: [PATCH 236/299] Merged hi_reader and hi_reader_15 into one file hi_reader_15 was a superset of hi_reader, now uses conditional compile from Makefile like the other files to select compilations options --- fpga/Makefile | 1 - fpga/fpga_pm3_top.v | 8 - fpga/hi_reader.v | 170 +++++++++++++--- fpga/hi_reader_15.v | 459 -------------------------------------------- 4 files changed, 139 insertions(+), 499 deletions(-) delete mode 100644 fpga/hi_reader_15.v diff --git a/fpga/Makefile b/fpga/Makefile index 068b75255..1731d4869 100644 --- a/fpga/Makefile +++ b/fpga/Makefile @@ -104,7 +104,6 @@ TARGET_COMMON_FILES += hi_flite.v TARGET_COMMON_FILES += hi_get_trace.v TARGET_COMMON_FILES += hi_iso14443a.v TARGET_COMMON_FILES += hi_reader.v -TARGET_COMMON_FILES += hi_reader_15.v TARGET_COMMON_FILES += hi_simulate.v TARGET_COMMON_FILES += hi_sniffer.v TARGET_COMMON_FILES += lf_edge_detect.v diff --git a/fpga/fpga_pm3_top.v b/fpga/fpga_pm3_top.v index 89bd2e56b..f200bf498 100644 --- a/fpga/fpga_pm3_top.v +++ b/fpga/fpga_pm3_top.v @@ -73,11 +73,7 @@ multiple outputs connected together therefore leading to a failed compilation //`ifdef WITH_LF2 `include "lo_passthru.v" `endif //`ifdef WITH_LF3 `include "lo_adc.v" `endif // -//`ifdef WITH_HF_15 -//`ifdef WITH_HF0 `include "hi_reader_15.v" `endif -//`else //`ifdef WITH_HF0 `include "hi_reader.v" `endif -//`endif //`ifdef WITH_HF1 `include "hi_simulate.v" `endif //`ifdef WITH_HF2 `include "hi_iso14443a.v" `endif //`ifdef WITH_HF3 `include "hi_sniffer.v" `endif @@ -277,11 +273,7 @@ assign mux6_pwr_lo = 1'b1; // HF reader `ifdef WITH_HF0 -`ifdef WITH_HF_15 -hi_reader_15 hr( -`else hi_reader hr( -`endif .ck_1356meg (ck_1356megb), .adc_d (adc_d), .subcarrier_frequency (conf_word[5:4]), diff --git a/fpga/hi_reader.v b/fpga/hi_reader.v index ffa2634d8..434215457 100644 --- a/fpga/hi_reader.v +++ b/fpga/hi_reader.v @@ -13,7 +13,7 @@ // // See LICENSE.txt for the text of the license. //----------------------------------------------------------------------------- -//`include "define.v" +// with optional support for iso15 2sc mode slected with compiler define WITH_HF_15 module hi_reader( input ck_1356meg, @@ -63,7 +63,6 @@ begin end end - // Let us report a correlation every 64 samples. I.e. // one Q/I pair after 4 subcarrier cycles for the 848kHz subcarrier, // one Q/I pair after 2 subcarrier cycles for the 424kHz subcarriers, @@ -71,10 +70,105 @@ end // We need a 6-bit counter for the timing. reg [5:0] corr_i_cnt; always @(negedge adc_clk) -begin corr_i_cnt <= corr_i_cnt + 1; -end +`ifdef WITH_HF_15 +reg [1:0] fskout = 2'd0; +reg last0 = 1'b0; + +reg [7:0] avg = 8'd0; +reg [127:0] avg128 = 128'd0; +reg [7:0] diff16 = 8'd0; +reg [7:0] diff28 = 8'd0; +reg [7:0] diff32 = 8'd0; + +reg [11:0] match16 = 12'd0; +reg [11:0] match32 = 12'd0; +reg [11:0] match28 = 12'd0; + +always @(negedge adc_clk) +begin + if (corr_i_cnt[0] == 1'b0) // every 2 clock + avg = adc_d[7:1]; + else + begin + avg = avg + adc_d[7:1]; + if (corr_i_cnt[0] == 1'b1) // every 2 clock + begin + if (avg > avg128[63:56]) + diff16 = avg - avg128[63:56]; + else + diff16 = avg128[63:56] - avg; + + if (avg > avg128[111:104]) + diff28 = avg - avg128[111:104]; + else + diff28 = avg128[111:104] - avg; + + if (avg > avg128[127:120]) + diff32 = avg - avg128[127:120]; + else + diff32 = avg128[127:120] - avg; + + avg128[127:8] = avg128[119:0]; + avg128[7:0] = avg; + + if (corr_i_cnt[4:1] == 4'b0000) // every 32 clock (8*4) + begin + match16 = diff16; + match28 = diff28; + match32 = diff32; + end + else + begin + match16 = match16 + diff16; + match28 = match28 + diff28; + match32 = match32 + diff32; + + if (corr_i_cnt[4:1] == 4'b1111) // every 32 clock (8*4) + begin + last0 = (fskout == 2'b0); + if (match16 < 12'd64 && last0) + fskout = 2'b00; // not yet started + else if ((match16 | match28 | match32) == 12'b0) + fskout = 2'b00; // signal likely ended + else if (((match16 <= match28 + 12'd16) && (match16 <= match32+ 12'd16)) || + (match28 <= 12'd16 && match32 <= 12'd16)) + begin + if (!last0) + fskout = 2'b11; // 16 match better than 28 or 32 but already started + end + else + begin + if (match28 < match32) + begin + diff28 = match32 - match28; + diff16 = match16 - match28; + if (diff28*2 > diff16) + fskout = 2'b01; + else if (!last0) + begin + fskout = 2'b01; + end + end + else //if (match32 <= match28) + begin + diff32 = match28 - match32; + diff16 = match16 - match32; + if (diff32*2 > diff16) + fskout = 2'b10; + else if (!last0) + begin + fskout = 2'b10; + end + end + end + end + end + end + end +end +`endif // A couple of registers in which to accumulate the correlations. From the 64 samples // we would add at most 32 times the difference between unmodulated and modulated signal. It should @@ -89,7 +183,6 @@ reg signed [13:0] corr_q_accum; reg signed [7:0] corr_i_out; reg signed [7:0] corr_q_out; - // the amplitude of the subcarrier is sqrt(ci^2 + cq^2). // approximate by amplitude = max(|ci|,|cq|) + 1/2*min(|ci|,|cq|) reg [13:0] corr_amplitude, abs_ci, abs_cq, max_ci_cq; @@ -122,7 +215,6 @@ begin end - // The subcarrier reference signals reg subcarrier_I; reg subcarrier_Q; @@ -130,23 +222,22 @@ reg subcarrier_Q; always @(*) begin if (subcarrier_frequency == `FPGA_HF_READER_SUBCARRIER_848_KHZ) - begin - subcarrier_I = ~corr_i_cnt[3]; - subcarrier_Q = ~(corr_i_cnt[3] ^ corr_i_cnt[2]); - end + begin + subcarrier_I = ~corr_i_cnt[3]; + subcarrier_Q = ~(corr_i_cnt[3] ^ corr_i_cnt[2]); + end else if (subcarrier_frequency == `FPGA_HF_READER_SUBCARRIER_212_KHZ) - begin - subcarrier_I = ~corr_i_cnt[5]; - subcarrier_Q = ~(corr_i_cnt[5] ^ corr_i_cnt[4]); - end + begin + subcarrier_I = ~corr_i_cnt[5]; + subcarrier_Q = ~(corr_i_cnt[5] ^ corr_i_cnt[4]); + end else - begin // 424 kHz - subcarrier_I = ~corr_i_cnt[4]; - subcarrier_Q = ~(corr_i_cnt[4] ^ corr_i_cnt[3]); - end + begin // 424 kHz + subcarrier_I = ~corr_i_cnt[4]; + subcarrier_Q = ~(corr_i_cnt[4] ^ corr_i_cnt[3]); + end end - // ADC data appears on the rising edge, so sample it on the falling edge always @(negedge adc_clk) begin @@ -157,9 +248,20 @@ begin begin if (minor_mode == `FPGA_HF_READER_MODE_SNIFF_AMPLITUDE) begin - // send amplitude plus 2 bits reader signal - corr_i_out <= corr_amplitude[13:6]; - corr_q_out <= {corr_amplitude[5:0], after_hysteresis_prev_prev, after_hysteresis_prev}; +`ifdef WITH_HF_15 + if (subcarrier_frequency == `FPGA_HF_READER_2SUBCARRIERS_424_484_KHZ) + begin + // send amplitude + 2 bits fsk (2sc) signal + 2 bits reader signal + corr_i_out <= corr_amplitude[13:6]; + corr_q_out <= {corr_amplitude[5:2], fskout, after_hysteresis_prev_prev, after_hysteresis_prev}; + end + else +`endif + begin + // send amplitude plus 2 bits reader signal + corr_i_out <= corr_amplitude[13:6]; + corr_q_out <= {corr_amplitude[5:0], after_hysteresis_prev_prev, after_hysteresis_prev}; + end end else if (minor_mode == `FPGA_HF_READER_MODE_SNIFF_IQ) begin @@ -183,13 +285,23 @@ begin end else if (minor_mode == `FPGA_HF_READER_MODE_RECEIVE_AMPLITUDE) begin - // send amplitude - corr_i_out <= {2'b00, corr_amplitude[13:8]}; - corr_q_out <= corr_amplitude[7:0]; +`ifdef WITH_HF_15 + if (subcarrier_frequency == `FPGA_HF_READER_2SUBCARRIERS_424_484_KHZ) + begin + // send 2 bits fsk (2sc) signal + amplitude + corr_i_out <= {fskout, corr_amplitude[13:8]}; + corr_q_out <= corr_amplitude[7:0]; + end + else +`endif + begin + // send amplitude + corr_i_out <= {2'b00, corr_amplitude[13:8]}; + corr_q_out <= corr_amplitude[7:0]; + end end else if (minor_mode == `FPGA_HF_READER_MODE_RECEIVE_IQ) begin - // Send 8 bits of in phase tag signal if (corr_i_accum[13:11] == 3'b000 || corr_i_accum[13:11] == 3'b111) corr_i_out <= corr_i_accum[11:4]; @@ -251,7 +363,6 @@ begin end - // ssp clock and frame signal for communication to and from ARM // _____ _____ _____ _ // ssp_clk | |_____| |_____| |_____| @@ -262,7 +373,6 @@ end // // corr_i_cnt 0 1 2 3 4 5 6 7 8 9 10 11 12 ... // - always @(negedge adc_clk) begin if (corr_i_cnt[1:0] == 2'b00) @@ -280,10 +390,8 @@ begin ssp_frame <= 1'b0; end - assign ssp_din = corr_i_out[7]; - // a jamming signal reg jam_signal; reg [3:0] jam_counter; @@ -333,7 +441,7 @@ assign pwr_oe1 = 1'b0; assign pwr_oe3 = 1'b0; // Unused. -assign pwr_lo = 1'b0; +assign pwr_lo = 1'b0; assign pwr_oe2 = 1'b0; // Debug Output diff --git a/fpga/hi_reader_15.v b/fpga/hi_reader_15.v deleted file mode 100644 index ad41e771c..000000000 --- a/fpga/hi_reader_15.v +++ /dev/null @@ -1,459 +0,0 @@ -//----------------------------------------------------------------------------- -// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// See LICENSE.txt for the text of the license. -//----------------------------------------------------------------------------- -// modified to add support for iso15 2sc mode - -module hi_reader_15( - input ck_1356meg, - input [7:0] adc_d, - input [1:0] subcarrier_frequency, - input [3:0] minor_mode, - input ssp_dout, - - output ssp_din, - output reg ssp_frame, - output reg ssp_clk, - output adc_clk, - output pwr_lo, - output reg pwr_hi, - output pwr_oe1, - output pwr_oe2, - output pwr_oe3, - output reg pwr_oe4, - output debug -); - -assign adc_clk = ck_1356meg; // sample frequency is 13,56 MHz - -// When we're a reader, we just need to do the BPSK demod; but when we're an -// eavesdropper, we also need to pick out the commands sent by the reader, -// using AM. Do this the same way that we do it for the simulated tag. -reg after_hysteresis, after_hysteresis_prev, after_hysteresis_prev_prev; -reg [11:0] has_been_low_for; -always @(negedge adc_clk) -begin - if (& adc_d[7:0]) after_hysteresis <= 1'b1; - else if (~(| adc_d[7:0])) after_hysteresis <= 1'b0; - - if (after_hysteresis) - begin - has_been_low_for <= 12'd0; - end - else - begin - if (has_been_low_for == 12'd4095) - begin - has_been_low_for <= 12'd0; - after_hysteresis <= 1'b1; - end - else - has_been_low_for <= has_been_low_for + 1; - end -end - - -// Let us report a correlation every 64 samples. I.e. -// one Q/I pair after 4 subcarrier cycles for the 848kHz subcarrier, -// one Q/I pair after 2 subcarrier cycles for the 424kHz subcarriers, -// one Q/I pair for each subcarrier cyle for the 212kHz subcarrier. -// We need a 6-bit counter for the timing. -reg [5:0] corr_i_cnt; -always @(negedge adc_clk) -begin - corr_i_cnt <= corr_i_cnt + 1; -end - - -reg [1:0] fskout = 2'd0; -reg last0 = 1'b0; - -reg [7:0] avg = 8'd0; -reg [127:0] avg128 = 128'd0; -reg [7:0] diff16 = 8'd0; -reg [7:0] diff28 = 8'd0; -reg [7:0] diff32 = 8'd0; - -reg [11:0] match16 = 12'd0; -reg [11:0] match32 = 12'd0; -reg [11:0] match28 = 12'd0; - -always @(negedge adc_clk) -begin - if (corr_i_cnt[0] == 1'b0) // every 2 clock - begin - avg = adc_d[7:1]; - end - else - begin - avg = avg + adc_d[7:1]; - if (corr_i_cnt[0] == 1'b1) // every 2 clock - begin - if (avg > avg128[63:56]) - diff16 = avg - avg128[63:56]; - else - diff16 = avg128[63:56] - avg; - - if (avg > avg128[111:104]) - diff28 = avg - avg128[111:104]; - else - diff28 = avg128[111:104] - avg; - - if (avg > avg128[127:120]) - diff32 = avg - avg128[127:120]; - else - diff32 = avg128[127:120] - avg; - - avg128[127:8] = avg128[119:0]; - avg128[7:0] = avg; - - - if (corr_i_cnt[4:1] == 4'b0000) // every 32 clock (8*4) - begin - match16 = diff16; - match28 = diff28; - match32 = diff32; - end - else - begin - match16 = match16 + diff16; - match28 = match28 + diff28; - match32 = match32 + diff32; - - if (corr_i_cnt[4:1] == 4'b1111) // every 32 clock (8*4) - begin - last0 = (fskout == 2'b0); - if (match16 < 12'd64 && last0) - fskout = 2'b00; // not yet started - else if ((match16 | match28 | match32) == 12'b0) - fskout = 2'b00; // signal likely ended - else if (((match16 <= match28 + 12'd16) && (match16 <= match32+ 12'd16)) || - (match28 <= 12'd16 && match32 <= 12'd16)) - begin - if (!last0) - fskout = 2'b11; // 16 match better than 28 or 32 but already started - end - else - begin - if (match28 < match32) - begin - diff28 = match32 - match28; - diff16 = match16 - match28; - if (diff28*2 > diff16) - fskout = 2'b01; - else if (!last0) - begin - fskout = 2'b01; - end - end - else //if (match32 <= match28) - begin - diff32 = match28 - match32; - diff16 = match16 - match32; - if (diff32*2 > diff16) - fskout = 2'b10; - else if (!last0) - begin - fskout = 2'b10; - end - end - end - end - end - end - end -end - - -// A couple of registers in which to accumulate the correlations. From the 64 samples -// we would add at most 32 times the difference between unmodulated and modulated signal. It should -// be safe to assume that a tag will not be able to modulate the carrier signal by more than 25%. -// 32 * 255 * 0,25 = 2040, which can be held in 11 bits. Add 1 bit for sign. -// Temporary we might need more bits. For the 212kHz subcarrier we could possible add 32 times the -// maximum signal value before a first subtraction would occur. 32 * 255 = 8160 can be held in 13 bits. -// Add one bit for sign -> need 14 bit registers but final result will fit into 12 bits. -reg signed [13:0] corr_i_accum; -reg signed [13:0] corr_q_accum; -// we will report maximum 8 significant bits -reg signed [7:0] corr_i_out; -reg signed [7:0] corr_q_out; - - -// the amplitude of the subcarrier is sqrt(ci^2 + cq^2). -// approximate by amplitude = max(|ci|,|cq|) + 1/2*min(|ci|,|cq|) -reg [13:0] corr_amplitude, abs_ci, abs_cq, max_ci_cq; -reg [12:0] min_ci_cq_2; // min_ci_cq / 2 - -always @(*) -begin - if (corr_i_accum[13] == 1'b0) - abs_ci <= corr_i_accum; - else - abs_ci <= -corr_i_accum; - - if (corr_q_accum[13] == 1'b0) - abs_cq <= corr_q_accum; - else - abs_cq <= -corr_q_accum; - - if (abs_ci > abs_cq) - begin - max_ci_cq <= abs_ci; - min_ci_cq_2 <= abs_cq / 2; - end - else - begin - max_ci_cq <= abs_cq; - min_ci_cq_2 <= abs_ci / 2; - end - - corr_amplitude <= max_ci_cq + min_ci_cq_2; - -end - - -// The subcarrier reference signals -reg subcarrier_I; -reg subcarrier_Q; - -always @(*) -begin - if (subcarrier_frequency == `FPGA_HF_READER_SUBCARRIER_848_KHZ) - begin - subcarrier_I = ~corr_i_cnt[3]; - subcarrier_Q = ~(corr_i_cnt[3] ^ corr_i_cnt[2]); - end - else if (subcarrier_frequency == `FPGA_HF_READER_SUBCARRIER_212_KHZ) - begin - subcarrier_I = ~corr_i_cnt[5]; - subcarrier_Q = ~(corr_i_cnt[5] ^ corr_i_cnt[4]); - end - else - begin // 424 kHz - subcarrier_I = ~corr_i_cnt[4]; - subcarrier_Q = ~(corr_i_cnt[4] ^ corr_i_cnt[3]); - end -end - - -// ADC data appears on the rising edge, so sample it on the falling edge -always @(negedge adc_clk) -begin - // These are the correlators: we correlate against in-phase and quadrature - // versions of our reference signal, and keep the (signed) results or the - // resulting amplitude to send out later over the SSP. - if (corr_i_cnt == 6'd0) - begin - if (minor_mode == `FPGA_HF_READER_MODE_SNIFF_AMPLITUDE) - begin - if (subcarrier_frequency == `FPGA_HF_READER_2SUBCARRIERS_424_484_KHZ) - begin - // send amplitude + 2 bits fsk (2sc) signal + 2 bits reader signal - corr_i_out <= corr_amplitude[13:6]; - corr_q_out <= {corr_amplitude[5:2], fskout, after_hysteresis_prev_prev, after_hysteresis_prev}; - end - else - begin - // send amplitude plus 2 bits reader signal - corr_i_out <= corr_amplitude[13:6]; - corr_q_out <= {corr_amplitude[5:0], after_hysteresis_prev_prev, after_hysteresis_prev}; - end - end - else if (minor_mode == `FPGA_HF_READER_MODE_SNIFF_IQ) - begin - // Send 7 most significant bits of in phase tag signal (signed), plus 1 bit reader signal - if (corr_i_accum[13:11] == 3'b000 || corr_i_accum[13:11] == 3'b111) - corr_i_out <= {corr_i_accum[11:5], after_hysteresis_prev_prev}; - else // truncate to maximum value - if (corr_i_accum[13] == 1'b0) - corr_i_out <= {7'b0111111, after_hysteresis_prev_prev}; - else - corr_i_out <= {7'b1000000, after_hysteresis_prev_prev}; - - // Send 7 most significant bits of quadrature phase tag signal (signed), plus 1 bit reader signal - if (corr_q_accum[13:11] == 3'b000 || corr_q_accum[13:11] == 3'b111) - corr_q_out <= {corr_q_accum[11:5], after_hysteresis_prev}; - else // truncate to maximum value - if (corr_q_accum[13] == 1'b0) - corr_q_out <= {7'b0111111, after_hysteresis_prev}; - else - corr_q_out <= {7'b1000000, after_hysteresis_prev}; - end - else if (minor_mode == `FPGA_HF_READER_MODE_RECEIVE_AMPLITUDE) - begin - if (subcarrier_frequency == `FPGA_HF_READER_2SUBCARRIERS_424_484_KHZ) - begin - // send 2 bits fsk (2sc) signal + amplitude - corr_i_out <= {fskout, corr_amplitude[13:8]}; - corr_q_out <= corr_amplitude[7:0]; - end - else - begin - // send amplitude - corr_i_out <= {2'b00, corr_amplitude[13:8]}; - corr_q_out <= corr_amplitude[7:0]; - end - end - else if (minor_mode == `FPGA_HF_READER_MODE_RECEIVE_IQ) - begin - // Send 8 bits of in phase tag signal - if (corr_i_accum[13:11] == 3'b000 || corr_i_accum[13:11] == 3'b111) - corr_i_out <= corr_i_accum[11:4]; - else // truncate to maximum value - if (corr_i_accum[13] == 1'b0) - corr_i_out <= 8'b01111111; - else - corr_i_out <= 8'b10000000; - - // Send 8 bits of quadrature phase tag signal - if (corr_q_accum[13:11] == 3'b000 || corr_q_accum[13:11] == 3'b111) - corr_q_out <= corr_q_accum[11:4]; - else // truncate to maximum value - if (corr_q_accum[13] == 1'b0) - corr_q_out <= 8'b01111111; - else - corr_q_out <= 8'b10000000; - end - - // for each Q/I pair report two reader signal samples when sniffing. Store the 1st. - after_hysteresis_prev_prev <= after_hysteresis; - - // Initialize next correlation. - // Both I and Q reference signals are high when corr_i_nct == 0. Therefore need to accumulate. - corr_i_accum <= $signed({1'b0, adc_d}); - corr_q_accum <= $signed({1'b0, adc_d}); - end - else - begin - if (subcarrier_I) - corr_i_accum <= corr_i_accum + $signed({1'b0, adc_d}); - else - corr_i_accum <= corr_i_accum - $signed({1'b0, adc_d}); - - if (subcarrier_Q) - corr_q_accum <= corr_q_accum + $signed({1'b0, adc_d}); - else - corr_q_accum <= corr_q_accum - $signed({1'b0, adc_d}); - end - - // for each Q/I pair report two reader signal samples when sniffing. Store the 2nd. - if (corr_i_cnt == 6'd32) - after_hysteresis_prev <= after_hysteresis; - - // Then the result from last time is serialized and send out to the ARM. - // We get one report each cycle, and each report is 16 bits, so the - // ssp_clk should be the adc_clk divided by 64/16 = 4. - // ssp_clk frequency = 13,56MHz / 4 = 3.39MHz - - if (corr_i_cnt[1:0] == 2'b00) - begin - // Don't shift if we just loaded new data, obviously. - if (corr_i_cnt != 6'd0) - begin - corr_i_out[7:0] <= {corr_i_out[6:0], corr_q_out[7]}; - corr_q_out[7:1] <= corr_q_out[6:0]; - end - end - -end - - -// ssp clock and frame signal for communication to and from ARM -// _____ _____ _____ _ -// ssp_clk | |_____| |_____| |_____| -// _____ -// ssp_frame ___| |____________________________ -// ___________ ___________ ___________ _ -// ssp_d_in X___________X___________X___________X_ -// -// corr_i_cnt 0 1 2 3 4 5 6 7 8 9 10 11 12 ... -// - -always @(negedge adc_clk) -begin - if (corr_i_cnt[1:0] == 2'b00) - ssp_clk <= 1'b1; - - if (corr_i_cnt[1:0] == 2'b10) - ssp_clk <= 1'b0; - - // set ssp_frame signal for corr_i_cnt = 1..3 - // (send one frame with 16 Bits) - if (corr_i_cnt == 6'd1) - ssp_frame <= 1'b1; - - if (corr_i_cnt == 6'd3) - ssp_frame <= 1'b0; -end - - -assign ssp_din = corr_i_out[7]; - - -// a jamming signal -reg jam_signal; -reg [3:0] jam_counter; - -always @(negedge adc_clk) -begin - if (corr_i_cnt == 6'd0) - begin - jam_counter <= jam_counter + 1; - jam_signal <= jam_counter[1] ^ jam_counter[3]; - end -end - -always @(*) -begin - if (minor_mode == `FPGA_HF_READER_MODE_SEND_SHALLOW_MOD) - begin - pwr_hi = ck_1356meg; - pwr_oe4 = ssp_dout; - end - else if (minor_mode == `FPGA_HF_READER_MODE_SEND_FULL_MOD) - begin - pwr_hi = ck_1356meg & ~ssp_dout; - pwr_oe4 = 1'b0; - end - else if (minor_mode == `FPGA_HF_READER_MODE_SEND_JAM) - begin - pwr_hi = ck_1356meg & jam_signal; - pwr_oe4 = 1'b0; - end - else if (minor_mode == `FPGA_HF_READER_MODE_SNIFF_IQ - || minor_mode == `FPGA_HF_READER_MODE_SNIFF_AMPLITUDE - || minor_mode == `FPGA_HF_READER_MODE_SNIFF_PHASE) - begin // all off - pwr_hi = 1'b0; - pwr_oe4 = 1'b0; - end - else // receiving from tag - begin - pwr_hi = ck_1356meg; - pwr_oe4 = 1'b0; - end -end - -// always on -assign pwr_oe1 = 1'b0; -assign pwr_oe3 = 1'b0; - -// Unused. -assign pwr_lo = 1'b0; -assign pwr_oe2 = 1'b0; - -// Debug Output -assign debug = corr_i_cnt[3]; - -endmodule From 66b1758278170df8b66c645a163f32eb16988003 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 24 Aug 2023 18:06:44 +0200 Subject: [PATCH 237/299] Removed commented out includes Include statements in individual files are not required when compiling the code the correct way as a project with an explicitly defined work library. The Makefile exactly replicates the compilation process of the ISE environment and generates the required project files. --- fpga/fpga_icopyx_hf.v | 8 -------- fpga/fpga_icopyx_lf.v | 7 ------- fpga/fpga_icopyx_top.v | 5 ----- fpga/fpga_pm3_top.v | 15 +-------------- fpga/hi_get_trace.v | 1 - fpga/hi_iso14443a.v | 1 - fpga/hi_simulate.v | 1 - fpga/lf_edge_detect.v | 3 --- fpga/lo_edge_detect.v | 3 --- fpga/mux16.v | 3 --- fpga/mux2_onein.v | 15 +++++++++++++-- fpga/mux2_oneout.v | 15 +++++++++++++-- fpga/mux8.v | 3 --- 13 files changed, 27 insertions(+), 53 deletions(-) diff --git a/fpga/fpga_icopyx_hf.v b/fpga/fpga_icopyx_hf.v index b7730875d..233c1aeab 100644 --- a/fpga/fpga_icopyx_hf.v +++ b/fpga/fpga_icopyx_hf.v @@ -20,14 +20,6 @@ // frequency modes, the FPGA might perform some demodulation first, to // reduce the amount of data that we must send to the ARM. //----------------------------------------------------------------------------- -//`include "define.v" - -//`include "hi_reader.v" -//`include "hi_simulate.v" -//`include "hi_iso14443a.v" -//`include "hi_flite.v" -//`include "hi_sniffer.v" -//`include "hi_get_trace.v" module fpga_hf( input spck, diff --git a/fpga/fpga_icopyx_lf.v b/fpga/fpga_icopyx_lf.v index 0ca4739b7..b1b890b79 100644 --- a/fpga/fpga_icopyx_lf.v +++ b/fpga/fpga_icopyx_lf.v @@ -20,13 +20,6 @@ // frequency modes, the FPGA might perform some demodulation first, to // reduce the amount of data that we must send to the ARM. //----------------------------------------------------------------------------- -//`include "define.v" - -//`include "lo_read.v" -//`include "lo_passthru.v" -//`include "lo_edge_detect.v" -//`include "lo_adc.v" -//`include "clk_divider.v" module fpga_lf( input spck, diff --git a/fpga/fpga_icopyx_top.v b/fpga/fpga_icopyx_top.v index 81aacb73c..39981e6cf 100644 --- a/fpga/fpga_icopyx_top.v +++ b/fpga/fpga_icopyx_top.v @@ -20,11 +20,6 @@ // frequency modes, the FPGA might perform some demodulation first, to // reduce the amount of data that we must send to the ARM. //----------------------------------------------------------------------------- -//`include "fpga_lf.v" -//`include "fpga_hf.v" -//`include "mux2_onein.v" -//`include "mux2_oneout.v" -//`include "util.v" module fpga_top( input spck, diff --git a/fpga/fpga_pm3_top.v b/fpga/fpga_pm3_top.v index f200bf498..89b03d3ad 100644 --- a/fpga/fpga_pm3_top.v +++ b/fpga/fpga_pm3_top.v @@ -20,18 +20,8 @@ // frequency modes, the FPGA might perform some demodulation first, to // reduce the amount of data that we must send to the ARM. //----------------------------------------------------------------------------- -/* -Once upon a time the FPGA had a 16 input mux so we could have all LF and HF modules enabled and selectable -As the functionality grew, we run out of space in the FPGA and we had to split into an "LF only" and an "HF only" FPGA bitstream -But even then after a while it was not possible to fit all the HF functions at the same time so now we have multiple "HF only" bitstreams -For example "Felica but without ISO14443", or "ISO14443 but without Felica" or "HF_15 but without Felica and ISO14443" -Because of all of the above, you can not enable both HF and LF modes at the same time, because some LF modules outputs -map to the same mux inputs as some HF modules outputs (thanks to reducing the mux from 16 to 8 inputs) and you can not have -multiple outputs connected together therefore leading to a failed compilation -*/ - -// These defines are meant to be passed by the Makefile so do not uncomment them here +// These defines are for reference only, they are passed by the Makefile so do not uncomment them here // Proxmark3 RDV4 target //`define PM3RDV4 // Proxmark3 generic target @@ -64,9 +54,6 @@ multiple outputs connected together therefore leading to a failed compilation // WITH_HF5 enables module get trace //`define WITH_HF5 -//`include "define.v" -//`include "util.v" -// //`ifdef WITH_LF `include "clk_divider.v" `endif //`ifdef WITH_LF0 `include "lo_read.v" `endif //`ifdef WITH_LF1 `include "lo_edge_detect.v" `endif diff --git a/fpga/hi_get_trace.v b/fpga/hi_get_trace.v index 9bf32bc64..cd33173b2 100644 --- a/fpga/hi_get_trace.v +++ b/fpga/hi_get_trace.v @@ -13,7 +13,6 @@ // // See LICENSE.txt for the text of the license. //----------------------------------------------------------------------------- -//`include "define.v" module hi_get_trace( input ck_1356megb, diff --git a/fpga/hi_iso14443a.v b/fpga/hi_iso14443a.v index 6fd450528..182b66f7e 100644 --- a/fpga/hi_iso14443a.v +++ b/fpga/hi_iso14443a.v @@ -14,7 +14,6 @@ // See LICENSE.txt for the text of the license. //----------------------------------------------------------------------------- // ISO14443-A support for the Proxmark III -//`include "define.v" module hi_iso14443a( input ck_1356meg, diff --git a/fpga/hi_simulate.v b/fpga/hi_simulate.v index 97346eb9b..2d8ff2771 100644 --- a/fpga/hi_simulate.v +++ b/fpga/hi_simulate.v @@ -30,7 +30,6 @@ // // Jonathan Westhues, October 2006 //----------------------------------------------------------------------------- -//`include "define.v" module hi_simulate( input ck_1356meg, diff --git a/fpga/lf_edge_detect.v b/fpga/lf_edge_detect.v index 2a58331d1..1e4cd0cce 100644 --- a/fpga/lf_edge_detect.v +++ b/fpga/lf_edge_detect.v @@ -15,9 +15,6 @@ // See LICENSE.txt for the text of the license. //----------------------------------------------------------------------------- -// input clk is 24MHz -//`include "min_max_tracker.v" - module lf_edge_detect( input clk, input [7:0] adc_d, diff --git a/fpga/lo_edge_detect.v b/fpga/lo_edge_detect.v index c820466f7..9bf408cc7 100644 --- a/fpga/lo_edge_detect.v +++ b/fpga/lo_edge_detect.v @@ -25,9 +25,6 @@ // - ssp_frame (wired to TIOA1 on the arm) for the edge detection/state // - ssp_clk: cross_lo -//`include "lp20khz_1MSa_iir_filter.v" -//`include "lf_edge_detect.v" - module lo_edge_detect( input pck0, input pck_divclk, diff --git a/fpga/mux16.v b/fpga/mux16.v index 1d9777706..b22ee6bf7 100644 --- a/fpga/mux16.v +++ b/fpga/mux16.v @@ -13,9 +13,6 @@ // // See LICENSE.txt for the text of the license. //----------------------------------------------------------------------------- -// -// General-purpose miscellany. -// // 16 inputs to 1 output multiplexer module mux16( diff --git a/fpga/mux2_onein.v b/fpga/mux2_onein.v index baefa72c8..24a53bbe4 100644 --- a/fpga/mux2_onein.v +++ b/fpga/mux2_onein.v @@ -1,9 +1,20 @@ //----------------------------------------------------------------------------- -// Two way MUX. +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. // -// kombi, 2020.05 +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. //----------------------------------------------------------------------------- +// 2 inputs to 1 output multiplexer module mux2_one( input [1:0] sel, output reg y, diff --git a/fpga/mux2_oneout.v b/fpga/mux2_oneout.v index fa61205a2..d312b68c6 100644 --- a/fpga/mux2_oneout.v +++ b/fpga/mux2_oneout.v @@ -1,9 +1,20 @@ //----------------------------------------------------------------------------- -// Two way MUX. +// Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. // -// kombi, 2020.05 +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// See LICENSE.txt for the text of the license. //----------------------------------------------------------------------------- +// 1 input to 2 outputs multiplexer module mux2_oneout( input [1:0] sel, input y, diff --git a/fpga/mux8.v b/fpga/mux8.v index d9118d243..1918db2d8 100644 --- a/fpga/mux8.v +++ b/fpga/mux8.v @@ -13,9 +13,6 @@ // // See LICENSE.txt for the text of the license. //----------------------------------------------------------------------------- -// -// General-purpose miscellany. -// // 8 inputs to 1 output multiplexer module mux8( From 3e4b7d07ff0a4effbc06b114a373bc3b4fa97764 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 24 Aug 2023 18:21:07 +0200 Subject: [PATCH 238/299] Whitespace, formatting --- fpga/clk_divider.v | 2 +- fpga/fpga_icopyx_lf.v | 8 +- fpga/hi_flite.v | 378 ++++++++++++++++++++--------------------- fpga/hi_get_trace.v | 16 +- fpga/hi_iso14443a.v | 49 ++---- fpga/hi_simulate.v | 19 +-- fpga/lf_edge_detect.v | 120 ++++++------- fpga/lo_edge_detect.v | 4 +- fpga/lo_read.v | 7 +- fpga/min_max_tracker.v | 82 ++++----- 10 files changed, 332 insertions(+), 353 deletions(-) diff --git a/fpga/clk_divider.v b/fpga/clk_divider.v index 0bcc2e608..7cb9925f3 100644 --- a/fpga/clk_divider.v +++ b/fpga/clk_divider.v @@ -22,7 +22,7 @@ module clk_divider( ); reg [7:0] div_cnt_ = 0; - reg div_clk_; + reg div_clk_ = 0; assign div_cnt = div_cnt_; assign div_clk = div_clk_; diff --git a/fpga/fpga_icopyx_lf.v b/fpga/fpga_icopyx_lf.v index b1b890b79..d1495498a 100644 --- a/fpga/fpga_icopyx_lf.v +++ b/fpga/fpga_icopyx_lf.v @@ -71,7 +71,13 @@ reg [7:0] lf_ed_threshold; wire [7:0] pck_cnt; wire pck_divclk; reg [7:0] divisor; -clk_divider div_clk(pck0, divisor, pck_cnt, pck_divclk); + +clk_divider div_clk( + .clk (pck0), + .divisor (divisor), + .div_cnt (pck_cnt), + .div_clk (pck_divclk) +); // We switch modes between transmitting to the 13.56 MHz tag and receiving // from it, which means that we must make sure that we can do so without diff --git a/fpga/hi_flite.v b/fpga/hi_flite.v index ac9e7e069..d93d67d21 100644 --- a/fpga/hi_flite.v +++ b/fpga/hi_flite.v @@ -66,7 +66,7 @@ assign adc_clk = ck_1356meg; `define min_bitdelay_212 8 //minimum values and corresponding thresholds -reg [8:0] curmin=`imin; +reg [8:0] curmin=`imin; reg [8:0] curminthres=`ithrmin; reg [8:0] curmaxthres=`ithrmax; reg [8:0] curmax=`imax; @@ -75,10 +75,10 @@ reg [8:0] curmax=`imax; reg after_hysteresis = 1'b1; //state machine for envelope tracking -reg [1:0] state=1'd0; +reg [1:0] state = 1'd0; //lower edge detected, trying to detect first bit of SYNC (b24d, 1011001001001101) -reg try_sync=1'b0; +reg try_sync = 1'b0; //detected first sync bit, phase frozen reg did_sync=0; @@ -105,32 +105,32 @@ reg zero = 1'b0; // Manchester first halfbit low second high corresponds to this reg [8:0] ssp_cnt = 9'd0; always @(posedge adc_clk) - ssp_cnt <= (ssp_cnt + 1); + ssp_cnt <= (ssp_cnt + 1); //maybe change it so that ARM sends preamble as well. //then: ready bits sent to ARM, 8 bits sent from ARM (all ones), then preamble (all zeros, presumably) - which starts modulation always @(negedge adc_clk) begin - //count fc/64 - transfer bits to ARM at the rate they are received - if( ((~speed) && (ssp_cnt[5:0] == 6'b000000)) || (speed && (ssp_cnt[4:0] == 5'b00000))) - begin - ssp_clk <= 1'b1; - //send current bit (detected in SNIFF mode or the one being modulated in MOD mode, 0 otherwise) - ssp_din <= curbit; - end - if( ( (~speed) && (ssp_cnt[5:0] == 6'b100000)) ||(speed && ssp_cnt[4:0] == 5'b10000)) - ssp_clk <= 1'b0; + //count fc/64 - transfer bits to ARM at the rate they are received + if( ((~speed) && (ssp_cnt[5:0] == 6'b000000) ) || (speed && (ssp_cnt[4:0] == 5'b00000)) ) + begin + ssp_clk <= 1'b1; + //send current bit (detected in SNIFF mode or the one being modulated in MOD mode, 0 otherwise) + ssp_din <= curbit; + end + if( ( (~speed) && (ssp_cnt[5:0] == 6'b100000)) ||(speed && ssp_cnt[4:0] == 5'b10000)) + ssp_clk <= 1'b0; //create frame pulses. TBH, I still don't know what they do exactly, but they are crucial for ARM->FPGA transfer. If the frame is in the beginning of the byte, transfer slows to a crawl for some reason // took me a day to figure THAT out. - if(( (~speed) && (ssp_cnt[8:0] == 9'd31)) || (speed && ssp_cnt[7:0] == 8'd15)) - begin - ssp_frame <= 1'b1; - end - if(( (~speed) && (ssp_cnt[8:0] == 9'b1011111)) || (speed &&ssp_cnt[7:0] == 8'b101111) ) - begin - ssp_frame <= 1'b0; - end + if(( (~speed) && (ssp_cnt[8:0] == 9'd31)) || (speed && ssp_cnt[7:0] == 8'd15)) + begin + ssp_frame <= 1'b1; + end + if(( (~speed) && (ssp_cnt[8:0] == 9'b1011111)) || (speed &&ssp_cnt[7:0] == 8'b101111) ) + begin + ssp_frame <= 1'b0; + end end //previous signal value, mostly to detect SYNC @@ -144,206 +144,200 @@ reg[7:0] mid = 8'd128; // reg sending = 1'b0; // are we actively modulating? reg [11:0] bit_counts = 12'd0; // for timeslots. only support ts=0 for now, at 212 speed -512 fullbits from end of frame. One hopes. might remove those? - //we need some way to flush bit_counts triggers on mod_type changes don't compile reg dlay; always @(negedge adc_clk) // every data ping? begin - //envelope follow code... + //envelope follow code... //////////// - if (fccount == bitmlen) - begin + if (fccount == bitmlen) + begin if ((~try_sync) && (adc_d < curminthres) && disabl ) begin - fccount <= 1; - end - else - begin - fccount <= 0; - end - dlay <= ssp_dout; - if (bit_counts > 768) // should be over ts0 now, without ARM interference... stop counting... - begin - bit_counts <= 0; - end - else - if (power) - bit_counts <= 0; - else - bit_counts <= bit_counts + 1; + fccount <= 1; end else begin + fccount <= 0; + end + dlay <= ssp_dout; + if (bit_counts > 768) // should be over ts0 now, without ARM interference... stop counting... + begin + bit_counts <= 0; + end + else + if (power) + bit_counts <= 0; + else + bit_counts <= bit_counts + 1; + end + else + begin if((~try_sync) && (adc_d < curminthres) && disabl) begin - fccount <= 1; - end - else - begin - fccount <= fccount + 1; - end + fccount <= 1; end + else + begin + fccount <= fccount + 1; + end + end - // rising edge - if (adc_d > curmaxthres) - begin + // rising edge + if (adc_d > curmaxthres) + begin case (state) - 0: begin - curmax <= adc_d > `imax? adc_d : `imax; - state <= 2; + 0: begin + curmax <= adc_d > `imax? adc_d : `imax; + state <= 2; end - 1: begin - curminthres <= ((curmin >> 1) + (curmin >> 2) + (curmin >> 4) + (curmax >> 3) + (curmax >> 4)); //threshold: 0.1875 max + 0.8125 min - curmaxthres <= ((curmax >> 1) + (curmax >> 2) + (curmax >> 4) + (curmin >> 3) + (curmin >> 4)); - curmax <= adc_d > 155 ? adc_d : 155; // to hopefully prevent overflow from spikes going up to 255 - state <= 2; + 1: begin + curminthres <= ((curmin >> 1) + (curmin >> 2) + (curmin >> 4) + (curmax >> 3) + (curmax >> 4)); //threshold: 0.1875 max + 0.8125 min + curmaxthres <= ((curmax >> 1) + (curmax >> 2) + (curmax >> 4) + (curmin >> 3) + (curmin >> 4)); + curmax <= adc_d > 155 ? adc_d : 155; // to hopefully prevent overflow from spikes going up to 255 + state <= 2; end - 2: begin - if (adc_d > curmax) - curmax <= adc_d; - end - default: + 2: begin + if (adc_d > curmax) + curmax <= adc_d; + end + default: begin end endcase after_hysteresis <= 1'b1; if(try_sync) - tsinceedge <= 0; - end - else if (adc_d> 1) + (curmin >> 2) + (curmin >> 4) + (curmax >> 3) + (curmax >> 4)); curmaxthres <= ( (curmax >> 1) + (curmax >> 2) + (curmax >> 4) + (curmin >> 3) + (curmin >> 4)); curmin <= adc_d < `imin ? adc_d : `imin; state <= 1; - end - default: - begin - end - endcase - after_hysteresis <= 0; - if (~try_sync ) //begin modulation, lower edge... - begin - try_sync <= 1; - fccount <= 1; - did_sync <= 0; - curbit <= 0; - mid <= 8'd127; - tsinceedge <= 0; - prv <= 1; - end - else - begin - tsinceedge <= 0; - end - end - else //stable state, low or high - begin - curminthres <= ( (curmin >> 1) + (curmin >> 2) + (curmin >> 4) + (curmax >> 3) + (curmax >> 4)); - curmaxthres <= ( (curmax >> 1) + (curmax >> 2) + (curmax >> 4) + (curmin >> 3) + (curmin >> 4)); - state <= 0; - - if (try_sync ) - begin - if (tsinceedge >= (128)) - begin - //we might need to start counting... assuming ARM wants to reply to the frame. - bit_counts <= 1;// i think? 128 is about 2 bits passed... but 1 also works - try_sync <= 0; - did_sync <= 0;//desync - curmin <= `imin; //reset envelope - curmax <= `imax; - curminthres <= `ithrmin; - curmaxthres <= `ithrmax; - prv <= 1; - tsinceedge <= 0; - after_hysteresis <= 1'b1; - curbit <= 0; - mid <= 8'd128; - end - else - tsinceedge <= (tsinceedge + 1); - end - end - - - if (try_sync && tsinceedge < 128) + end + default: begin - //detect bits in their middle ssp sampling is in sync, so it would sample all bits in order - if (fccount == bithalf) - begin - if ((~did_sync) && ((prv == 1 && (mid > 128))||(prv == 0 && (mid <= 128)))) - begin - //sync the Zero, and set curbit roperly - did_sync <= 1'b1; - zero <= ~prv;// 1-prv - curbit <= 1; - end + end + endcase + after_hysteresis <= 0; + if (~try_sync ) //begin modulation, lower edge... + begin + try_sync <= 1; + fccount <= 1; + did_sync <= 0; + curbit <= 0; + mid <= 8'd127; + tsinceedge <= 0; + prv <= 1; + end + else + begin + tsinceedge <= 0; + end + end + else //stable state, low or high + begin + curminthres <= ( (curmin >> 1) + (curmin >> 2) + (curmin >> 4) + (curmax >> 3) + (curmax >> 4)); + curmaxthres <= ( (curmax >> 1) + (curmax >> 2) + (curmax >> 4) + (curmin >> 3) + (curmin >> 4)); + state <= 0; + + if (try_sync ) + begin + if (tsinceedge >= (128)) + begin + //we might need to start counting... assuming ARM wants to reply to the frame. + bit_counts <= 1;// i think? 128 is about 2 bits passed... but 1 also works + try_sync <= 0; + did_sync <= 0;//desync + curmin <= `imin; //reset envelope + curmax <= `imax; + curminthres <= `ithrmin; + curmaxthres <= `ithrmax; + prv <= 1; + tsinceedge <= 0; + after_hysteresis <= 1'b1; + curbit <= 0; + mid <= 8'd128; + end + else + tsinceedge <= (tsinceedge + 1); + end + end + + if (try_sync && tsinceedge < 128) + begin + //detect bits in their middle ssp sampling is in sync, so it would sample all bits in order + if (fccount == bithalf) + begin + if ((~did_sync) && ((prv == 1 && (mid > 128))||(prv == 0 && (mid <= 128)))) + begin + //sync the Zero, and set curbit roperly + did_sync <= 1'b1; + zero <= ~prv;// 1-prv + curbit <= 1; + end + else + curbit <= (mid > 128) ? (~zero) : zero; + + prv <= (mid > 128) ? 1 : 0; + + if (adc_d > curmaxthres) + mid <= 8'd129; + else if (adc_d < curminthres) + mid <= 8'd127; + else + begin + if (after_hysteresis) + begin + mid <= 8'd129; + end else - curbit <= (mid > 128) ? (~zero) : zero; - - prv <= (mid > 128) ? 1 : 0; - - if (adc_d > curmaxthres) - mid <= 8'd129; - else if (adc_d < curminthres) - mid <= 8'd127; - else - begin - if (after_hysteresis) - begin - mid <= 8'd129; - end - else - begin - mid <= 8'd127; - end - end - - end - else - begin - if (fccount==bitmlen) - begin - // fccount <= 0; - prv <= (mid > 128) ? 1 : 0; - mid <= 128; - end - else - begin + begin + mid <= 8'd127; + end + end + end + else + begin + if (fccount==bitmlen) + begin + // fccount <= 0; + prv <= (mid > 128) ? 1 : 0; + mid <= 128; + end + else + begin // minimum-maximum calc - if(adc_d > curmaxthres) - mid <= mid + 1; - else if (adc_d < curminthres) + if(adc_d > curmaxthres) + mid <= mid + 1; + else if (adc_d < curminthres) mid <= mid - 1; - else + else begin - if (after_hysteresis) - begin - mid <= mid + 1; - end - else - begin - mid <= mid - 1; - end + if (after_hysteresis) + begin + mid <= mid + 1; + end + else + begin + mid <= mid - 1; + end end - end - end end - else - begin - end -// sending <= 0; + end + end +// sending <= 0; end //put modulation here to maintain the correct clock. Seems that some readers are sensitive to that @@ -353,23 +347,23 @@ wire mod = ((fccount >= bithalf) ^ dlay) & (~disabl); always @(ck_1356meg or ssp_dout or power or disabl or mod) begin if (power) - begin + begin pwr_hi <= ck_1356meg; pwr_lo <= 1'b0; pwr_oe1 <= 1'b0;//mod; pwr_oe2 <= 1'b0;//mod; pwr_oe3 <= 1'b0;//mod; pwr_oe4 <= mod;//1'b0; - end + end else - begin + begin pwr_hi <= 1'b0; pwr_lo <= 1'b0; pwr_oe1 <= 1'b0; pwr_oe2 <= 1'b0; pwr_oe3 <= 1'b0; pwr_oe4 <= mod; - end + end end endmodule diff --git a/fpga/hi_get_trace.v b/fpga/hi_get_trace.v index cd33173b2..b577ff6be 100644 --- a/fpga/hi_get_trace.v +++ b/fpga/hi_get_trace.v @@ -105,13 +105,12 @@ begin write_enable1 <= 1'b0; write_enable2 <= 1'b0; if (previous_major_mode != `FPGA_MAJOR_MODE_OFF && previous_major_mode != `FPGA_MAJOR_MODE_HF_GET_TRACE) // just switched off - begin + begin start_addr <= addr; - end + end end end - // (2+1)k RAM reg [7:0] D_out1, D_out2; reg [7:0] ram1 [2047:0]; // 2048 u8 @@ -127,7 +126,7 @@ begin else D_out1 <= ram1[addr[10:0]]; if (write_enable2) -begin + begin ram2[addr[9:0]] <= adc_d; D_out2 <= adc_d; end @@ -135,7 +134,6 @@ begin D_out2 <= ram2[addr[9:0]]; end - reg [7:0] shift_out; always @(negedge ck_1356megb) @@ -150,10 +148,10 @@ begin shift_out <= D_out2; end else - begin - // or shift left - shift_out[7:1] <= shift_out[6:0]; - end + begin + // or shift left + shift_out[7:1] <= shift_out[6:0]; + end end ssp_clk <= ~clock_cnt[3]; // ssp_clk frequency = 13,56MHz / 16 = 847,5 kHz diff --git a/fpga/hi_iso14443a.v b/fpga/hi_iso14443a.v index 182b66f7e..0ceac6d95 100644 --- a/fpga/hi_iso14443a.v +++ b/fpga/hi_iso14443a.v @@ -104,8 +104,6 @@ begin end end - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Tag -> PM3 // filter the input for a tag's signal. The filter box needs the 4 previous input values and is a gaussian derivative filter @@ -132,7 +130,6 @@ wire [9:0] tmp2 = adc_d_times_2 + input_prev_1; // convert intermediate signals to signed and calculate the filter output wire signed [10:0] adc_d_filtered = {1'b0, tmp1} - {1'b0, tmp2}; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // internal FPGA timing. Maximum required period is 128 carrier clock cycles for a full 8 Bit transfer to ARM. (i.e. we need a // 7 bit counter). Adjust its frequency to external reader's clock when simulating a tag or sniffing. @@ -176,7 +173,6 @@ begin end end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Tag -> PM3: // determine best possible time for starting/resetting the modulation detector. @@ -208,7 +204,6 @@ begin end end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Tag -> PM3: // modulation detector. Looks for the steepest falling and rising edges within a 16 clock period. If there is both a significant @@ -228,27 +223,27 @@ always @(negedge adc_clk) begin if(negedge_cnt[3:0] == mod_detect_reset_time) begin - if (mod_type == `FPGA_HF_ISO14443A_SNIFFER) - begin - // detect modulation signal: if modulating, there must have been a falling AND a rising edge - if ((rx_mod_falling_edge_max > `EDGE_DETECT_THRESHOLDHIGH) && (rx_mod_rising_edge_max < -`EDGE_DETECT_THRESHOLDHIGH)) - curbit <= 1'b1; // modulation - else - curbit <= 1'b0; // no modulation - end - else - begin - // detect modulation signal: if modulating, there must have been a falling AND a rising edge - if ((rx_mod_falling_edge_max > `EDGE_DETECT_THRESHOLD) && (rx_mod_rising_edge_max < -`EDGE_DETECT_THRESHOLD)) - curbit <= 1'b1; // modulation - else - curbit <= 1'b0; // no modulation - end + if (mod_type == `FPGA_HF_ISO14443A_SNIFFER) + begin + // detect modulation signal: if modulating, there must have been a falling AND a rising edge + if ((rx_mod_falling_edge_max > `EDGE_DETECT_THRESHOLDHIGH) && (rx_mod_rising_edge_max < -`EDGE_DETECT_THRESHOLDHIGH)) + curbit <= 1'b1; // modulation + else + curbit <= 1'b0; // no modulation + end + else + begin + // detect modulation signal: if modulating, there must have been a falling AND a rising edge + if ((rx_mod_falling_edge_max > `EDGE_DETECT_THRESHOLD) && (rx_mod_rising_edge_max < -`EDGE_DETECT_THRESHOLD)) + curbit <= 1'b1; // modulation + else + curbit <= 1'b0; // no modulation + end // reset modulation detector rx_mod_rising_edge_max <= 0; rx_mod_falling_edge_max <= 0; end - else // look for steepest edges (slopes) + else // look for steepest edges (slopes) begin if (adc_d_filtered > 0) begin @@ -264,7 +259,6 @@ begin end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Tag+Reader -> PM3 // sample 4 bits reader data and 4 bits tag data for sniffing @@ -280,7 +274,6 @@ begin end end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // PM3 -> Reader: // a delay line to ensure that we send the (emulated) tag's answer at the correct time according to ISO14443-3 @@ -303,7 +296,6 @@ begin end end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // PM3 -> Reader, internal timing: // a timer for the 1172 cycles fdt (Frame Delay Time). Start the timer with a rising edge of the reader's signal. @@ -366,7 +358,6 @@ begin if(fdt_counter == `FDT_INDICATOR_COUNT) fdt_indicator <= 1'b1; end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // PM3 -> Reader or Tag // assign a modulation signal to the antenna. This signal is either a delayed signal (to achieve fdt when sending to a reader) @@ -395,7 +386,6 @@ begin end end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // PM3 -> Reader // determine the required delay in the mod_sig_buf (set mod_sig_ptr). @@ -438,7 +428,6 @@ begin end end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // FPGA -> ARM communication: // buffer 8 bits data to be sent to ARM. Shift them out bit by bit. @@ -482,10 +471,8 @@ begin to_arm[7:1] <= to_arm[6:0]; end end - end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // FPGA <-> ARM communication: // generate a ssp clock and ssp frame signal for the synchronous transfer from/to the ARM @@ -520,7 +507,6 @@ begin end end - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // FPGA -> ARM communication: // select the data to be sent to ARM @@ -565,7 +551,6 @@ assign sub_carrier = ~sub_carrier_cnt[3]; // in FPGA_HF_ISO14443A_READER_LISTEN: carrier always on; in other modes: carrier always off assign pwr_hi = (ck_1356meg & (((mod_type == `FPGA_HF_ISO14443A_READER_MOD) & ~mod_sig_coil) || (mod_type == `FPGA_HF_ISO14443A_READER_LISTEN))); - // Enable HF antenna drivers: assign pwr_oe1 = 1'b0; assign pwr_oe3 = 1'b0; diff --git a/fpga/hi_simulate.v b/fpga/hi_simulate.v index 2d8ff2771..77b9a44ed 100644 --- a/fpga/hi_simulate.v +++ b/fpga/hi_simulate.v @@ -88,7 +88,6 @@ begin end end - // Divide 13.56 MHz to produce various frequencies for SSP_CLK // and modulation. reg [8:0] ssp_clk_divider; @@ -99,17 +98,16 @@ always @(negedge adc_clk) always @(negedge adc_clk) begin if (mod_type == `FPGA_HF_SIMULATOR_MODULATE_424K_8BIT) - // Get bit every at 53KHz (every 8th carrier bit of 424kHz) - ssp_clk <= ~ssp_clk_divider[7]; + // Get bit every at 53KHz (every 8th carrier bit of 424kHz) + ssp_clk <= ~ssp_clk_divider[7]; else if (mod_type == `FPGA_HF_SIMULATOR_MODULATE_212K) - // Get next bit at 212kHz - ssp_clk <= ~ssp_clk_divider[5]; + // Get next bit at 212kHz + ssp_clk <= ~ssp_clk_divider[5]; else - // Get next bit at 424kHz - ssp_clk <= ~ssp_clk_divider[4]; + // Get next bit at 424kHz + ssp_clk <= ~ssp_clk_divider[4]; end - // Produce the byte framing signal; the phase of this signal // is arbitrary, because it's just a bit stream in this module. always @(negedge adc_clk) @@ -130,7 +128,6 @@ begin end end - // Synchronize up the after-hysteresis signal, to produce DIN. always @(posedge ssp_clk) ssp_din = after_hysteresis; @@ -147,9 +144,7 @@ always @(*) else if(mod_type == `FPGA_HF_SIMULATOR_MODULATE_424K || mod_type == `FPGA_HF_SIMULATOR_MODULATE_424K_8BIT) modulating_carrier <= ssp_dout & ssp_clk_divider[4]; // switch 424kHz modulation on/off else - modulating_carrier <= 1'b0; // yet unused - - + modulating_carrier <= 1'b0; // yet unused // Load modulation. Toggle only one of these, since we are already producing much deeper // modulation than a real tag would. diff --git a/fpga/lf_edge_detect.v b/fpga/lf_edge_detect.v index 1e4cd0cce..27d7f6901 100644 --- a/fpga/lf_edge_detect.v +++ b/fpga/lf_edge_detect.v @@ -1,4 +1,3 @@ - //----------------------------------------------------------------------------- // Copyright (C) Proxmark3 contributors. See AUTHORS.md for details. // @@ -30,73 +29,74 @@ module lf_edge_detect( output edge_toggle ); - min_max_tracker tracker( - .clk (clk), - .adc_d (adc_d), - .threshold (lf_ed_threshold), - .min (min), - .max (max) +min_max_tracker tracker( + .clk (clk), + .adc_d (adc_d), + .threshold (lf_ed_threshold), + .min (min), + .max (max) ); - // auto-tune - assign high_threshold = (max + min) / 2 + (max - min) / 4; - assign highz_threshold = (max + min) / 2 + (max - min) / 8; - assign lowz_threshold = (max + min) / 2 - (max - min) / 8; - assign low_threshold = (max + min) / 2 - (max - min) / 4; +// auto-tune +assign high_threshold = (max + min) / 2 + (max - min) / 4; +assign highz_threshold = (max + min) / 2 + (max - min) / 8; +assign lowz_threshold = (max + min) / 2 - (max - min) / 8; +assign low_threshold = (max + min) / 2 - (max - min) / 4; - // heuristic to see if it makes sense to try to detect an edge - wire enabled = - (high_threshold > highz_threshold) - & (highz_threshold > lowz_threshold) - & (lowz_threshold > low_threshold) - & ((high_threshold - highz_threshold) > 8) - & ((highz_threshold - lowz_threshold) > 16) - & ((lowz_threshold - low_threshold) > 8); +// heuristic to see if it makes sense to try to detect an edge +wire enabled = + (high_threshold > highz_threshold) + & (highz_threshold > lowz_threshold) + & (lowz_threshold > low_threshold) + & ((high_threshold - highz_threshold) > 8) + & ((highz_threshold - lowz_threshold) > 16) + & ((lowz_threshold - low_threshold) > 8); - // Toggle the output with hysteresis - // Set to high if the ADC value is above the threshold - // Set to low if the ADC value is below the threshold - reg is_high = 0; - reg is_low = 0; - reg is_zero = 0; - reg trigger_enabled = 1; - reg output_edge = 0; - reg output_state; +// Toggle the output with hysteresis +// Set to high if the ADC value is above the threshold +// Set to low if the ADC value is below the threshold +reg is_high = 0; +reg is_low = 0; +reg is_zero = 0; +reg trigger_enabled = 1; +reg output_edge = 0; +reg output_state; - always @(posedge clk) +always @(posedge clk) +begin + is_high <= (adc_d >= high_threshold); + is_low <= (adc_d <= low_threshold); + is_zero <= ((adc_d > lowz_threshold) & (adc_d < highz_threshold)); +end + +// all edges detection +always @(posedge clk) +if (enabled) +begin + // To enable detecting two consecutive peaks at the same level + // (low or high) we check whether or not we went back near 0 in-between. + // This extra check is necessary to prevent from noise artifacts + // around the threshold values. + if (trigger_enabled & (is_high | is_low)) begin - is_high <= (adc_d >= high_threshold); - is_low <= (adc_d <= low_threshold); - is_zero <= ((adc_d > lowz_threshold) & (adc_d < highz_threshold)); + output_edge <= ~output_edge; + trigger_enabled <= 0; end + else + trigger_enabled <= trigger_enabled | is_zero; +end - // all edges detection - always @(posedge clk) - if (enabled) - begin - // To enable detecting two consecutive peaks at the same level - // (low or high) we check whether or not we went back near 0 in-between. - // This extra check is necessary to prevent from noise artifacts - // around the threshold values. - if (trigger_enabled & (is_high | is_low)) - begin - output_edge <= ~output_edge; - trigger_enabled <= 0; - end else - trigger_enabled <= trigger_enabled | is_zero; - end +// edge states +always @(posedge clk) +if (enabled) +begin + if (is_high) + output_state <= 1'd1; + else if (is_low) + output_state <= 1'd0; +end - // edge states - always @(posedge clk) - if (enabled) - begin - if (is_high) - output_state <= 1'd1; - else if (is_low) - output_state <= 1'd0; - end - - assign edge_state = output_state; - assign edge_toggle = output_edge; +assign edge_state = output_state; +assign edge_toggle = output_edge; endmodule diff --git a/fpga/lo_edge_detect.v b/fpga/lo_edge_detect.v index 9bf408cc7..c29fdccb3 100644 --- a/fpga/lo_edge_detect.v +++ b/fpga/lo_edge_detect.v @@ -51,8 +51,8 @@ wire tag_modulation = ssp_dout & !lf_field; wire reader_modulation = !ssp_dout & lf_field & pck_divclk; // No logic, straight through. -assign pwr_oe1 = 1'b0; // not used in LF mode -assign pwr_oe3 = 1'b0; // base antenna load = 33 Ohms +assign pwr_oe1 = 1'b0; // not used in LF mode +assign pwr_oe3 = 1'b0; // base antenna load = 33 Ohms // when modulating, add another 33 Ohms and 10k Ohms in parallel: assign pwr_oe2 = tag_modulation; assign pwr_oe4 = tag_modulation; diff --git a/fpga/lo_read.v b/fpga/lo_read.v index 06bd0ae5a..c51857eb4 100644 --- a/fpga/lo_read.v +++ b/fpga/lo_read.v @@ -51,7 +51,7 @@ reg [7:0] to_arm_shiftreg; // we read the ADC value when pck_cnt=7 and shift it out on counts 8..15 always @(posedge pck0) begin - if((pck_cnt == 8'd7) && !pck_divclk) + if ((pck_cnt == 8'd7) && !pck_divclk) to_arm_shiftreg <= adc_d; else begin @@ -73,14 +73,15 @@ end // _ _ _ _ _ _ _ _ _ _ // ssp_clk |_| |_| |_| |_| |_| |_| |_| |_| |_| |_ -// serialized SSP data is gated by ant_lo to suppress unwanted signal +// serialized SSP data is gated by pck_divclk to suppress unwanted signal assign ssp_din = to_arm_shiftreg[7] && !pck_divclk; // SSP clock always runs at 24MHz assign ssp_clk = pck0; -// SSP frame is gated by ant_lo and goes high when pck_divider=8..15 +// SSP frame is gated by pck_divclk and goes high when pck_cnt=8..15 assign ssp_frame = (pck_cnt[7:3] == 5'd1) && !pck_divclk; // unused signals tied low assign pwr_hi = 1'b0; +// always on outputs, unused assign pwr_oe1 = 1'b0; assign pwr_oe2 = 1'b0; assign pwr_oe3 = 1'b0; diff --git a/fpga/min_max_tracker.v b/fpga/min_max_tracker.v index 2f6e06017..2aaab66bb 100644 --- a/fpga/min_max_tracker.v +++ b/fpga/min_max_tracker.v @@ -31,50 +31,50 @@ module min_max_tracker( output [7:0] max ); - reg [7:0] min_val = 255; - reg [7:0] max_val = 0; - reg [7:0] cur_min_val = 255; - reg [7:0] cur_max_val = 0; - reg [1:0] state = 0; +reg [7:0] min_val = 255; +reg [7:0] max_val = 0; +reg [7:0] cur_min_val = 255; +reg [7:0] cur_max_val = 0; +reg [1:0] state = 0; - always @(posedge clk) - begin - case (state) - 0: // initialize - begin - if (cur_max_val >= ({1'b0, adc_d} + threshold)) - state <= 2; - else if (adc_d >= ({1'b0, cur_min_val} + threshold)) - state <= 1; - if (cur_max_val <= adc_d) - cur_max_val <= adc_d; - else if (adc_d <= cur_min_val) - cur_min_val <= adc_d; +always @(posedge clk) +begin + case (state) + 0: // initialize + begin + if (cur_max_val >= ({1'b0, adc_d} + threshold)) + state <= 2; + else if (adc_d >= ({1'b0, cur_min_val} + threshold)) + state <= 1; + if (cur_max_val <= adc_d) + cur_max_val <= adc_d; + else if (adc_d <= cur_min_val) + cur_min_val <= adc_d; + end + 1: // high phase + begin + if (cur_max_val <= adc_d) + cur_max_val <= adc_d; + else if (({1'b0, adc_d} + threshold) <= cur_max_val) begin + state <= 2; + cur_min_val <= adc_d; + max_val <= cur_max_val; end - 1: // high phase - begin - if (cur_max_val <= adc_d) - cur_max_val <= adc_d; - else if (({1'b0, adc_d} + threshold) <= cur_max_val) begin - state <= 2; - cur_min_val <= adc_d; - max_val <= cur_max_val; - end + end + 2: // low phase + begin + if (adc_d <= cur_min_val) + cur_min_val <= adc_d; + else if (adc_d >= ({1'b0, cur_min_val} + threshold)) begin + state <= 1; + cur_max_val <= adc_d; + min_val <= cur_min_val; end - 2: // low phase - begin - if (adc_d <= cur_min_val) - cur_min_val <= adc_d; - else if (adc_d >= ({1'b0, cur_min_val} + threshold)) begin - state <= 1; - cur_max_val <= adc_d; - min_val <= cur_min_val; - end - end - endcase - end + end + endcase +end - assign min = min_val; - assign max = max_val; +assign min = min_val; +assign max = max_val; endmodule From f47e4ed115176d76ee4caaf6246d344300818126 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 24 Aug 2023 18:22:50 +0200 Subject: [PATCH 239/299] Move hardcoded value where it belongs Keep FPGA parameters together in the same place --- client/src/cmdhw.c | 3 ++- common_fpga/fpga.h | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index ec3ab4867..1b2cd5459 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -27,6 +27,7 @@ #include "comms.h" #include "usart_defs.h" #include "ui.h" +#include "fpga.h" #include "cmdhw.h" #include "cmddata.h" #include "commonutil.h" @@ -1392,7 +1393,7 @@ void pm3_version(bool verbose, bool oneliner) { } } PrintAndLogEx(NORMAL, payload->versionstr); - if (strstr(payload->versionstr, "2s30vq100") == NULL) { + if (strstr(payload->versionstr, FPGA_TYPE) == NULL) { PrintAndLogEx(NORMAL, " FPGA firmware... %s", _RED_("chip mismatch")); } diff --git a/common_fpga/fpga.h b/common_fpga/fpga.h index b7e017d68..35143ec6f 100644 --- a/common_fpga/fpga.h +++ b/common_fpga/fpga.h @@ -23,9 +23,11 @@ #define FPGA_BITSTREAM_FIXED_HEADER_SIZE sizeof(bitparse_fixed_header) #define FPGA_INTERLEAVE_SIZE 288 #if defined XC3 -#define FPGA_CONFIG_SIZE 72864L // our current fpga_[lh]f.bit files are 72742 bytes. Rounded up to next multiple of FPGA_INTERLEAVE_SIZE +#define FPGA_TYPE "3s100evq100" +#define FPGA_CONFIG_SIZE 72864L // FPGA .bit file rounded up to next multiple of FPGA_INTERLEAVE_SIZE #else -#define FPGA_CONFIG_SIZE 42336L // our current fpga_[lh]f.bit files are 42175 bytes. Rounded up to next multiple of FPGA_INTERLEAVE_SIZE +#define FPGA_TYPE "2s30vq100" +#define FPGA_CONFIG_SIZE 42336L // FPGA .bit file rounded up to next multiple of FPGA_INTERLEAVE_SIZE #endif #define FPGA_RING_BUFFER_BYTES (1024 * 30) #define FPGA_TRACE_SIZE 3072 From 15ee28c7be1ce06946c71b090bed5dce75236ec1 Mon Sep 17 00:00:00 2001 From: kormax <3392860+kormax@users.noreply.github.com> Date: Thu, 24 Aug 2023 21:39:59 +0300 Subject: [PATCH 240/299] Add SEOS AIDs --- client/resources/aidlist.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/client/resources/aidlist.json b/client/resources/aidlist.json index 9173d0a10..6eeba5e28 100644 --- a/client/resources/aidlist.json +++ b/client/resources/aidlist.json @@ -2406,5 +2406,21 @@ "Name": "AirDrop connection negotiation", "Description": "Used by NFC-based AirDrop negotiation added in IOS17", "Type": "" + }, + { + "AID": "a0000004400001010001", + "Vendor": "HID Global", + "Country": "", + "Name": "SEOS", + "Description": "Used by both by physical cards and mobile implementations", + "Type": "access" + }, + { + "AID": "A00000054000060100010000FF", + "Vendor": "HID Global", + "Country": "", + "Name": "SEOS Mobile", + "Description": "Declared by some SEOS-compatible applications for HCE", + "Type": "access" } ] From 96eededb8c40006ef682255845d489f7075ff63e Mon Sep 17 00:00:00 2001 From: kormax <3392860+kormax@users.noreply.github.com> Date: Thu, 24 Aug 2023 21:40:53 +0300 Subject: [PATCH 241/299] Remove duplicate MFP command definitions --- include/protocols.h | 51 --------------------------------------------- 1 file changed, 51 deletions(-) diff --git a/include/protocols.h b/include/protocols.h index 516cdf7d3..b4de7da1a 100644 --- a/include/protocols.h +++ b/include/protocols.h @@ -624,57 +624,6 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. #define MFDES_E_FILE_NOT_FOUND 0xF0 #define MFDES_E_FILE_INTEGRITY 0xF1 -// MIFARE PLus EV2 Command set -// source: https://www.nxp.com/docs/en/data-sheet/MF1P(H)x2.pdf in Look-Up Tables - -#define MFP_READ_SIG 0x3C // same as DESFIRE -#define MFP_WRITEPERSO 0xA8 -#define MFP_COMMITPERSO 0xAA - -#define MFP_AUTHENTICATEFIRST 0x70 -#define MFP_AUTHENTICATEFIRST_VARIANT 0x73 -#define MFP_AUTHENTICATENONFIRST 0x76 -#define MFP_AUTHENTICATECONTINUE 0x72 -#define MFP_AUTHENTICATESECTORSWITCH 0x7A -#define MFP_RESETAUTH 0x78 - -#define MFP_VCSUPPORTLASTISOL3 0x4B -#define MFP_ISOSELECT 0xA4 - -#define MFP_GETVERSION 0x60 // same as DESFIRE -#define MFP_ADDITIONALFRAME 0xAF -#define MFP_SETCONFIGSL1 0x44 -#define MFP_MF_PERSONALIZEUIDUSAGE 0x40 - -// read commands -#define MFP_READENCRYPTEDNOMAC_MACED 0X30 -#define MFP_READENCRYPTEDMAC_MACED 0x31 -#define MFP_READPLAINNOMAC_MACED 0x32 -#define MFP_READPLAINMAC_MACED 0x33 -#define MFP_READENCRYPTEDNOMAC_UNMACED 0x34 -#define MFP_READENCRYPTEDMAC_UNMACED 0X35 -#define MFP_READPLAINNOMAC_UNMACED 0x36 -#define MFP_READPLAINMAC_UNMACED 0x37 - -// write commands -#define MFP_WRITEENCRYPTEDNOMAC 0xA0 -#define MFP_WRITEENCRYPTEDMAC 0xA1 -#define MFP_WRITEPLAINNOMAC 0xA2 -#define MFP_WRITEPLAINMAC 0xA3 - -// value commands -#define MFP_INCREMENTNOMAC 0xB0 -#define MFP_INCREMENTMAC 0xB1 -#define MFP_DECREMENTNOMAC 0xB2 -#define MFP_DECREMENTMAC 0xB3 -#define MFP_TRANSFERNOMAC 0xB4 -#define MFP_TRANSFERMAC 0xB5 -#define MFP_INCREMENTTRANSFERNOMAC 0xB6 -#define MFP_INCREMENTTRANSFERMAC 0xB7 -#define MFP_DECREMENTTRANSFERNOMAC 0xB8 -#define MFP_DECREMENTTRANSFERMAC 0xB9 -#define MFP_RESTORENOMAC 0xC2 -#define MFP_RESTOREMAC 0xC3 // MIFARE PLus EV2 Command set // source: https://www.nxp.com/docs/en/data-sheet/MF1P(H)x2.pdf in Look-Up Tables From 923be3f54d1424b8f4819fbc55f5b4feea078f17 Mon Sep 17 00:00:00 2001 From: Simon Van Mello <90702729+SimonVanMello@users.noreply.github.com> Date: Fri, 25 Aug 2023 23:20:55 +0200 Subject: [PATCH 242/299] fix typo Signed-off-by: Simon Van Mello <90702729+SimonVanMello@users.noreply.github.com> --- doc/T5577_Guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/T5577_Guide.md b/doc/T5577_Guide.md index 6c4eceaf5..ded308676 100644 --- a/doc/T5577_Guide.md +++ b/doc/T5577_Guide.md @@ -142,7 +142,7 @@ developers have done a great job and gave us commands. What we need to know is that with the T5577, data is read/written one complete block at a time. Each block holds 32 bits of data (hence the binary output shown) -Since we know that the card has data and configuration blocks, lets say +Since we know that the card has data and configuration blocks, lets stay away from those while we learn how to read and write. I suggest you follow along and perform each command and check the results as we go. From 007e8b9e5af4caab06c2768c58c95ee08ba50836 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 26 Aug 2023 12:01:55 +0200 Subject: [PATCH 243/299] added a section about time units --- doc/clocks.md | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/doc/clocks.md b/doc/clocks.md index 161d680fb..b2ba3c995 100644 --- a/doc/clocks.md +++ b/doc/clocks.md @@ -7,6 +7,7 @@ The device side firmware uses a range of different clocks. Here is an attempt t # Table of Contents - [Notes on device side clocks](#notes-on-device-side-clocks) - [Table of Contents](#table-of-contents) + - [Units](#units) - [Slow clock](#slow-clock) - [Main Oscillator / MAINCK](#main-oscillator--mainck) - [PLL clock](#pll-clock) @@ -15,9 +16,48 @@ The device side firmware uses a range of different clocks. Here is an attempt t - [1 kHz RTC: TickCount functions](#1-khz-rtc-tickcount-functions) - [Occasional PWM timer](#occasional-pwm-timer) - [Occasional TC0+TC1 / CountUS functions](#occasional-tc0tc1--countus-functions) - - [Occasional TC0+TC1+TC2 SSP_CLK from FPGA / CountSspClk functions](#occasional-tc0tc1tc2-ssp_clk-from-fpga--countsspclk-functions) + - [Occasional TC0+TC1+TC2 SSP\_CLK from FPGA / CountSspClk functions](#occasional-tc0tc1tc2-ssp_clk-from-fpga--countsspclk-functions) - [Occasional TC0+TC1 / Ticks functions](#occasional-tc0tc1--ticks-functions) + +## Units +^[Top](#top) + +Good calculator +https://www.unitjuggler.com/convert-frequency-from-MHz-to-ns(p).html?val=3.39 + +Basic units of time measurment or how long in time is a Hertz? + +``` +1 hertz = 1 second = 1000 milli seconds +10 Hertz = 1 / 10 = 0,1 = 100 milli seconds +100 Hertz = 1 / 100 = 0,01 = 10 milli seconds +1 kHz = 1 / 1000 = 0,001 = 1 milli seconds +10 kHz = 1 / 10 000 = 0,000 1 = 100 micro seconds +100 kHz = 1 / 100 000 = 0,000 01 = 10 micro seconds +1 MHZ = 1 / 1 000 000 = 0,000 001 = 1 micro seconds +``` + +- kHz, Kilo Hertz, 1000 Hertz +- MHz, Mega Hertz, 1000 000 Hertz + + +Basic units of time you will run into in the RFID world. + +``` +13.56 MHz = 1 / 13 560 000 = 73,74 nano seconds = 0,07374 micro seconds +125 kHz = 1/ 125 000 = 8 micro seconds +``` + +Given these units the following clocks used by Proxmark3 wil make more sense. + +Like the SSP Clock running at 3.39 MHz. +3.39 MHz = 1 / 3 390 000 = 294,98 nano seconds = 0,2949 micro seconds + +1 tick at 3.39 MHz is 294.98 nano seconds. + + + ## Slow clock ^[Top](#top) From 8a861aea5734e4d960ee00f5c0531ed98744b2bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pa=C4=BEo?= Date: Sun, 27 Aug 2023 19:23:38 +0200 Subject: [PATCH 244/299] Change "Mac OS X" to "macOS" in documentation --- README.md | 8 ++++---- doc/md/Installation_Instructions/Troubleshooting.md | 2 +- ...tions.md => macOS-Compile-From-Source-Instructions.md} | 6 +++--- ...ons.md => macOS-Homebrew-Installation-Instructions.md} | 8 ++++---- ...ons.md => macOS-MacPorts-Installation-Instructions.md} | 4 ++-- 5 files changed, 14 insertions(+), 14 deletions(-) rename doc/md/Installation_Instructions/{Mac-OS-X-Compile-From-Source-Instructions.md => macOS-Compile-From-Source-Instructions.md} (82%) rename doc/md/Installation_Instructions/{Mac-OS-X-Homebrew-Installation-Instructions.md => macOS-Homebrew-Installation-Instructions.md} (96%) rename doc/md/Installation_Instructions/{Mac-OS-X-MacPorts-Installation-Instructions.md => macOS-MacPorts-Installation-Instructions.md} (97%) diff --git a/README.md b/README.md index 9096c9559..d65262674 100644 --- a/README.md +++ b/README.md @@ -35,9 +35,9 @@ The Proxmark3 is the swiss-army tool of RFID, allowing for interactions with the | :------------------: | :------------------: | | [Linux - Setup and Build](/doc/md/Installation_Instructions/Linux-Installation-Instructions.md) | [Compilation Instructions](/doc/md/Use_of_Proxmark/0_Compilation-Instructions.md)| | [Linux - Important notes on ModemManager](/doc/md/Installation_Instructions/ModemManager-Must-Be-Discarded.md) | [Validating Proxmark3 Client Functionality](/doc/md/Use_of_Proxmark/1_Validation.md)| -| [Mac OS X - Homebrew & Upgrading HomeBrew Tap Formula](/doc/md/Installation_Instructions/Mac-OS-X-Homebrew-Installation-Instructions.md) | [First Use and Verification](/doc/md/Use_of_Proxmark/2_Configuration-and-Verification.md)| -| [Mac OS X - MacPorts](/doc/md/Installation_Instructions/Mac-OS-X-MacPorts-Installation-Instructions.md) | [Commands & Features](/doc/md/Use_of_Proxmark/3_Commands-and-Features.md)| -| [Mac OS X - Setup and Build](/doc/md/Installation_Instructions/Mac-OS-X-Compile-From-Source-Instructions.md) || +| [macOS - Homebrew & Upgrading HomeBrew Tap Formula](/doc/md/Installation_Instructions/macOS-Homebrew-Installation-Instructions.md) | [First Use and Verification](/doc/md/Use_of_Proxmark/2_Configuration-and-Verification.md)| +| [macOS - MacPorts](/doc/md/Installation_Instructions/macOS-MacPorts-Installation-Instructions.md) | [Commands & Features](/doc/md/Use_of_Proxmark/3_Commands-and-Features.md)| +| [macOS - Setup and Build](/doc/md/Installation_Instructions/macOS-Compile-From-Source-Instructions.md) || | [Windows - Setup and Build](/doc/md/Installation_Instructions/Windows-Installation-Instructions.md) || | [Termux / Android - Setup and Build](/doc/termux_notes.md) || | [Blue Shark Manual](/doc/bt_manual_v10.md) | [Command Cheat Sheet](/doc/cheatsheet.md)| @@ -184,7 +184,7 @@ This repo compiles nicely on - Windows/MinGW environment - Ubuntu, ParrotOS, Gentoo, Pentoo, Kali, NetHunter, Arch Linux, Fedora, Debian, Raspbian - Android / Termux - - Mac OS X / Homebrew (or MacPorts, experimental) / Apple Silicon M1 + - macOS / Homebrew (or MacPorts, experimental) / Apple Silicon M1 - Docker container - [ Iceman repo based ubuntu 18.04 container ](https://hub.docker.com/r/secopsconsult/proxmark3) - [ Iceman fork based container v1.7 ](https://hub.docker.com/r/iceman1001/proxmark3/) diff --git a/doc/md/Installation_Instructions/Troubleshooting.md b/doc/md/Installation_Instructions/Troubleshooting.md index d3fbab571..d63e49b75 100644 --- a/doc/md/Installation_Instructions/Troubleshooting.md +++ b/doc/md/Installation_Instructions/Troubleshooting.md @@ -38,7 +38,7 @@ client/proxmark3 ... Refer to the installation guide specific to your OS for details about ports. * [Linux](/doc/md/Installation_Instructions/Linux-Installation-Instructions.md) -* [Mac OSX](/doc/md/Installation_Instructions/Mac-OS-X-Homebrew-Installation-Instructions.md) +* [macOS](/doc/md/Installation_Instructions/macOS-Homebrew-Installation-Instructions.md) * [Windows](/doc/md/Installation_Instructions/Windows-Installation-Instructions.md) Note that with the Bluetooth adapter, you *have to* use directly the client, and flasher over Bluetooth is not possible. diff --git a/doc/md/Installation_Instructions/Mac-OS-X-Compile-From-Source-Instructions.md b/doc/md/Installation_Instructions/macOS-Compile-From-Source-Instructions.md similarity index 82% rename from doc/md/Installation_Instructions/Mac-OS-X-Compile-From-Source-Instructions.md rename to doc/md/Installation_Instructions/macOS-Compile-From-Source-Instructions.md index 049ddb31d..c9f101a40 100644 --- a/doc/md/Installation_Instructions/Mac-OS-X-Compile-From-Source-Instructions.md +++ b/doc/md/Installation_Instructions/macOS-Compile-From-Source-Instructions.md @@ -1,9 +1,9 @@ -# Mac OS X - Compilation from source instructions +# macOS - Compilation from source instructions # Table of Contents -- [Mac OS X - Compilation from source instructions](x#mac-os-x---compilation-from-source-instructions) +- [macOS - Compilation from source instructions](#macos---compilation-from-source-instructions) - [Table of Contents](#table-of-contents) - [Follow Homebrew developer instructions](#follow-homebrew-developer-instructions) - [(optional) Running without sudo](#optional-running-without-sudo) @@ -12,7 +12,7 @@ ## Follow Homebrew developer instructions ^[Top](#top) -Follow the instructions here [developer instructions](/doc/md/Installation_Instructions/Mac-OS-X-Homebrew-Installation-Instructions.md#homebrew-mac-os-x-developer-installation) and you are done. +Follow the instructions here [developer instructions](/doc/md/Installation_Instructions/macOS-Homebrew-Installation-Instructions.md#homebrew-macos-developer-installation) and you are done. ## (optional) Running without sudo ^[Top](#top) diff --git a/doc/md/Installation_Instructions/Mac-OS-X-Homebrew-Installation-Instructions.md b/doc/md/Installation_Instructions/macOS-Homebrew-Installation-Instructions.md similarity index 96% rename from doc/md/Installation_Instructions/Mac-OS-X-Homebrew-Installation-Instructions.md rename to doc/md/Installation_Instructions/macOS-Homebrew-Installation-Instructions.md index 3b2e31530..c4622641a 100644 --- a/doc/md/Installation_Instructions/Mac-OS-X-Homebrew-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/macOS-Homebrew-Installation-Instructions.md @@ -1,11 +1,11 @@ -# Mac OS X - Homebrew automatic installation +# macOS - Homebrew automatic installation # Table of Contents -- [Mac OS X - Homebrew automatic installation](#mac-os-x---homebrew-automatic-installation) +- [macOS - Homebrew automatic installation](#macos---homebrew-automatic-installation) - [Table of Contents](#table-of-contents) - [macOS Ventura Beta users](#macos-ventura-beta-users) - [Apple Silicon (M1) Notes](#apple-silicon-m1-notes) @@ -14,7 +14,7 @@ - [Flash the BOOTROM & FULLIMAGE](#flash-the-bootrom--fullimage) - [Run the client](#run-the-client) - [Next steps](#next-steps) -- [Homebrew (Mac OS X), developer installation](#homebrew-mac-os-x-developer-installation) +- [Homebrew (macOS), developer installation](#homebrew-macos-developer-installation) - [Clone the Iceman repository](#clone-the-iceman-repository) - [Compile the project](#compile-the-project) - [the button trick](#the-button-trick) @@ -151,7 +151,7 @@ For the next steps, please read the following pages: -# Homebrew (Mac OS X), developer installation +# Homebrew (macOS), developer installation ^[Top](#top) These instructions will show how to setup the environment on OSX to the point where you'll be able to clone and compile the repo by yourself, as on Linux, Windows, etc. diff --git a/doc/md/Installation_Instructions/Mac-OS-X-MacPorts-Installation-Instructions.md b/doc/md/Installation_Instructions/macOS-MacPorts-Installation-Instructions.md similarity index 97% rename from doc/md/Installation_Instructions/Mac-OS-X-MacPorts-Installation-Instructions.md rename to doc/md/Installation_Instructions/macOS-MacPorts-Installation-Instructions.md index 2f05f3b98..2c36d1371 100644 --- a/doc/md/Installation_Instructions/Mac-OS-X-MacPorts-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/macOS-MacPorts-Installation-Instructions.md @@ -1,10 +1,10 @@ -# Mac OS X - MacPorts automatic installation +# macOS - MacPorts automatic installation # Table of Contents -- [Mac OS X - MacPorts automatic installation](#mac-os-x---macports-automatic-installation) +- [macOS - MacPorts automatic installation](#macOS---macports-automatic-installation) - [Table of Contents](#table-of-contents) - [Main prerequisite](#main-prerequisite) - [Installing latest releases](#installing-latest-releases) From 114dda158290a8b57d000507b1efb0ea3b51a941 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 28 Aug 2023 12:00:44 +0200 Subject: [PATCH 245/299] After testing and verification its found that the SHALLOW MODULATION in HF is not working well in RDV4. Swapping from PWR_OE4 to PWR_OE1 makes it much better. Thanks to @d18c7db for solution and @gentlekiwi for testing and never giving up on finding the bug --- CHANGELOG.md | 1 + armsrc/fpgaloader.h | 1 + armsrc/iso14443b.c | 9 +++++++++ armsrc/iso15693.c | 5 +++++ fpga/define.v | 1 + fpga/fpga_icopyx_hf.bit | Bin 72749 -> 72749 bytes fpga/fpga_pm3_felica.bit | Bin 42176 -> 42176 bytes fpga/fpga_pm3_hf.bit | Bin 42172 -> 42172 bytes fpga/fpga_pm3_hf_15.bit | Bin 42175 -> 42175 bytes fpga/fpga_pm3_lf.bit | Bin 42172 -> 42172 bytes fpga/hi_reader.v | 9 +++++++-- 11 files changed, 24 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b1bd9deb5..637917d1a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Swapped to OE1 for Shallow modulation on RDV4. Thanks to @gentlekiwi for testing (@d18c7db) - Changed iClass SIO and Legacy credential detection to be more reliable (@nvx) - Added `hf iclass esetblk` - set iClass emulator memory block data (@nvx) - Added cryptorf regressiontests (@iceman1001) diff --git a/armsrc/fpgaloader.h b/armsrc/fpgaloader.h index 3359643f1..a1869d5da 100644 --- a/armsrc/fpgaloader.h +++ b/armsrc/fpgaloader.h @@ -105,6 +105,7 @@ thres| x x x x x x x x #define FPGA_HF_READER_MODE_SNIFF_AMPLITUDE (6<<0) #define FPGA_HF_READER_MODE_SNIFF_PHASE (7<<0) #define FPGA_HF_READER_MODE_SEND_JAM (8<<0) +#define FPGA_HF_READER_MODE_SEND_SHALLOW_MOD_RDV4 (9<<0) #define FPGA_HF_READER_SUBCARRIER_848_KHZ (0<<4) #define FPGA_HF_READER_SUBCARRIER_424_KHZ (1<<4) diff --git a/armsrc/iso14443b.c b/armsrc/iso14443b.c index 7d28255e1..adfd52491 100644 --- a/armsrc/iso14443b.c +++ b/armsrc/iso14443b.c @@ -1407,7 +1407,11 @@ static void TransmitFor14443b_AsReader(uint32_t *start_time) { tosend_t *ts = get_tosend(); +#ifdef RDV4 + FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | FPGA_HF_READER_MODE_SEND_SHALLOW_MOD_RDV4); +#else FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | FPGA_HF_READER_MODE_SEND_SHALLOW_MOD); +#endif // TR2 minimum 14 ETUs if (*start_time < ISO14B_TR0) { @@ -2102,7 +2106,12 @@ void iso14443b_setup(void) { FpgaSetupSsc(FPGA_MAJOR_MODE_HF_READER); // Signal field is on with the appropriate LED +#ifdef RDV4 + FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | FPGA_HF_READER_MODE_SEND_SHALLOW_MOD_RDV4); +#else FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | FPGA_HF_READER_MODE_SEND_SHALLOW_MOD); +#endif + SpinDelay(100); // Start the timer diff --git a/armsrc/iso15693.c b/armsrc/iso15693.c index 0c5e7c7ab..9a1f5be49 100644 --- a/armsrc/iso15693.c +++ b/armsrc/iso15693.c @@ -294,7 +294,12 @@ void CodeIso15693AsTag(const uint8_t *cmd, size_t len) { // Transmit the command (to the tag) that was placed in cmd[]. void TransmitTo15693Tag(const uint8_t *cmd, int len, uint32_t *start_time, bool shallow_mod) { +#ifdef RDV4 + FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | (shallow_mod ? FPGA_HF_READER_MODE_SEND_SHALLOW_MOD_RDV4 : FPGA_HF_READER_MODE_SEND_FULL_MOD)); +#else FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER | (shallow_mod ? FPGA_HF_READER_MODE_SEND_SHALLOW_MOD : FPGA_HF_READER_MODE_SEND_FULL_MOD)); +#endif + if (*start_time < DELAY_ARM_TO_TAG) { *start_time = DELAY_ARM_TO_TAG; diff --git a/fpga/define.v b/fpga/define.v index b7423278b..05cbd6d7e 100644 --- a/fpga/define.v +++ b/fpga/define.v @@ -129,6 +129,7 @@ `define FPGA_HF_READER_MODE_SNIFF_AMPLITUDE 6 `define FPGA_HF_READER_MODE_SNIFF_PHASE 7 `define FPGA_HF_READER_MODE_SEND_JAM 8 +`define FPGA_HF_READER_MODE_SEND_SHALLOW_MOD_RDV4 9 `define FPGA_HF_READER_SUBCARRIER_848_KHZ 0 `define FPGA_HF_READER_SUBCARRIER_424_KHZ 1 diff --git a/fpga/fpga_icopyx_hf.bit b/fpga/fpga_icopyx_hf.bit index 053f5cce888de824b6e65a7b2e8f8d9de4be3b8c..07a1a0bbd39a3dd1a2b84a58bad4b2779de19fc5 100644 GIT binary patch literal 72749 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

    kL3X#zAJ(Xizc3 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 literal 0 HcmV?d00001 diff --git a/doc/datasheets/XILINX Spartan-II FPGA Family.pdf b/doc/datasheets/XILINX Spartan-II FPGA Family.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1b1eb4d231ebfc56961f27fda52f3f63a7ffec40 GIT binary patch literal 1013818 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

yo=`LE9 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0d2_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0d2_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..db3b33de46636d2f467e808a135d05a73219cb26 GIT binary patch literal 36987 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 AE&u=k literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0d6_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0d6_states.bin.bz2 deleted file mode 100644 index d6b2059730a6fd116687dc3b57a7c93b8859772c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2083 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0d8_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0d8_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..d52ee181d3a7a71d92797c72d5d72f616ac2e58e GIT binary patch literal 20720 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 SBnh`I_fd{;J^shvtoRQgK|*E# literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0da_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0da_states.bin.bz2 deleted file mode 100644 index f59ffec93c62099d44b48d2da86e76bfc82a7797..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2316 zcmZY5X;cyj0>E+eB88O{xmtuN2TbK5U~eA_c#V^eMVJu^GkI~8GqVTmvRxYI@AH3!kOkv64}V@e zG-e~>E|CHwQ!e-*#A@87J#CD%H2DGP??&1W`oPDk)E_ST!+sw5FbNdY#z?6hEA$CO z35MH}izY*_wA2K0!1gnXXU$hCXewe-$w_4d9@ap6a_%lF{?OdMC z^R6c7!ZLfMTlDx+MH{};kyliK2FoDzviewD)J=;!H-Q;H?J0}6kzt)%mXy*^OgaD! zG>R4t=`wFKZ4>OS#BT$hW8#0-mrsrxWPo)frDwt=G20DmEwkh2G?dXzQuUhD^HkBW zybM*6@F?mfO5*WWqhRYk$uBARcWMJ$;s)A9y(0sMPQl{M(UcqEvEcNUI$@zKI-=Af#8{6D@R zt@lN)(x0>58iIcf%)}+iroDyD1?vreN;r#oRGB`_C+=iAsX4!@O?~{82Y1m=eptHy zWGxQ*w&LPD=Wp2jltO&@lV{~qL(ZMlHL!Fs5!m)3KgP4oy0;MrU4MY|xa9dMW3Ey| zThCieJW~CJE}M_8_#%%#pQ|bTJ~6~@pBSZ)X0_fb)spLJ38?w=oiAr9rOTC%8mb=( zwdf97pP$0h2l>g{?dN^ynoTlp|L6IGEkixI0*)zNnDkI6BQq5a@P`XgTg_Y4^Qpg- zp>nR5Hec9``Y|!babIQFbR`{J%lvGr^j5+b^X*>2NDZW=p|)YbrW9PZ@rHM&8m3K3 zA^$@Mw;rw7a-3K2beiaylO=4#5@%?R)lowJm4V08VwP~xG;Q!OL_ueZuW_;&j5LRw!^{G3eDEme8^h6d z0X@^#)mR2x*PIwdsu6<1#`=Kj(z=Zn#vP;KbMOyLU|sJ)7lo`7sUmCqiS8bmu>^_# zChxQEgZT{>*}c3I-39W2aWH?gF))?oawu;WAj16Ns{o0EIhu2 z!6}qODD9&+PKx3<{S|(%=+FsmYIViY1)wZIo+C)|ykFah@8l12^HOb9Sk4GSlO3~` zGspYhk90;<;`jDWg_9KH&atHdj`n^c-n$Zh4&KE_^rEtnnMaDr0#P@KQW-hdr0ypU zIk+rvK>EFNIroGUOPyUjRBY=yaX1so znh6szKM(~~7s?tAs6&<69PX7_6>(JA)7YrzEZ*XB8EKKxR~oN0z6M@chyb<=>|70! z)iObioKJ_uMlEq@N>;sz%DhMv&yGp>Ep{<;9>xOBK<6q5v>I0V91bVhP*(wXh;r16i`8QyTxQT zmz!JPR&D)#gEwYLRH!s1IN*F3ECR770>Q-Pj$BO43 zlGgi%HH&V~;yza18CGOxrR^!WX1JWZVwNLNwba22=N$3*exX@p^d(d4xg? h0cFX;dLvMgZ6Po?Af(}a{k?-X4t-L3>|T-2{{V5PHJJba diff --git a/client/resources/hardnested_tables/bitflip_1_0da_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0da_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..255006b82cc9cae2b31add153061c624d0307c81 GIT binary patch literal 23063 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 rw>!QmIRgb5_n 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0e0_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0e0_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..a8232844ac5b716fec48988b8c22a57c3b107161 GIT binary patch literal 17302 zcmeHO&1)4`6hAYW_jtzS9U%eZL)xJcql=85f_T~j66CQ>C4xmAd$ z6jG_1I$~PeL7dP5PN^UJF{V)DY$2xJ^3*PhO2jd}%M|>;N$?d%w1p|!&4WaE;1G^Q z=5Y0ACUhk7h^Zv<3sbkqIrl0(JHf8oSvidMv;4!f z#T{VtnR}C*a2<)9VO8zLt&;=Qah9u{eNd=cP9t<*;-q{KKM$)=K{*K^{(eqE=vx%I z%xS37e2acg`seYAPgSDdy#(6lLltxQshDz&sUq(;A{6Rmmzys z_&L2+OX>A`tUBD`Pz^>$AnbvLb53(I3WLBKNpPFf(OwAuCesP10&hIVmAl>>v(6bJ zbxxxZXm>y75cmH3oL>D97bf78UcCQpRpyv`>M>qA!b#gurtbNiQ$F#^ooYDcsllT$ z0HcrN!Wbt7h!m<*2cgIWZaw}Yy8?3}JC?T44A6)>=bT1K0n!yAO`=aP-mWvv=#_Dv zjy3}W15k4x(+7HP0y=KWynZGx-S7ghiyUYAOCQp9iRmYQq~KTJ<0=sE8?I*RIMmn^#+Cx!+Jlk zT||sq0$C*qBx&E&M8F`NhwMiHsg^yi-fTly4j`&lQtvW^v{-^@@D9Ra+2!YaFd3m% zL|Q94p~3))#6Ij%23+2aJvI@mC|RyJOKs6Cw-$t1!BBuHmPcpyeq^tW}hLWH;^y{ViUgteJw_<|v(GpoxweRxr z-=cRdKdh4c;KIQOhKLc2*150|46UQD_CFLO7>*+}{{|Vskj4mx5sX(pKN!KV5sa7S z!bUKRU>LzLg7Mrb5+fK!Ffe3hQzV#7v=Iy&!EmJ_zp**iyfqd%p1~xUO_9JbHiF^M zF>eiq5ey?3Mlfs*#>*}jvJng$!7zg1DytC;BN(>G(_tXLu|=M?$a4kjk&R#&!7zeh z1jD9C>?@Kyt!N$_!7zeh1fv-b^N(zbWWGh_{kAER%pf*`;S6C@B>0NaK2vRE2_qOr lFpOX{!ePOI5sU>UdG>@6jLaUZf?(V`?4%{MZ`%I5_CGjI2`m5r literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0e8_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0e8_states.bin.bz2 deleted file mode 100644 index e969ed97c342339ef592226b4f52b10d8770ba8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4522 zcmZwJdr(scz6bD#5(MH4l8|tz3M4T(Ibw3e4(w2rSIFZiNk~EtV}(2pqqH*@*!EuP ziscy~ITrFHab1N#cmymE>kRFxg^*w#?5+>6cGsN?6go=XE_$_EpO@SFm^(Z7kKaGP ze||H+ncwgG$t^ve$<09+#Yp<@p3w~vF{cXOuHg<*Hf_Kq*6&)_jN7~!hpUfXNVrhP z#}RQjCQiIw-H|vPE=G*QZK`)R9*U@+fe&-es>>O6g4TCCx}Ono;{R(M7V^8d;OlV_ zCJ8_OaDL!+aA*IY&98gnpIhSm`C}|lAU_^Gw4*W7P1?I@M4TweBjOuNevk^{mT3)d zOqO05`{j3`hPz^gzIeBDoUafc1Y{vj03w!OW)*a*9SXj0M<=Q+CnLBKSqMO>(m@mx zdbRx|$8HWj*ZnJ5-|NkSHnU_l)fgg zc2w)PDZ@8bLRrPcN1US>k4~OHPd$0=Lijm*abMZ}Pg7HuuYG8*i=sbegJ2E1RYRXS zB40FrPZpvt&4D=?9gMTWJh~v=+|6K8^jLY>>?xJcjr2yLnE`O+81VWEvMnN z8BPaTzUp6GIyY>!>W&S#A1!o!t1N0RI32&n6NI48$+4U?iN)Vy@eaL_(=LoNJ0do2 zveDevqH}#tu2}2jC|U|muK)o_mGrE9!|D6^K3VotA?fYEP2jAx`KvPbPx%oml0*{T zE&oWrhcC)yam8CBN&xYv_nFI0Br5+cKuYHy-Jo|AveIyi5;F~S6vwIkP097A=7hd$ zgUern(Dvo`3TZ_-Z5X^o)zeTLKc~%01-?AVQ&v>K_8NuA(t&CxteFK|pawXQQ)8{> za!a1%+%&!eTnP%bu+R}{l<0fK>rq07@DT{61 zP$-KR_uWQ9CR(&yHL=V3Cux|h0cTMS7%H5X)hWP(k^1mwx?$Q0SO+@}Z{fA3inhoc ziQJ=I8v-@`!ih)xmwZnCjjlUJQ&0QeC{o-55_-J8Reg>oMo|#KJ&tgpw@uC{reUseTP%rkJ6j3zonh)1+mM9L=D^^mdE^ zJJH=)@exZ+EZN6$z28urXd`>3Q2uinRuGzjjYgY>WCXHfhz{vhr#Yb8p1Jv~^b26F z`{PYr4P3<`pH@|%^~CvXfFe(ryf*Y+fo0MIGIj^cN5-ZJn2j?V2J#-(l_cm6&5oeT zOVp^xHXauoP3jt$zwqs=OI;7I&vqCcg6E?9r%6kqhhnv~%>8QDyP0q=Rzma+kon7) z`!k6Z8vROp1UyA#9h8U>+OB3sJ226{g*n06i@QuW=G@Znx+mZsQkwx+Ta+L=TPuoj zV=OjtnuN5&vr}BHjj9gDf;)7npi-?v@+bxZguGjceIe1MGIV6OqtvAigPzMd_8B&S zbx$*Wf^s>GN2KBHGjarW59vrq6P~4=Q8!T~Scsq=fs|7y6bmufbXbLfsJ$0b+cZ=} z=~w$Js92aQ-f7)R-sDw>i7*nU*-uu8BFz-7#~y%fqBxF6>0du>4+0X`7X>*?y&PTn zj3!3ahy}6P9$(+YXAo?2s_mYj2v1JrRI=ld*zGeILBXovj58pe2;fYEI@lDnRO}~V z`>FN{gsg<7AunQ5`cSwMw%vnDM=o=}KLavJH!rYX)POs`iDh@3YLS z?|kt*qdMuU;pWG`T3A@Fsw!Vx`kC}{U+;_aeNW4x_Vqjg)nAX%pSQ=7I8o1BB@07| zlmn$b|K4|8*LNcB0MSv7_gF)7OT<0Fl0?rSR+=!z^$Sd*nlwP06L_2v|A+}d~1 zc2tL&2^ir#J`+--O4#1YP6>qu7V5fop8p)F@p#_bb@%P{dvBWFJDu?Al6m?1w{N2Y zsM0=Wha8nUf|3ivN~~Y5APjNJd$+5D+7XY3;`Yfh^UK^8R1w)1=qznWcOKxG zat*IYNU;QkIdfq8xH>kvIF=dmSUa`#(~;_sb6Ns*pO6dIoV_#davrT0uq4vtGw>`1 zf{OK-SU*b`&;h-)5f;SDVF-|1t!~gX%y)iF?BGlN`JSEwah@Tn?6YQGXQuEli9VnI zFu(n;tX}>&!x=>30&x}4&m=InRwTH#pp>dR&S)2DdJqi28Ny;Al8pKG99Y5z29PT(pjZgK?Xt zDL4i$LWSYtaT_>?g|hSA+vXFui75>NX5aC%l^fD4=89enZhMw5`^7g>ywDtHbTR%yS8C(??nX*^R%!8WbrRLW<`C?Xv%N%#Um5iWf(DQa< zT5%e+cIW1`+5xa5at20F?CRE|y?$;{eB^XT!q9`ouA$(ogU?5suYNlIiqPSF;ZZ%# z+&7M>G-l?nscBHnDB*(GpII{Z^q}bB>!^F#&R02qx1F`RDl6kwcUMc(`eF_w;xEcS z5IV4souVGsQYfB)BNi{i;8czcB!eykI6~6No6Ca;ypc=>5uUW7LOMBvfGFnB&Q4PK z-gtlqcu^MEBX9JGWpA$EL)8|<_n;i_8CY!v+H5l0NSemSlGOx zsDQ@RsD%HbBSwE-JR;VShk@f^;NbL=& zWN!ge(V8%IvVMx*4vaR6$C;Rn%3{kYv?EXQg!-C61Ft6nl@1s~?SY0l zOOH=t5~S;YCt$9+6Wu*rnbjK^5T15Bzl^CQ^_{O4j{zAbKiq5S!c`3hO=Nhe*>Aw- z;a)JU?WcN8%VUAO&ZkMn_XvDdlWI6(ZO>pp$CKAQ!Nz819h~KnF5uX0x^F0;qaP{Y znFi=bDCMWcKd|1988F%U_5x?cBRP%5ORVy*EGJk&?Kq5e?Q1YZZKP{4&_;2;zVlzA zfd{`#vPG^APgQv+$40K87$;~Z43l9`Rst~$a;&<7#kWbv>?c)6w6m(!Nw|>p73#9^Ow?h9S{I{Yy}JdSzWS{SLM?s12GGXO5mxo*?ta z|JO70XD*ezGU3mn6dQ}1F|;Sb`o5LtZf!{JKB7%k-ueSlzMr7|+?CV`w(H}G!?Cdt z7zqK8!7kaAi$#|sK(Ji@-S&?E3_RF@S@*PgbfSpjNhQs0<=7bOzoOkzzXr$Z2`-6O zJ#K)Ht3Diq`c477lobtw9|&{xKFiAovaTCF0_z^%?w?#LQjH623+Y(EBj*3*j29C? ziEX3KzNh5kh`^Y=iQed$CP0vKdOtX{t?A*!6$p=N0KYwOP@vVsg&qY@);V79>aTeV z*709ZEf*};ib7Webs>UK^sLOhdYxsd)-Ty*OTi?gRT6^w<o*#i&X0el< zZ#~LnbS}9m5jUyCcZB*kPJwL7OrmBSqOEQKp# z>?cw}ScOQ1&*_*01c}G~HhKWSuWJYqN}hIWVFr zrBq(F5q_I?v9|W}WB+ow?w!Ej(mby|_~v(oznQFVYNFfV3x`e}Y)xH8ZPYrEtuU}$ zTe7&#x`vgp|HmyZ*O|*})!vm`RabuB)MT8RYHBsyFZsD_-}fiY^QV%o6`5w(FWNqD ziJ99gm;WSqU&7lfw+S8!nzi=9VHRFV7Ke7MjtlS&pmx)ObB`;kJuug2Kb zTrJh|Xy=nu`w3&S9+k1dJb9e~!^6?$?JHUYk-h5p>bu+X;WUM!u=mA<2hR_7{;ACR z`rF_W&5v(dZ;Wrd+i`c@EYE*2%PVElh-*5!W~wQ9X$s!MUiez|ID2~S>MnY=sOxT> zzPA14P1)C-tg=7SCSiWCY*w0e@i?YO7^WNe&R~9+rPrQuW883@ za4x0NJN7$INpGiNV=$@n1$Vx)Y8}U-odL7twW{iBH_26qe{6M#C>x4sv?h>F)GZ8 lUUHQ5Hr>p4qO2M(zNufBnwmK_`Zl4aAVb{w7u;RwKLF?%rHB9k diff --git a/client/resources/hardnested_tables/bitflip_1_0e8_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0e8_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..f99bdf117fe3da43e3fc79333960090482da031f GIT binary patch literal 29435 zcmeI5d2Af@702J~&Te+i?*5#_N|xpDhB)NFPC^I-Q6#1_yaNQgK5LN+=-&|N40|>-FX!g%$)Y zzm@D+&++@c-}l|`&5ZqhI*W4_u6}i~$i`IrL4T2c+h4S6`>nNWrGG=eZIWME%g(;F zV%N6Fi5oar%!yZ)mbK&L%N*+qq_r4G!7t0u4S@_TW+X8|Oel=8Xi9%ye@47O5_4r# ze_xTq13(NFaW(ZZePE>2YQoY)&h25_ z%9ihY+Vy%8pDRq5Jk7{n)-Hv{bBv7Bz4}?ouxtP-I&qPaAllEbf|04Sj2w8j9?P4I z3}d$OO1zPSIsUXR&DxDI4YprLIy0h8M_4l4PS1jI))T)d9oE8^qN4rhVQT{~pOai5 zDS!rsD5w!t?>4acLpKI}P3wxe8oT)?Uc9TNvw%hyxjET^lwHgNUQp zKT72S76WsEQ47kn3xR(NEa&{xeVlhQTSh9duLWFTQJ9A0VdIod>uQMpgux=P!ZwHz zh{-H~AgDw#po)~08 zX?GLmS>*13(EfG5 zE2El+%&6&PPj=NDAHdKuU$rBYV;MHzs2R#nrEakaFXNl1!hM?O}Q`RoNo~y&El&B&+n70PwFl2OLrWqta%#0`!Y9T$wi_>MxGw(PI~bTatMm zHDNOn8+t4@X&0Hw4RgTmA|p3;pebb|53WL3VCkOcMH=ne@jFm(3an-&Ez=rVz1Vol>WwB;x#PM3iH&$s!vcOC597VtA#J6Rd81k5 zL?hh@1gw9TBQM3P9Lge)yxda|b3M}?X~Mak9KM4K@6sv%$$HdG0DCM8>lK7`tj=0S z9zT}(AqDOJBTF9#knOK*BMKvoblH=b!p?;N1#fFC3iE4n`~7%?KA_K<2YpOkdVhuo zur$jE^@^Q;t{Ff<)-2>=A1WL5cLGbolzL;708U6-dkKmq|EnuYtJUeD&d6`C+&K>HZ;wZgnkS9V@7Z(Mi}Z!QR=Z*%|R51&f+) zIvEPDHd3_j|P-fOV{sK;TCS|Y@#?hY_`Q^4wA7Ii>18}8ZCw|VBI zejDV{cu%~<-ki$H)iDgH>RYe}>o!C&z(wI_@H~L6ABH(j?VN``B<%&Dafk^=K+*Ib zHPzwBLbOYY#~}b*3~mfNTXAc;JX#Gfs^uL}O~kw9EGAq6-w#0^N_q{8i`?49`R?9S zlbRr=e%2%uZ9t5`t4Y8@6VAjgdcT3Dm8LSI%~TQ{$Qo+~jrTb+O1VCbG3FRqt%?fD zE4sjtQ!4gK*1;c@brG$o%bFKB1tOt*u`c^fq?{8H_+sLcFr$1_Bu+4uIgE&T3QKJq zJFwAlUjXw?iyU{zM9?>|TzgT>t@C4MsZjMY*n7+eVmDr4WEp1z_Cg~w+q2;mc&~9z zA?$>K40$~<)y;%BrtJr*$b{nXo@`>Hyvv!#CjguFj(MSfr7gtNL>?i($3AalrL|mF!rB#aL2H=$#{JUMbytb6OfY~^ zM0lO!o1hp9s>lfjFDxJ@g95&2!03jV2G=u^FkryI895zQ8*n|{;N(xj4MQHF@5=S0 z2!a--3b?XB#p0v-pwJuiLG90iJE*l|kNQ}{q1Ln#4?bcfySae5&&UX5fUpTAs7l+Q z2gYb&nR0)HnOuG-ENnDbD452s>bcZlVQ!i*g2LC!z=lv%J=K<&0SxnS!mmCAk5A3^ zmWco3fZStMaAE7F+~XEH_JEElX0{}TJaY_d&8NC?M&f5t9D-NzlSJ}}>`2|2C!oib zNOCR*7(Y^!JJ}+=QK<3`GW#m_kH0hPB3jYbnlNCdW{hPNFj(;jlkO1sp0*Gu;L>2g zD{n3^;cH_s@l&xxF!MhNbB#P#g}nBU9MZ~GW*Q7MCh3Wzc1Cd8a|hCE4m# z$@PKPi{K8@M!q=%QjIvG*0cvrGJn$0BMM+M^$KHv%$Tv3@V-?z;naV_MKA(x9w z6sSkrH>nZ#fgx23%2Vs2i=>5Nb{>Tg^r&^h9F!2;5CkXpXHoG_I_#{lzjb!vhK+-Q%HzZ1zn zspf#)q=}b&8y4^aV&Bx8ST@^5~LBmpr=U@pF(o4yWv71GuHL{$@?RFwJ9QI-pJIav+23pXd6trR! z32Cb4BujmhlXyu&!z&l!B|lDCm3Xl7F23!J$f?KRg7$}&Rd?kj!#(J4EKBDk!GO5z zPsds2yZu~m3KY^nH48VbrF+5~jj5WtjyB=+s02t<6s4{An&9>^fYL#N&RN?ezMD-r z3_5cwIM-*Cf(eI{zkHo2ElQeuqo6587^PLFdMV;Xooq9~fh7|uBb<*Sn+n<%Bl{Ej zYAJ5NW;6LPN)Q^lq?xy!vVXlKCpqfHIYluRk)UR|#BE`d zb|?6HKRUo>oe4F|{aP0n_mjsGa{0kAX0pvr>g(5hwy~}gRkXwMqbV!0rp<_2$?p6JO+7}?dmB^D(&Tp_5??;o$g6r#3wjyC@<$+q{6UsKv|XVt zT>U~}P7|b*24m^X8Vmaiwu_;kCd4Ajk9#R&6?V>w%6LoT3~ap#4%gzsb_}PcwjL3n zHsZnP2{1a0DEqj-UXN$lXaavenZsC9CeaR49kE!^6gx!|obOT_grC73aU!FYHxMMt zoUZfnSBs{Q2%>&!gu~Y!bYxF6985sGU) zy4K@PqE~UPM=ZrI@8WW;N7s6Etw+~-q&!3&SQB_0zj=)wLd7>oMv<4Ls!GT92;vSnoBv)}w1Z>V1&&YK>~wdZb~l zH$}JqZ$A#{T8~l9ock5rQ;*y)y^H%vT(M>+=$?9vG{Qag z*k~Ab`0k#1bWc4-cj~&Q9^F%q?y1M9!SxxuGRHmj=w6vqe?G^(GKVn5y)x%Bd}WSn zJ-XJTYdyNB9^F%qweFgG>XG-*)E^M#!CTjQA&=QsDku2Q^0b-#YXydtb2s*5O)@uJ!0zkFNFTT938X@DcQka#01N_o(u;RZ86P#&$;Bx+Hb)glxb1kCNJJ&KpFWX0WBmUbW zjLJaI)<2cq^m^Tz)f$O1_e7K04#SMwUN*aKx|{4J=Av{T%%*A3qt&i^8m~&+;|b>%k|g+k;p~|!jb!6yBfD|^RLM-`f@(3mC~3U934Q(n zxZd~yD(mP_F3tQAE^eOsVsOf%sjb#>bEIqPH=%lcjGv?1)iYw;?Ts!J>iY`PKPmHs zH>42bHf`%xcS+0J9(B+>o3;Fos@bot`;Yy${t0F-B&U;eul0L|mIb+r_K``H83fGG zl=#=#Lg!X}v$_w4`q`}1F{Z&aP)I`(GFDkZ#xN49nrm;(}-UfX0;Vwk~z zcr+Rn$5c+{gARJtdX2#P^(wAOIWO(hIzB6L+1J{#WWob;-86Qws6z;wUI$W0g?Lc8 z^rbfH$VRq?%EN~`uny;?^2$bk84+buPLsq%X}c1Gc>#ajRHt>q!;dU8CmJJPv1 zdt_SXFQ0jHtHJT#mc15X_fcK3rFw+T##OQHLB);7nM32xqkqLf3cp;M&u8N=4Cgaz zVH2Ye3oi$rZ+S;Vpf6oSP0FI4Un9EOUZd%>UuTtWRJ}y;gF5jJ$pnL@Go&!(SLO6~ zdCc8YNDow)SFN(h*5j}%a4}^0#}CupFFypLM^}#7w^VeA^@y=5t$n35QOTu)5e>`{ z2|P)}V!I#S$yT#aJ=(LfZCTkZp=Wt9%`-h+(!;rE@PfeErO0U-z5*4Cw{t2C^B99U98<^3hssmKu-U&8Ty!8p6snxGlcjJRYSr|H+6C{ z(UbUSNLK|mlq)3^K`vtLDw^e!nA;*mBnU3V$QfO|j~Q1H?u&S;N{!-QMpKTs1hQ&< zJmxRcVKgt`UquB1PfqhJ$)LQC@Ui5E`ftib?FGgvbHjmE#D^|K^LCy{yw_|#H*N(v zApAC5ZRvS;V(jq~B_=~Gk2mk9%V-;d8PL_6oL-r}YoEjMje07KR>(T#axFOr7S(cf z>cR%_O*>(ZM2Y^h9Gcp`MVf^JgZq1>t;v+eA~Rk^6S zw3E)v(K|9i__%ml05-%!`PMbjwUfIpA>irgFZ1fa9V$c?1EGdC^1QBw7tU+SA$g1f mEY#oMkt+dA9kuJ%N7&nBgVS7CZ9V?vDZJBm&iM52SN;e2w~5pM diff --git a/client/resources/hardnested_tables/bitflip_1_0f8_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_0f8_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..2c9de9e5d21a9bacae6696345f7d97999a5612a6 GIT binary patch literal 23792 zcmeI4e~eVs701t;ogIc{_MKIBVOU{j16$aH1rgMmpzXv~vu$wuBS2}o>c&!`jrgNg zBn>}qQE5tW{ZV6#RZH4h+f)gE&;|_FX|T49bn741*eq1is;C8*q_iR`x1W38%O$^JbA;nO57XAZ%Z)ZQDSHv4+??)-3InZ@%0Q_oKUIls{e=Fd zl53So`F4R+i%M=oPNKL(i)gk=&B{sno?2~{c`Dg;T9QUuJ;rzYrb=d&n%em)jbCy% zY_DVXh)Ui*nas&Hs5CQt^Ca4C;0pQ7c$JCv4cCg#y=rO}snlA#nl3+4GXYMe-955) zKa{zAq1<+(O3~l9_MpnSjCEH@zM@9wGMiYXVP+2TNka#M{~A5`hjc_sX&Pjl3|7Vx(LIff&!*2myaZM-nN5JUzqsA-$(X`5QiEW2`@* zoTZL&Zb6stxohGhdY?4qmPYX3;|E@+W+gL-oT)BQnU2*(T|7ky8*k)$8`tH~PwO6O zLCE~Bf%!CjYJb7=$GE2e#7!vbZvWn+rxg@UccUFC7^ciXF>_qfPHLp%0vG*~lQ4?4D*xoXcY94P_vv#2q*@MgziA6tF*<;th zC3pAW8|PY^S2>J8owcCt6h7*eTqaYm=8FXF1{Wf)CHzI(U8XQS5Ube_9Za;kdG+A# z`*=08v4{)o?M?XxQb_^k&zqz&Ws47*o62$@-mOJVV;4`L|GfPjmi{nPz~IKwDN3su z-^6c-M;Vl(Hm|;3y}-zaBNKF-Qwu-dkESZ!WQCl+Uvp zoj;}~74ovtK7j`zlG-O2_`wre<8V1E8^iZZd#Uj)MpBnb_5 z4Z;Bw>H@sA*nI6vDx>zp0yoKKU-t~SXY18`whc0UDqD6k(kUaJteV#@A}o>1-Z$J) z+4UmK&V@g+&q;tA^ze=c9u-uxBC)&!b(@JwZB4QHG*VySv*Kmd#%Hn!!NGwOWDzHp z<9+s($EoC9a^9mJ*W5=0hjekjmgbQ&ia)GCQSusEctNGp)AVWX@ zD6nuoGV$32UvI^N2#`-YW3d*8e;m``n=_1*gVY{>49RB#0Tp$;cR=;&r`6sL85c<} zfW*e5s5!a~YSu4A03^j;mvr_KYRBQjuY)A>B<6j8PZ$CWnHGYKOQrkvy0r6#OOF=7 z@fI9q-B1TXU|C|ei7_xd$R`on5Qa!e9#b&4BziIQE#6lL(7-}9qj9FXWnNV@&olK# z=lc!BjCzK>739_?Ub0b5YK8)@BqBtJWJDd%^ED7pp zJ|ErOq_VvYQB3>r;B9jUY9E=>0@g-J0c#&K>;SpV)HhjDu)~gs^t7c2Z8C14Sad5|%q0F`zP`kt%XD>5;4(z~^ zu(T{Tg2G&}H5Aa_qkyjFs@l3)e=EnuK5+I@{w^vZ5$zl z+BiZ8webwWHPpsKZJat`sEt=63->+L#zSp9)W%18#j$>e+W5#tS*VS(pbE9|P#Yhy z7bVoj!#>D2r7HrtdavJusjF7Q=iGsg_&(yGQeE173Vc&SzH$Joro=vbrFU56*ed9!t zSE@G9tYh;`*f;JsJ%xSa>K|e-qQ@V@lYENwee6JXR~?M{-0h93j4;( zYpV^_Xy_QP-G_bS{`I=BZ#?W9e_sc$gni?cS4P8`D&b5O{)9q7A~`|lkb58H4c>GK zXR5e&Gs2lF;Y^j0_3l&o9cts@OqFn^$|=1R7i#0-Oci&)TsTvO*PwXeI-IEz&Q$3G ymGftzaDE|YDTVV3IhbMafPs(j`GsNMc-S`{YU3ZpGgVf8-mk%hPwIx(GXDYg{i9L< literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_108_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_108_states.bin.bz2 deleted file mode 100644 index 2b87ca8f29cea5c6c95f1c9805c1934ee622f802..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3508 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 diff --git a/client/resources/hardnested_tables/bitflip_1_111_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_111_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_113_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_113_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 zcmeHNZ-`V?6hE^wvu(Nij+(BME<1~m3F*3uyR3vYLB@i+>k=VSX+jo4xGJHTS@Vc2 z`;ZI$F%b-j+#*yqvr<3Ad=N8A*^dPUeX#$v?pmu-=IM9tdo%Oi{+StbGJ<MV`$LbdlJ^aZJLK30%$+Sx%axs}cMeWHnMf9fvHS-t^o0I9j z=>6P9@npI!HkT>3m)!|yl`Wj2UIyg{Ox622qZAZ9!VT2O6g>d8k%LTCBD?rf%`B$L zn@s7XcIjbC{KYgy`N({3avY|}FHDt{+S<(hRp608+uL9zw`t`7lOvm%W}|jXwySn; zX1Zw|Q~kY=t%GTy)`|SYl)_&>y9>Z-hV12uWo4$@xg#FXh?J0{!XTe$nIcj@=5;$1Jus)i}>q-(g#Lz%r}cX z$J8aVK}QZG=s)GN$G|Em(q}rwTBa3V(fnRwas$P1b|up!k=;yd!}TalHCn>3x~3SS zdlZFML~?U^0!B0dV^ULV3DQCUM_QoGb0V_~O%$D8U}{8vUF0#gIXRu`g?8<_?} z1lx)X9wN>a_Nw}?aGOlU6!xLIwU9z{-HK=WFo`@BwDe8BR4{ilG_3?MMgR>~$W@*9 z7wlsicV;aVYn3&~U@wJ!Ewv6gTA zn%!y}oqmWLJ8P`?dk--#V#|Mv>~b@Yoq)dWoQgXN1dF+f>d|x$x5XBtpToN&H9*Wc zScB*iQ~>Sbosi;S4u+<)YXA{wQYnYD3A6@}-tl2=5-Mt>#^8(F6ojKQobhexd|@mC zb2l*G@v{lDrTTNb1C%f2`)*^}rs(R)2SZJb&neJy3)6hlO;J3YM()-*;bxTJFdh*3 zi0L@I$uw<-<*dRV?D=C<86RQvrEQvE4iRaDW%V*W;#H0L3%h7V10~Zoz?1I|*RAD#O`TT8`B zH5i_NcF${?k_Y{ROlxujHXG~*o5Qe5pz28s@|EAZklkr2LD&M0fnv`I{3Kpus#ARh zR_6*+O%2+-s!uWc1+(=A0F;g{|MN`WDPoUu2)R*nqUAGjra3y*fYoefdI*Yw{|2+w zAcfEIX6o-eISVmX+ils$AIDeDg9i)FLX-_yQ`rHxQ41C=v-#k5XQf) zf#b+19TlkXoC6Gh-&7p6E^`}UGW$fZCBjxxfJeCLO(0~8T7B>Jw|ZEJIq?AF8NizH zB*UJ0F)ZU&16sruvSW&HGro^k8O z>4!7x`EDO_#=#uyn~0uqMjY$LVOVlCK(GVE8;jTiloiyY$RC(f0F8(8A%;r__~>y5 zj&Yq2*Z{y?SgBf6t>N8jeTXo;lcFDCII<*}&Q!uatASFf2;6D(EfZ$AxiAAr0S{1l zC%f^Lz>TNPF?y#C0RT$?{yiv}kCPeTrBczZ5?;7M4~ccF_*AsnSOmOoH6(C8=gegA zihd0zEsrT=Lq?tBiYzD9;aqTuNvAKZ$jb^D%M5^fX92_=%W)2XWYv(UQEtWLKpx*; zvfnog8j3;^;p)RQw^l6jY8Oce7Wa|N{d5=9omD%cy%mal<9S{ zwia|nnLbn}b70IFuSUpw^SFL9m0K5jpOVIK2?EpUs+<2FaL{Jgx$1%?kOc2 z8Lm%%fg91pD`OpdiiF^&p{B%{avuH>qTDA~jHTSvJ_UJPO}FESg*XLq;XjU3p4IsN ze-NkOeZf6;5K7Izf_M>1CL5vP`p~?A^w~F%Y{-d=Mf(OqVfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_115_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_115_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_117_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_117_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 Spd{heWj@Lgu0I^#cJe>3AxA<0 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_11a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_11a_states.bin.bz2 deleted file mode 100644 index f7e2d1674d4fce897625e0221dabbd6710bbdf9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1788 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_11b_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_11b_states.bin.bz2 deleted file mode 100644 index 64619890057767ddd63990d313622510438ecc5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmV-51IqkDT4*^jL0KkKStu1O0RR>VfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_11b_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_11b_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_120_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_120_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..746496cf34cf93c8f933542b8385cc8c14e7ca93 GIT binary patch literal 17302 zcmeHO&2Lmy6hH6v&14+gIVNplnGk%jgyO;|ffy4LGl`1=p$gO$x|qZg+Cup#U=;~@ z0pmxPE{IDK-MG+hNQfpR?+@tGg<;bs#!o;CDVu^Ee&^oD^f4W1$F3UAUCev)?tS;3 zkKZ}>H}~F&UL5QlKK|o{w}>v)xBpDji?d~sh-xC!<&Zkcv|~}Ehbl33&z9&Fks67} zAfX9`757GmmKoPC|55^+rLFaEb|joab6sKNPA}(g?$sIH~N$*S#uKP)P!azmt;? z`W8jba~i5N-(#Gk{(W@ukxKNZmq5o{R53>$iYcElRpq^g{MrKL6DR#&OK+)7dQtKB zDrD~tzoJdkDZNmRRflUFs=;UI@Sl_UuHUjT6p6gYUaE* z=AAP{?sFQALc5zehq(T4a{B29sF;LP`q2Mts?0(6);)AO%1Os?rtX=XQ$F;{9cwt{ zp~0hZ0HdGd!Z;@dh!m<*>riA8O%FZEuE3ngwv{b312m%Lg3~A|K)NENN%Za3<#VPP zt(o9U(H3A}2x<;6y|2$Eq2uPv>nHNkjV$xJ$RVa1`jVD&OuzU$1-}9xwLrWtsLj-I zsK4w{zoDP$z$u`93)e<#oK`ik_Ms^p9A*yA(0CSd9e`XDu-XqkbmUD=%6Jx}aC+=~ za#qccNYmJJV*_XKzx?4fxwC>XpYe|U4(cu>`^3>4`s$XXw)U*SyB4UxuLyw z&$bl|Tfx9upRHiDzu0Cg82Ur~=}sULzLf{|ktxmzO`Mlg(ET9M^2B!|7%hyFe`EwB zvxX52X9y!0_!p!7O|_9CYz4zsFl+^*5f004j9@G?$)gX9U}W}K7X;(_UMDS~49tD= F?gJho;<^9; literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_122_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_122_states.bin.bz2 deleted file mode 100644 index 0e406a01950d17b502e7f64c8e7f804e77cc0190..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7248 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 diff --git a/client/resources/hardnested_tables/bitflip_1_122_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_122_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7b1d7eee7e1f0363faae30799aaa4a000e9a3527 GIT binary patch literal 41970 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 Q^BTJbDZJL7c>XW{FJ4B!S^xk5 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_128_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_128_states.bin.bz2 deleted file mode 100644 index e02d0729ae55fe61b4c4435644cad4731c825ac5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6269 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 X7(V!C|F7=9D)waN?s_?Tz5Txc9Vytx diff --git a/client/resources/hardnested_tables/bitflip_1_128_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_128_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..4c620265df601e69079361babdf8e49199e74f53 GIT binary patch literal 30841 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_131_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_131_states.bin.bz2 deleted file mode 100644 index 64619890057767ddd63990d313622510438ecc5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmV-51IqkDT4*^jL0KkKStu1O0RR>VfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_131_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_131_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_135_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_135_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 MHkiz_%fH|FFJzo{(*OVf diff --git a/client/resources/hardnested_tables/bitflip_1_138_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_138_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..87e96276102372a10a05ec0d04175f575de5a102 GIT binary patch literal 24606 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 LgpbKA`1!v8!YRQN literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_145_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_145_states.bin.bz2 deleted file mode 100644 index 64619890057767ddd63990d313622510438ecc5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmV-51IqkDT4*^jL0KkKStu1O0RR>VfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_145_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_145_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_147_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_147_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_148_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_148_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..eeac62486ef1a972d110d971f66c234af4e04ec7 GIT binary patch literal 25815 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 Myl|zK-SeIQ0twPW(f|Me literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_158_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_158_states.bin.bz2 deleted file mode 100644 index ceb8298d87e5e8a14ca8c7e0e36695c0e11db33d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1263 zcmYk4UrZBs0LKfqUH@E!LVNsXQ0!{UpI-2OhKEkWM35qQ8ilqw7a(`Pnka9Vg-p#B zr9f-1Z7daBPU93YB4C5pmxV35+_iULmLKAJRqMuJGPI!4qSb5#CxMBHTXoX(_{PUo>2*x*EmXAN3QnlS-G{BwVI%_MS7})v8fN-MGDc=}f9yx7hgp_HcM_Y8gI%6n>3$ z4dlC$(#N?M%Vp@p_rJ|=Ca*h}%N{*GisQA>zl~`iikSpmJGjKK{r@H>){D+=6cxS( z1RTJ2mTEV1rZ=^5OZYjO`)clGcjKF~p^fBFZecICmRdId;oAs5rAI0suKG)7Cd85S zZs4zc*|2#CB9xS<8jzqsDk>j0WIFl<8+329*w8tdQO0d^nC=fHTp9&- z=;F8&MhF+kkSZhPFk{4tg2sM9@W)F8uMyf}-;rn*B4*afqYMmGv+XKFLVZn(?g*o! zuZ5kwKkJh_Js?XeS9D=IVO5To+?k(JZliVEKUkBM?J|9B5UyT3M^GnG!Qkt|r9WsJ z>W@sl!|W^$hTmrW<#wuA5gB+wqSM4tOPfj#(aspi86#w?LzA6E6oFR{GNe~;#!GSB z5|sepLwuX02C6AXvFz3p?MxGEWCG@6~{56jKrJ%G$$I7TOMV*jCtQq9=q{v1{q>HvMnYhN8W=@Q_3prtuk%n<2%{Ji<90#eGyydJxN)RXlGmaY> zl^!R6hy>_Uk^P`FUN{|N8AVa8+)UM6fwR|2TOSPO?+x^G^xZJ)oL8gS2WD-~%E&R{ zCost~!nN4lG0OfFwk=Mm^CHWVvu2&Ap_jYqgqV*C*!vX}C=nz?=#V0^IB5n0Sckqi ZXXT(f9F;=@ALBoMcC+e8!w$dF_a8p+0U7`R diff --git a/client/resources/hardnested_tables/bitflip_1_158_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_158_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..8ee5757b940026e29af614968f2c4d022ed109a3 GIT binary patch literal 20720 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 SkR;*OWj@LguF~hXKmH%Ck}&T8 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_160_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_160_states.bin.bz2 deleted file mode 100644 index 6264a1abb57b3e7d7bc2b28e66bbd36d36f706b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1300 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_161_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_161_states.bin.bz2 deleted file mode 100644 index 64619890057767ddd63990d313622510438ecc5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmV-51IqkDT4*^jL0KkKStu1O0RR>VfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_161_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_161_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 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 diff --git a/client/resources/hardnested_tables/bitflip_1_163_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_163_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 zcmeHNZ-`V?6hE^wvu(Nij+(BME<1~m3F*3uyR3vYLB@i+>k=VSX+jo4xGJHTS@Vc2 z`;ZI$F%b-j+#*yqvr<3Ad=N8A*^dPUeX#$v?pmu-=IM9tdo%Oi{+StbGJ<MV`$LbdlJ^aZJLK30%$+Sx%axs}cMeWHnMf9fvHS-t^o0I9j z=>6P9@npI!HkT>3m)!|yl`Wj2UIyg{Ox622qZAZ9!VT2O6g>d8k%LTCBD?rf%`B$L zn@s7XcIjbC{KYgy`N({3avY|}FHDt{+S<(hRp608+uL9zw`t`7lOvm%W}|jXwySn; zX1Zw|Q~kY=t%GTy)`|SYl)_&>y9>Z-hV12uWo4$@xg#FXh?J0{!XTe$nIcj@=5;$1Jus)i}>q-(g#Lz%r}cX z$J8aVK}QZG=s)GN$G|Em(q}rwTBa3V(fnRwas$P1b|up!k=;yd!}TalHCn>3x~3SS zdlZFML~?U^0!B0dV^ULV3DQCUM_QoGb0V_~O%$D8U}{8vUF0#gIXRu`g?8<_?} z1lx)X9wN>a_Nw}?aGOlU6!xLIwU9z{-HK=WFo`@BwDe8BR4{ilG_3?MMgR>~$W@*9 z7wlsicV;aVYn3&~U@wJ!Ewv6gTA zn%!y}oqmWLJ8P`?dk--#V#|Mv>~b@Yoq)dWoQgXN1dF+f>d|x$x5XBtpToN&H9*Wc zScB*iQ~>Sbosi;S4u+<)YXA{wQYnYD3A6@}-tl2=5-Mt>#^8(F6ojKQobhexd|@mC zb2l*G@v{lDrTTNb1C%f2`)*^}rs(R)2SZJb&neJy3)6hlO;J3YM()-*;bxTJFdh*3 zi0L@I$uw<-<*dRV?D=C<86RQvrEQvE4iRaDW%V*W;#H0L3%h7V10~Zoz?1I|*RAD#O`TT8`B zH5i_NcF${?k_Y{ROlxujHXG~*o5Qe5pz28s@|EAZklkr2LD&M0fnv`I{3Kpus#ARh zR_6*+O%2+-s!uWc1+(=A0F;g{|MN`WDPoUu2)R*nqUAGjra3y*fYoefdI*Yw{|2+w zAcfEIX6o-eISVmX+ils$AIDeDg9i)FLX-_yQ`rHxQ41C=v-#k5XQf) zf#b+19TlkXoC6Gh-&7p6E^`}UGW$fZCBjxxfJeCLO(0~8T7B>Jw|ZEJIq?AF8NizH zB*UJ0F)ZU&16sruvSW&HGro^k8O z>4!7x`EDO_#=#uyn~0uqMjY$LVOVlCK(GVE8;jTiloiyY$RC(f0F8(8A%;r__~>y5 zj&Yq2*Z{y?SgBf6t>N8jeTXo;lcFDCII<*}&Q!uatASFf2;6D(EfZ$AxiAAr0S{1l zC%f^Lz>TNPF?y#C0RT$?{yiv}kCPeTrBczZ5?;7M4~ccF_*AsnSOmOoH6(C8=gegA zihd0zEsrT=Lq?tBiYzD9;aqTuNvAKZ$jb^D%M5^fX92_=%W)2XWYv(UQEtWLKpx*; zvfnog8j3;^;p)RQw^l6jY8Oce7Wa|N{d5=9omD%cy%mal<9S{ zwia|nnLbn}b70IFuSUpw^SFL9m0K5jpOVIK2?EpUs+<2FaL{Jgx$1%?kOc2 z8Lm%%fg91pD`OpdiiF^&p{B%{avuH>qTDA~jHTSvJ_UJPO}FESg*XLq;XjU3p4IsN ze-NkOeZf6;5K7Izf_M>1CL5vP`p~?A^w~F%Y{-d=Mf(OqVfBpSPUQGxH2nYyB2n+}S2oA@^CV&6}00^jn z06+*B&;}j=000000AoW#Kn6oV0000CXlQ5v$Y=ln00E5+4FDMp00000F`=QL10kRQ z0003=Nd%K>X)zc~rpck8BlJ&7Z9iE`QT!KmSbf9kUsBAUBJRF7(DHa^3*{V6o(m_u zKCyZRVRXv&E-$>ERt}vGl=2_`VzKZU#g2!AEPca;nQ>WJmNLd+pS)R5EMLgN;>LJK zsQpX8dykcQF~#pO^BteCPAcGc7<4alhv0Wk!RTGrP8Gv5E1`7brd&rHOv5u6M+Q!p z6EedOQ5=#~H%G$6?aw^0P8&MV~p^} z8N=u}#C=8cj*ARfG98v#**Ltf4lK;}D~htp^-m5D?8}BY1n-DD`18 z4~dn0OqODgMvt=}N$h!D-IVL6mE_Fq;^U0;J%bec%N8$bnVG`wtFYj{(%^dwqU^db zPek-vHd&AMevkD0&&A~IyFNkC#$NNf;d@KuBMudJC*)ig47xFc69c*Vp7Q9P;ozb6 z1@|w-bU2^IIA4P4eQB0m*XB=*tKuwuC&1{qV#h^$$8zv~BiI*`JfCRz56IwqOVne) z`UQ*gF@A&noIeE*l`8cQu>6mK@H>wEK_ z`SPgYBME}o0jgD$GOHz8q_8xQ!zwIBMJ5?kVq#%Tlwf2=F(H7#D;5hSiIWPLVwNmM zEHPq+F;fgiCJI==EHP1xRbpW1OLJq>&c diff --git a/client/resources/hardnested_tables/bitflip_1_165_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_165_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..7ec52a440530141d10f2efa0d982a92d057bec1c GIT binary patch literal 12849 zcmeHNZ-`V?6hE^wvu(Nij+(BME<1~m3F*3uyR3vYLB@i+>k=VSX+jo4xGJHTS@Vc2 z`;ZI$F%b-j+#*yqvr<3Ad=N8A*^dPUeX#$v?pmu-=IM9tdo%Oi{+StbGJ<MV`$LbdlJ^aZJLK30%$+Sx%axs}cMeWHnMf9fvHS-t^o0I9j z=>6P9@npI!HkT>3m)!|yl`Wj2UIyg{Ox622qZAZ9!VT2O6g>d8k%LTCBD?rf%`B$L zn@s7XcIjbC{KYgy`N({3avY|}FHDt{+S<(hRp608+uL9zw`t`7lOvm%W}|jXwySn; zX1Zw|Q~kY=t%GTy)`|SYl)_&>y9>Z-hV12uWo4$@xg#FXh?J0{!XTe$nIcj@=5;$1Jus)i}>q-(g#Lz%r}cX z$J8aVK}QZG=s)GN$G|Em(q}rwTBa3V(fnRwas$P1b|up!k=;yd!}TalHCn>3x~3SS zdlZFML~?U^0!B0dV^ULV3DQCUM_QoGb0V_~O%$D8U}{8vUF0#gIXRu`g?8<_?} z1lx)X9wN>a_Nw}?aGOlU6!xLIwU9z{-HK=WFo`@BwDe8BR4{ilG_3?MMgR>~$W@*9 z7wlsicV;aVYn3&~U@wJ!Ewv6gTA zn%!y}oqmWLJ8P`?dk--#V#|Mv>~b@Yoq)dWoQgXN1dF+f>d|x$x5XBtpToN&H9*Wc zScB*iQ~>Sbosi;S4u+<)YXA{wQYnYD3A6@}-tl2=5-Mt>#^8(F6ojKQobhexd|@mC zb2l*G@v{lDrTTNb1C%f2`)*^}rs(R)2SZJb&neJy3)6hlO;J3YM()-*;bxTJFdh*3 zi0L@I$uw<-<*dRV?D=C<86RQvrEQvE4iRaDW%V*W;#H0L3%h7V10~Zoz?1I|*RAD#O`TT8`B zH5i_NcF${?k_Y{ROlxujHXG~*o5Qe5pz28s@|EAZklkr2LD&M0fnv`I{3Kpus#ARh zR_6*+O%2+-s!uWc1+(=A0F;g{|MN`WDPoUu2)R*nqUAGjra3y*fYoefdI*Yw{|2+w zAcfEIX6o-eISVmX+ils$AIDeDg9i)FLX-_yQ`rHxQ41C=v-#k5XQf) zf#b+19TlkXoC6Gh-&7p6E^`}UGW$fZCBjxxfJeCLO(0~8T7B>Jw|ZEJIq?AF8NizH zB*UJ0F)ZU&16sruvSW&HGro^k8O z>4!7x`EDO_#=#uyn~0uqMjY$LVOVlCK(GVE8;jTiloiyY$RC(f0F8(8A%;r__~>y5 zj&Yq2*Z{y?SgBf6t>N8jeTXo;lcFDCII<*}&Q!uatASFf2;6D(EfZ$AxiAAr0S{1l zC%f^Lz>TNPF?y#C0RT$?{yiv}kCPeTrBczZ5?;7M4~ccF_*AsnSOmOoH6(C8=gegA zihd0zEsrT=Lq?tBiYzD9;aqTuNvAKZ$jb^D%M5^fX92_=%W)2XWYv(UQEtWLKpx*; zvfnog8j3;^;p)RQw^l6jY8Oce7Wa|N{d5=9omD%cy%mal<9S{ zwia|nnLbn}b70IFuSUpw^SFL9m0K5jpOVIK2?EpUs+<2FaL{Jgx$1%?kOc2 z8Lm%%fg91pD`OpdiiF^&p{B%{avuH>qTDA~jHTSvJ_UJPO}FESg*XLq;XjU3p4IsN ze-NkOeZf6;5K7Izf_M>1CL5vP`p~?A^w~F%Y{-d=Mf(OqZKtgqxg1cHp=^D)`+kg~4rUdo0&Q?(?L^ALlc!uwyMn0i4kKeo6Kv4LIE zUFd2*@fq9qKKo6Q;Z@SGu`p7^D3LeUm)Y%Q^J2U~*>t=A@DEwGfd~B9*F;L`Uv7O- z_#>97?7mPTQlr(ef5~LFL{i8hRBNHh!-jMKpaQ5p@)oaCm-LysuGR>PHcMX#`e3DJU>$q0`AT4Ute4^pTzts{X<7 zvSwHK3}D!7T{&;W65EQG6tT=A6dsgUDfs9gmD0tVd_kWI*Z z4$wCt0VL>FqMD9^C7{ogvYR1^ha$D0YL=uyL|I8a0)`}o!d4^4vE4~Gg)5NvNK6#w zpjdpdI*+Oj0XRZRrXe^3sb(@BehH{9oyGW`XpDwxN>qPC#i>B0E00E%tM&34aUr|4v$1E+S> zX4UAXn_tqYOVbb@-VLf{m+Y*rGvwe5pF)gHv70=W0CZ4?Y6gGw#-GTCQS$ zj6`v`Yo{>L{a@y#Dkp`=bD%kB8tWuSd!*k$If>~;%=x1n76<#sxXLW4H=)h_L5Y6j z2$^#)xqi$efM{*p-`cF0cuGFAIB6?8VPBR^EK;yx99^c4*Qg{)94JI}&}WennM?&m zP+lJ01^R%0s3Y3jylMwrX(c6Y5e4Q^GYnXyjt5wHtdKlIg`7H-AJ1S~0ejhuX#Itf z)jb5%&?P46Lqb~TJ`iH2-yHQF>+jE`3fW(1Kso)8BMGtI3j zTe$J?j)8xdWV&VeaT%rE2UBNoTnc>})blJ6OD)#48*pl1oD7)JcYX8r4JhJJcqw-|WEBqcxhttbI@y$^=gGG^k64z%k*#DqeQvNPIj? z98~1t@rv_`Q297&mv1(BDW2!^p1le|FbEL{mL<}mP)cW zua1m9$*&&y!*Fr`?TFe+N(ZH_2EW-wzwgSGILAYkTJ78A`fI}YVlYh+iXx^YJJS+sv&=cd@^ z5#CrC&qa)OnW2jw<%blX_7Z1*$}QZA*K{OEIRarATX5KA|LEFy81= zIDlp=%H(Tg1S1B!0#c?*n0EW&(Pu~Y?K=W%VK{x;?KeL}o&kSey*XX*+1#mZp8uFE zUM-zh^)R2Y?J!TeEZ4%^)&#BG-@WSRV1`OSETLq5{Oz(PHjv?(mN*13RnV_n(S#IwoVMXnC>0s=DvY* z?0H6Z*bAd{m1dsH-GRc7dqKPmB9TCrkm`vSIq4Nm%IJiNMD=2~k~vXk=dZ-2__MfNJNOF3+AEbu&uF$5>3PA01^k zBvfIp_4Q3qU1Ss)B^uk$3HEjnyWhPd>8ofhxrc)CIk(3SaVu|!L7BnU+G4rf-ii?o zJxunN?Me2H@rG2b6g=ld%$;I(W%Fp|zy%D9@;XXPB%VvS(Sc+ofX3=1y`8y#qs`0Y z94-;<6<8h`bC`MkDY}hP(U`EMZ0|stk$-Nu>~dn!x6IslpNtiB(&5E22^z;Lz{-`T!ljeWtsU~()&*2XT0QRSTNo)fK9-#N-Xnc z8WJ}!8eH#hTe91X-u9t*y@(2^+4JOH4C|oDc2k6Of@a9X59eci7es0#1cf0nYUTOYvnm>Z*(WPw;p^FOZes^pThh^0-x;MN=W7P z2fgPYt(5oKqERcovh)dU`PJ#$`$I28zmjAoJt(Nk+Jw#eF`0b7uYPJy=bUpl8&!0M zy4$M+65~ZC9)a!vao}(VIF8ke+vE|L7mE{jfP)+7=ETh=pKKO@B0Wuzxn;PY#=oD7 zCK+4fRDJH(U-d;p4T%&rnE@1uZIkY^7?sS#)90k%BUbz=-lBtBpgmH`4oRR(6mvVn z_6ezR7GEk6FNN-nX{A`ZzB+hPEca8i zS(E^E0^1PB<(DmU+|lIf$f;&9ktiF)mi=hdz5IXh#Lyv|%SCws!GTqC`{cMP0stCD zrESwsXyOz8P}FlTp%VV*JAfXNwz-44wz{mK#4THZoVw$OaYyy14b)0Bc$ zIt~tI8t8)+==tlmz&MVZ2+cCgyRI%yJ^NdqyyRm24Dobw^l|Xofw|whW(#hjJ~BVl z?EHjsGGq7{@hO=>*>&Z)ko>%0Qfpk~Q5$@v$V+ zuPLJYoeXD)#3kXWQI!v_MIUNa&1m?Gl)RV*I6I&+`NVdWByqhr?KakK21*Xtxd4kR z2r(Su?y%pWcc8*|U{~hQ1Vc7~Vp<{+x({aS0TrZj@T~Z8g>!Bi3j6#Hz>z#>nPI_# z@Hq-}1VEP~vC)|O$ayQ@_t!R=j>UmH1`!Lr{0oA4T~kk%^!*qgwSZVYu!GY>J-P8S z0>Q1`jt=g_Ps~lsq?KZ}v$c3_(Xq5*18pkcaP3ft-H(R8F7h|ji&rTphEs=R)$KQ0 zW0pMYchYzeudtHv(45zB9D)Kafcr4Aa!X&aXx5!gF!>$Yg7UG(s^Y}Nj;5(_bkane zjz#T$Sm3_jta}C@cgQ0S3G|%B;u7^GDrG0ifh&BL3P5?WiI}IpQgkqtvJ4HpxM-`d z>;lH-?-uY(zU}C7$>}&xIl+E9c_Fpf*h5{MKP!NV5694IYe)qO=tstL%;;d)(u=HOzBgOre zSrTub?Bb@B*7z?>?`=`{Uj~jYAG<|-Z@bzwIh_20oTE7)qZG?aQxD z_5Ke+2J~@l>awt;oh35y<#4LFI%I>cjvk`~kI6bIKw~GCR8p5KxP0&yM*}FF06jdL zQ=H0k_DE7lnIRPni+=4=Pfv$JXR&tk!fzw5Po7tNcEI!e4=LYtUHRps?VCR?`_*J6 z--tjSit#nLl}2e$TNCO<3djkaE_%s8*rccWpmAfS-vg6 z9mcxp3U{65Ps;LU#=1Z#()Z%*JMMB+aM>RHKb6#VFuQ3Kb6qac;NJXK{t!!qEKnYt zO=v{{@qfz?FHQ7Cd_Tc5aKp@M6(1sDM!$%uE2%%T(>PM;(7E@37Y@n1dZR0W2ZA0f z5MPLwkHaMsq1-aC>Ff*6hS$s4&VCur2v^YlZ+^^Uv2G&3@dPkeMcgC@hZ@kemtwOP zvlp5h1y7PK>wUn-^YLSut4@jC63!p(O&YIsc}-^$+|)B$zEJ7Gk|@^CuI#oeDT1mN zojW_A8^R8QqdqROtFVU&6R;AhqL}Q-bUmK+;=ciM89d?u diff --git a/client/resources/hardnested_tables/bitflip_1_168_states.bin.lz4 b/client/resources/hardnested_tables/bitflip_1_168_states.bin.lz4 new file mode 100644 index 0000000000000000000000000000000000000000..151d6c198a5e735f5f3a14f13ca538481f673916 GIT binary patch literal 29435 zcmeI5dyG`|701t=xiieHGxJ+u1M7(HAd4)x3yAm#HSxCffyi1FAE?{7wiHnT5q!X^ zc(oR5Yuhw6t+AUR1>m!=fSAB%F@x4H?Vnt;6^>gl>ogE%htr~6p zO|pAu@8kD7zwddUbMIY$|MtdN3s%3eP-Ii8_0YdcpY3b0Yx}IVYo%{ppRJQ$Tg%Sg zwPM#c$SLbM*pd^kBn@j@(*RI5D9x#zm9*diyfs1(KL8 zBl~(AIb4uTPNXEo-WENp-H4a>d@*IoGlX9+L)Rtrz+58#=hN1!RFJAvhO-}Nsh4(Fp|4rka$p=G=VqCNb>Sb zkV*$)N;1tzW*J9@a^gLFxBoPfzQ%;9Q;ams(;aqEv?$+5qkY;)35fcP6q`&~9M8F3 zY@68feT3bpC-GTo!sMAo_O*5iG@fUqMfd7w3B$4hsOZFtj0Dkseie*No?+yWIeIK_ zGBSkO#wzhf4(Ir@x-@Gy#WdLMI?_22Z92lDp>}E(jI*BjjnZZ#E3a4I0aDBY$q224_eMLp=o1P{763U zORfxW>RVyMxm*+hwb_*Y15B7c7&I;~M0lscdpuWxOUl|yxOOXJogHx?BTZ|=x*-s8 zEc-{QT)<*rE--3AnRW^AZ-wQYpL&4vZe`0z1@<+7D=Z4rkUXSC*|ed8=ua6e0xN8W z7=f6~dEL%`iJqf#-#0G(#)68xx00t7KghD)9r zU_xTieyV&aRY9S^QE`5YK|7WPh)x zp-@sr)eo9h(aEmts#!jOp=G{mM<^#SY`#`Al%Go7LK9xWH&2E8OcS100=NlA7XH|j zm#UCA8|m(1dNDn+PXu}=S|UkS=`RA{-*65%qyR>x&29teS7Nv_y%F`7Mf2#f%fKzk zJdc~O9*GS-7Mrvenet7u!0u8bH@BfFB_j{7LRetwhzlZ(`oNU;`*tMQJyM8NG7^!z zwclrH3{q8>#mx9!C^#Kfvyz6xYFWL|c*^QcCRDlOx&Vodcu~Ouew_s4y*nXorIER# zSmSsjod^W1e~%-t#;Y96B9Oe?GZ1ql(;Z{N+3g&@iwp13DgVWK)Jy<-EDIYIgbl3D zT1Fl_hWQ}{?fw%>Zvn{G*LM(wVMaRasZ3#KLx6&}Ef$4&6}kOEJi-e=pEVErn7Z^q z3=d#wmJ#X|yZ>C*kAkdOz{NgP*6Qy#mV_zwMk@iFkhXR)iaLtv4&<*Th=E$g6XH>H z1s$+vj{OP9C?xmSkgJ?frE5m%Cf0IdNw(wn>>t)7fx@sV+w;fd#%8aZ0n(|xf)tY- z3tjDOS+6Q$7VGOvCm64RxbA$*ss9enW)*>@gN0@ znr=P~3a>TNW9PGUXkYiFl7(s9`V#OWsn~DeOW5ZkRvpP0(6@%E$1>DG+2v>W2^n