From 20ca1c19ac03307e7a5b87d511b9ed09193b3424 Mon Sep 17 00:00:00 2001 From: Ritchie Date: Mon, 8 Sep 2025 11:48:06 +0800 Subject: [PATCH] fix(legacy): misc fix --- common/protob/messages-tron.proto | 1 + legacy/firmware/cosmos_networks.c | 4 +- legacy/firmware/cosmos_networks.h | 2 +- legacy/firmware/ethereum.c | 2 +- legacy/firmware/ethereum_onekey.c | 2 +- legacy/firmware/language.c | 4 ++ legacy/firmware/pinmatrix.c | 28 ++++++------ legacy/firmware/protect.c | 16 +++---- .../protob/messages-ethereum-onekey.options | 2 +- .../firmware/protob/messages-ethereum.options | 2 +- legacy/firmware/solana.c | 39 ++++++++++++----- legacy/firmware/tron.c | 30 +++++++++---- legacy/firmware/version.h | 4 +- legacy/gen/bitmaps.c | 40 +++++++++--------- legacy/gen/bitmaps/digit0.png | Bin 85 -> 204 bytes legacy/gen/bitmaps/digit1.png | Bin 83 -> 177 bytes legacy/gen/bitmaps/digit2.png | Bin 95 -> 191 bytes legacy/gen/bitmaps/digit3.png | Bin 91 -> 187 bytes legacy/gen/bitmaps/digit4.png | Bin 100 -> 189 bytes legacy/gen/bitmaps/digit5.png | Bin 90 -> 190 bytes legacy/gen/bitmaps/digit6.png | Bin 95 -> 195 bytes legacy/gen/bitmaps/digit7.png | Bin 92 -> 187 bytes legacy/gen/bitmaps/digit8.png | Bin 87 -> 190 bytes legacy/gen/bitmaps/digit9.png | Bin 95 -> 194 bytes vendor/libsol | 2 +- 25 files changed, 108 insertions(+), 70 deletions(-) mode change 100755 => 100644 legacy/gen/bitmaps/digit0.png mode change 100755 => 100644 legacy/gen/bitmaps/digit1.png mode change 100755 => 100644 legacy/gen/bitmaps/digit2.png mode change 100755 => 100644 legacy/gen/bitmaps/digit3.png mode change 100755 => 100644 legacy/gen/bitmaps/digit4.png mode change 100755 => 100644 legacy/gen/bitmaps/digit5.png mode change 100755 => 100644 legacy/gen/bitmaps/digit6.png mode change 100755 => 100644 legacy/gen/bitmaps/digit7.png mode change 100755 => 100644 legacy/gen/bitmaps/digit8.png mode change 100755 => 100644 legacy/gen/bitmaps/digit9.png diff --git a/common/protob/messages-tron.proto b/common/protob/messages-tron.proto index e54cb10eff..77ec963fc3 100644 --- a/common/protob/messages-tron.proto +++ b/common/protob/messages-tron.proto @@ -98,6 +98,7 @@ message TronSignTx { optional uint64 balance = 3; optional string receiver_address = 4; optional bool lock = 5; + optional uint64 lock_period = 6; } message TronUnDelegateResourceContract { optional TronResourceCode resource = 2; diff --git a/legacy/firmware/cosmos_networks.c b/legacy/firmware/cosmos_networks.c index 6540250c68..3fd6573547 100644 --- a/legacy/firmware/cosmos_networks.c +++ b/legacy/firmware/cosmos_networks.c @@ -6,7 +6,8 @@ const CosmosNetworkType cosmos_networks[COSMOS_NETWORK_COUNT] = { {"osmosis-1", "osmo", "Osmosis", "OSMO", "uosmo", 6}, {"secret-4", "secret", "Secret Network", "SCRT", "uscrt", 6}, {"akashnet-2", "akash", "Akash", "AKT", "uakt", 6}, - {"crypto-org-chain-mainnet-1", "cro", "Crypto.org", "CRO", "basecro", 8}, + {"crypto-org-chain-mainnet-1", "cro", "Cronos POS Chain", "CRO", "basecro", + 8}, {"iov-mainnet-ibc", "star", "Starname", "IOV", "uiov", 6}, {"sifchain-1", "sif", "Sifchain", "ROWAN", "rowan", 18}, {"shentu-2.2", "certik", "Shentu", "CTK", "uctk", 6}, @@ -32,6 +33,7 @@ const CosmosNetworkType cosmos_networks[COSMOS_NETWORK_COUNT] = { {"quicksilver-1", "quick", "Quicksilver", "QCK", "uqck", 6}, {"fetchhub-4", "fetch", "Fetch.ai", "FET", "afet", 18}, {"celestia", "celestia", "Celestia", "TIA", "utia", 6}, + {"bbn-1", "bbn", "BABYLON", "BABY", "ubbn", 6}, }; const CosmosNetworkType *cosmosnetworkByChainId(const char *chain_id) { diff --git a/legacy/firmware/cosmos_networks.h b/legacy/firmware/cosmos_networks.h index c522f765b8..28c86b6daa 100644 --- a/legacy/firmware/cosmos_networks.h +++ b/legacy/firmware/cosmos_networks.h @@ -3,7 +3,7 @@ #include -#define COSMOS_NETWORK_COUNT 30 +#define COSMOS_NETWORK_COUNT 31 typedef struct { const char *const chain_id; diff --git a/legacy/firmware/ethereum.c b/legacy/firmware/ethereum.c index 32883b92b5..d729cd5a83 100644 --- a/legacy/firmware/ethereum.c +++ b/legacy/firmware/ethereum.c @@ -54,7 +54,7 @@ static bool eip1559; struct SHA3_CTX keccak_ctx = {0}; static uint32_t signing_access_list_count; -static EthereumAccessList signing_access_list[8]; +static EthereumAccessList signing_access_list[16]; _Static_assert(sizeof(signing_access_list) == sizeof(((EthereumSignTxEIP1559 *)NULL)->access_list), "access_list buffer size mismatch"); diff --git a/legacy/firmware/ethereum_onekey.c b/legacy/firmware/ethereum_onekey.c index 8710930b3d..97d234002a 100644 --- a/legacy/firmware/ethereum_onekey.c +++ b/legacy/firmware/ethereum_onekey.c @@ -55,7 +55,7 @@ static bool eip1559; static struct SHA3_CTX keccak_ctx = {0}; static uint32_t signing_access_list_count; -static EthereumAccessListOneKey signing_access_list[8]; +static EthereumAccessListOneKey signing_access_list[16]; _Static_assert(sizeof(signing_access_list) == sizeof(((EthereumSignTxEIP1559OneKey *)NULL)->access_list), "access_list buffer size mismatch"); diff --git a/legacy/firmware/language.c b/legacy/firmware/language.c index 044409042c..bd8bb1b6dd 100644 --- a/legacy/firmware/language.c +++ b/legacy/firmware/language.c @@ -448,6 +448,8 @@ const char *const languages[][2] = { {"Format:", "格式:"}, // layout2.c {"From", "发送方"}, + // solana.c + {"From (Token Account)", "发送方 (代币账户)"}, // layout2.c {"GPG sign for:", ""}, {"Gas Fee Cap", "燃料单价上限"}, @@ -798,6 +800,8 @@ const char *const languages[][2] = { {"Tip Amount", "小费金额"}, {"Tipper", "小费支付方"}, {"Title", "标题"}, + // solana.c + {"To (Token Account)", "接收方 (代币账户)"}, // signing.c fsm_msg_coin.h // ada.c {"To Pool:", "目标质押池:"}, diff --git a/legacy/firmware/pinmatrix.c b/legacy/firmware/pinmatrix.c index b9c81570c3..b74c2ee8c1 100644 --- a/legacy/firmware/pinmatrix.c +++ b/legacy/firmware/pinmatrix.c @@ -25,7 +25,7 @@ #include "pinmatrix.h" #include "rng.h" -static char pinmatrix_perm[10] = "XXXXXXXXX"; +static char pinmatrix_perm[11] = "XXXXXXXXX"; void pinmatrix_draw(const char *text) { const BITMAP *bmp_digits[10] = { @@ -37,21 +37,23 @@ void pinmatrix_draw(const char *text) { if (text) { oledDrawStringCenterAdapter(OLED_WIDTH / 2, 0, text, FONT_STANDARD); } - const int w = bmp_digit0.width, h = bmp_digit0.height, pad = 2; + const int w = bmp_digit0.width, h = bmp_digit0.height, pad = 1; + int k = 0; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { // use (2 - j) instead of j to achieve 789456123 layout - int k = pinmatrix_perm[i + (2 - j) * 3] - '0'; + k = pinmatrix_perm[i + (2 - j) * 3] - '0'; oledDrawBitmap((OLED_WIDTH - 3 * w - 2 * pad) / 2 + i * (w + pad), - OLED_HEIGHT - 3 * h - 2 * pad + j * (h + pad), + OLED_HEIGHT - 4 * h - 3 * pad + j * (h + pad), bmp_digits[k]); } } - for (int i = 0; i < 3; i++) { - // 36 is the maximum pixels used for a pin matrix pixel row - // but we use 56 pixels to add some extra - oledSCAInside(12 + i * (h + pad), 12 + i * (h + pad) + h - 1, 56, 38, - OLED_WIDTH - 38); + k = pinmatrix_perm[9] - '0'; + oledBox(27, 52, 101, 64, true); + oledDrawBitmap(52, 52, bmp_digits[k]); + for (int i = 0; i < 4; i++) { + oledSCAInside(13 + i * (h + pad), 13 + i * (h + pad) + h - 1, 76, 27, + OLED_WIDTH - 27); } oledRefresh(); } @@ -60,8 +62,9 @@ void pinmatrix_start(const char *text) { for (int i = 0; i < 9; i++) { pinmatrix_perm[i] = '1' + i; } - pinmatrix_perm[9] = 0; - random_permute(pinmatrix_perm, 9); + pinmatrix_perm[9] = '0'; + pinmatrix_perm[10] = 0; + random_permute(pinmatrix_perm, 10); pinmatrix_draw(text); } @@ -70,7 +73,8 @@ secbool pinmatrix_done(bool clear, char *pin) { secbool ret = sectrue; while (pin && pin[i]) { k = pin[i] - '1'; - if (k >= 0 && k <= 8) { + if (k == -1) k = 9; + if (k >= 0 && k <= 9) { pin[i] = pinmatrix_perm[k]; } else { pin[i] = 'X'; diff --git a/legacy/firmware/protect.c b/legacy/firmware/protect.c index 2ceba0ae35..ce2194a75a 100644 --- a/legacy/firmware/protect.c +++ b/legacy/firmware/protect.c @@ -882,9 +882,7 @@ const char *protectInputPin(const char *text, uint8_t min_pin_len, if (counter >= DEFAULT_PIN_LEN) { index = 10; } else { - do { - index = random_uniform(10); - } while (index == 0); + index = random_uniform(10); } } @@ -894,7 +892,7 @@ const char *protectInputPin(const char *text, uint8_t min_pin_len, if (isLongPress(KEY_UP_OR_DOWN) && getLongPressStatus()) { if (isLongPress(KEY_UP)) { // up if (!d) { // default direction - if (index > 1) + if (index > 0) index--; else index = max_index; @@ -902,16 +900,16 @@ const char *protectInputPin(const char *text, uint8_t min_pin_len, if (index < max_index) index++; else - index = 1; + index = 0; } } else if (isLongPress(KEY_DOWN)) { // down if (!d) { if (index < max_index) index++; else - index = 1; + index = 0; } else { - if (index > 1) + if (index > 0) index--; else index = max_index; @@ -930,7 +928,7 @@ const char *protectInputPin(const char *text, uint8_t min_pin_len, } switch (key) { case KEY_UP: - if (index > 1) + if (index > 0) index--; else index = max_index; @@ -939,7 +937,7 @@ const char *protectInputPin(const char *text, uint8_t min_pin_len, if (index < max_index) index++; else - index = 1; + index = 0; goto refresh_menu; case KEY_CONFIRM: (void)pin; diff --git a/legacy/firmware/protob/messages-ethereum-onekey.options b/legacy/firmware/protob/messages-ethereum-onekey.options index aa6484be99..0f95b428be 100755 --- a/legacy/firmware/protob/messages-ethereum-onekey.options +++ b/legacy/firmware/protob/messages-ethereum-onekey.options @@ -14,7 +14,7 @@ EthereumSignTxEIP1559OneKey.gas_limit max_size:32 EthereumSignTxEIP1559OneKey.to max_size:43 EthereumSignTxEIP1559OneKey.value max_size:32 EthereumSignTxEIP1559OneKey.data_initial_chunk max_size:1024 -EthereumSignTxEIP1559OneKey.access_list max_count:8 +EthereumSignTxEIP1559OneKey.access_list max_count:16 EthereumAccessListOneKey.address max_size:43 EthereumAccessListOneKey.storage_keys max_count:8 max_size:32 diff --git a/legacy/firmware/protob/messages-ethereum.options b/legacy/firmware/protob/messages-ethereum.options index 8515a93bb7..2469f022a9 100644 --- a/legacy/firmware/protob/messages-ethereum.options +++ b/legacy/firmware/protob/messages-ethereum.options @@ -14,7 +14,7 @@ EthereumSignTxEIP1559.gas_limit max_size:32 EthereumSignTxEIP1559.to max_size:43 EthereumSignTxEIP1559.value max_size:32 EthereumSignTxEIP1559.data_initial_chunk max_size:1024 -EthereumSignTxEIP1559.access_list max_count:8 +EthereumSignTxEIP1559.access_list max_count:16 EthereumAccessList.address max_size:43 EthereumAccessList.storage_keys max_count:8 max_size:32 diff --git a/legacy/firmware/solana.c b/legacy/firmware/solana.c index b804ad1463..799fd36e1c 100644 --- a/legacy/firmware/solana.c +++ b/legacy/firmware/solana.c @@ -107,10 +107,10 @@ void solana_sign_tx(const SolanaSignTx *msg, const HDNode *node, size_t num_summary_steps = 0; size_t steps = 0; uint8_t steps_list[MAX_TRANSACTION_SUMMARY_ITEMS]; - char title_str[65] = {0}; - snprintf(title_str, 65, "%s %s", "Solana", _("Transaction")); + const char **tx_msg = format_tx_message("Solana"); if (transaction_summary_finalize(summary_step_kinds, &num_summary_steps) == 0) { + char desc[64]; for (size_t i = 0; i < num_summary_steps; i++) { if (transaction_summary_display_item(i, DisplayFlagAll)) { fsm_sendFailure(FailureType_Failure_DataError, "Parse error"); @@ -131,26 +131,33 @@ void solana_sign_tx(const SolanaSignTx *msg, const HDNode *node, } else if (strcmp(title, "Funded by") == 0) { continue; } else if (strcmp(title, "Owner") == 0) { - title = "From"; + continue; + } else if (strcmp(title, "Max fees") == 0) { + continue; } else if (strcmp(title, "Owned by") == 0) { - title = "To"; + continue; + } else if (strcmp(title, "Sender") == 0) { + title = "From"; + } else if (strcmp(title, "Recipient") == 0) { + title = "Send to"; } else if (strcmp(title, "Transfer tokens") == 0 || strcmp(title, "Transfer") == 0) { title = "Amount"; + } else if (strcmp(title, "Token Sender") == 0) { + title = "From (Token Account)"; + } else if (strcmp(title, "Token Recipient") == 0) { + title = "To (Token Account)"; } - char desc[64]; - memset(desc, 0, sizeof(desc)); - strcat(desc, _(title)); - strcat(desc, ":"); + snprintf(desc, sizeof(desc), "%s:", _(title)); steps_list[steps++] = i; - layoutDialogAdapterEx(title_str, &bmp_bottom_left_close, NULL, + layoutDialogAdapterEx(tx_msg[0], &bmp_bottom_left_close, NULL, i < num_summary_steps - 1 ? &bmp_bottom_right_arrow : &bmp_bottom_right_confirm, - NULL, NULL, desc, _(text), NULL, NULL); + NULL, NULL, desc, text, NULL, NULL); uint8_t key; button_scan: @@ -176,11 +183,21 @@ void solana_sign_tx(const SolanaSignTx *msg, const HDNode *node, } } } + oledClear_ex(); + layoutHeader(_("Sign Transaction")); + oledDrawStringAdapter(0, 13, tx_msg[1], FONT_STANDARD); + layoutButtonNoAdapter(NULL, &bmp_bottom_left_close); + layoutButtonYesAdapter(NULL, &bmp_bottom_right_confirm); + oledRefresh(); + if (!protectButton(ButtonRequestType_ButtonRequest_SignTx, false)) { + fsm_sendFailure(FailureType_Failure_ActionCancelled, NULL); + return; + } ed25519_sign(msg->raw_tx.bytes, msg->raw_tx.size, node->private_key, resp->signature.bytes); resp->signature.size = 64; } else { - fsm_sendFailure(FailureType_Failure_DataError, _("Parse error")); + fsm_sendFailure(FailureType_Failure_DataError, "Parse error"); return; } msg_write(MessageType_MessageType_SolanaSignedTx, resp); diff --git a/legacy/firmware/tron.c b/legacy/firmware/tron.c index 55b58cbab7..5bff85596c 100644 --- a/legacy/firmware/tron.c +++ b/legacy/firmware/tron.c @@ -408,11 +408,13 @@ int pack_contract(TronSignTx *msg, uint8_t *buf, int *index, MAX_ADDR_RAW_SIZE); cmessage_len += write_bytes_with_length(cmessage, &cmessage_index, addr_raw, len); - - cmessage_len += add_field(cmessage, &cmessage_index, 2, PROTO_TYPE_VARINT); - cmessage_len += - write_varint(cmessage, &cmessage_index, - msg->contract.delegate_resource_contract.resource); + if (msg->contract.delegate_resource_contract.has_resource) { + cmessage_len += + add_field(cmessage, &cmessage_index, 2, PROTO_TYPE_VARINT); + cmessage_len += + write_varint(cmessage, &cmessage_index, + msg->contract.delegate_resource_contract.resource); + } cmessage_len += add_field(cmessage, &cmessage_index, 3, PROTO_TYPE_VARINT); cmessage_len += write_varint(cmessage, &cmessage_index, @@ -434,6 +436,13 @@ int pack_contract(TronSignTx *msg, uint8_t *buf, int *index, write_varint(cmessage, &cmessage_index, msg->contract.delegate_resource_contract.lock); } + if (msg->contract.delegate_resource_contract.has_lock_period) { + cmessage_len += + add_field(cmessage, &cmessage_index, 6, PROTO_TYPE_VARINT); + cmessage_len += + write_varint(cmessage, &cmessage_index, + msg->contract.delegate_resource_contract.lock_period); + } } if (msg->contract.has_undelegate_resource_contract) { @@ -450,10 +459,13 @@ int pack_contract(TronSignTx *msg, uint8_t *buf, int *index, cmessage_len += write_bytes_with_length(cmessage, &cmessage_index, addr_raw, len); - cmessage_len += add_field(cmessage, &cmessage_index, 2, PROTO_TYPE_VARINT); - cmessage_len += - write_varint(cmessage, &cmessage_index, - msg->contract.undelegate_resource_contract.resource); + if (msg->contract.undelegate_resource_contract.has_resource) { + cmessage_len += + add_field(cmessage, &cmessage_index, 2, PROTO_TYPE_VARINT); + cmessage_len += + write_varint(cmessage, &cmessage_index, + msg->contract.undelegate_resource_contract.resource); + } cmessage_len += add_field(cmessage, &cmessage_index, 3, PROTO_TYPE_VARINT); cmessage_len += write_varint(cmessage, &cmessage_index, diff --git a/legacy/firmware/version.h b/legacy/firmware/version.h index d0a4486942..c3b552a2d8 100755 --- a/legacy/firmware/version.h +++ b/legacy/firmware/version.h @@ -6,5 +6,5 @@ #define FIX_VERSION_MINOR 99 #define FIX_VERSION_PATCH 99 -#define ONEKEY_VERSION "3.10.0" -#define ONEKEY_VERSION_HEX 0x3A00 +#define ONEKEY_VERSION "3.11.0" +#define ONEKEY_VERSION_HEX 0x3B00 diff --git a/legacy/gen/bitmaps.c b/legacy/gen/bitmaps.c index fb2d6a5e03..c595c9a81e 100755 --- a/legacy/gen/bitmaps.c +++ b/legacy/gen/bitmaps.c @@ -34,16 +34,16 @@ const uint8_t bmp_button_back_data[] = { 0x00, 0x08, 0x18, 0x30, 0x60, 0x30, 0x1 const uint8_t bmp_button_down_data[] = { 0x00, 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x10, 0x00, }; const uint8_t bmp_button_forward_data[] = { 0x00, 0x20, 0x30, 0x18, 0x0c, 0x18, 0x30, 0x20, }; const uint8_t bmp_button_up_data[] = { 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, }; -const uint8_t bmp_digit0_data[] = { 0xff, 0xff, 0xf8, 0x1f, 0xf0, 0x0f, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xf0, 0x0f, 0xf8, 0x1f, 0xff, 0xff, }; -const uint8_t bmp_digit1_data[] = { 0xff, 0xff, 0xfc, 0x3f, 0xf8, 0x3f, 0xf0, 0x3f, 0xf0, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xfc, 0x3f, 0xff, 0xff, }; -const uint8_t bmp_digit2_data[] = { 0xff, 0xff, 0xe0, 0x1f, 0xe0, 0x0f, 0xff, 0x87, 0xff, 0x87, 0xff, 0x87, 0xff, 0x87, 0xf8, 0x0f, 0xf0, 0x1f, 0xe1, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe1, 0xff, 0xe0, 0x07, 0xe0, 0x07, 0xff, 0xff, }; -const uint8_t bmp_digit3_data[] = { 0xff, 0xff, 0xe0, 0x1f, 0xe0, 0x0f, 0xff, 0x87, 0xff, 0x87, 0xff, 0x87, 0xff, 0x87, 0xf8, 0x0f, 0xf8, 0x0f, 0xff, 0x87, 0xff, 0x87, 0xff, 0x87, 0xff, 0x87, 0xe0, 0x0f, 0xe0, 0x1f, 0xff, 0xff, }; -const uint8_t bmp_digit4_data[] = { 0xff, 0xff, 0xff, 0x0f, 0xfe, 0x0f, 0xfc, 0x0f, 0xf8, 0x0f, 0xf1, 0x0f, 0xe3, 0x0f, 0xc7, 0x0f, 0xcf, 0x0f, 0xc0, 0x0f, 0xc0, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0xff, 0xff, }; -const uint8_t bmp_digit5_data[] = { 0xff, 0xff, 0xe0, 0x0f, 0xe0, 0x0f, 0xe1, 0xff, 0xe1, 0xff, 0xe0, 0x1f, 0xe0, 0x0f, 0xff, 0x87, 0xff, 0x87, 0xff, 0x87, 0xff, 0x87, 0xff, 0x87, 0xff, 0x87, 0xe0, 0x0f, 0xe0, 0x1f, 0xff, 0xff, }; -const uint8_t bmp_digit6_data[] = { 0xff, 0xff, 0xf8, 0x1f, 0xf0, 0x1f, 0xe1, 0xff, 0xe1, 0xff, 0xe0, 0x1f, 0xe0, 0x0f, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xf0, 0x0f, 0xf8, 0x1f, 0xff, 0xff, }; -const uint8_t bmp_digit7_data[] = { 0xff, 0xff, 0xe0, 0x07, 0xe0, 0x07, 0xff, 0x87, 0xff, 0x87, 0xff, 0x0f, 0xfe, 0x1f, 0xfc, 0x1f, 0xfc, 0x3f, 0xf8, 0x7f, 0xf8, 0x7f, 0xf8, 0x7f, 0xf8, 0x7f, 0xf8, 0x7f, 0xf8, 0x7f, 0xff, 0xff, }; -const uint8_t bmp_digit8_data[] = { 0xff, 0xff, 0xf8, 0x1f, 0xf0, 0x0f, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xf0, 0x0f, 0xf0, 0x0f, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xf0, 0x0f, 0xf8, 0x1f, 0xff, 0xff, }; -const uint8_t bmp_digit9_data[] = { 0xff, 0xff, 0xf8, 0x1f, 0xf0, 0x0f, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xe1, 0x87, 0xf0, 0x07, 0xf8, 0x07, 0xff, 0x87, 0xff, 0x87, 0xf8, 0x0f, 0xf8, 0x1f, 0xff, 0xff, }; +const uint8_t bmp_digit0_data[] = { 0xff, 0xff, 0xff, 0xff, 0xc3, 0xff, 0xff, 0x81, 0xff, 0xff, 0x18, 0xff, 0xff, 0x30, 0xff, 0xff, 0x24, 0xff, 0xff, 0x24, 0xff, 0xff, 0x0c, 0xff, 0xff, 0x18, 0xff, 0xff, 0x81, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xff, }; +const uint8_t bmp_digit1_data[] = { 0xff, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xc3, 0xff, 0xff, 0x83, 0xff, 0xff, 0x83, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xff, }; +const uint8_t bmp_digit2_data[] = { 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0x01, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xc1, 0xff, 0xff, 0x83, 0xff, 0xff, 0x1f, 0xff, 0xff, 0x1f, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, }; +const uint8_t bmp_digit3_data[] = { 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0x01, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xc1, 0xff, 0xff, 0xc1, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xf8, 0xff, 0xff, 0x01, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, }; +const uint8_t bmp_digit4_data[] = { 0xff, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xc8, 0xff, 0xff, 0x98, 0xff, 0xff, 0x38, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xff, 0xff, }; +const uint8_t bmp_digit5_data[] = { 0xff, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0x01, 0xff, 0xff, 0x1f, 0xff, 0xff, 0x03, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xf8, 0xff, 0xff, 0xf8, 0xff, 0xff, 0x01, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, }; +const uint8_t bmp_digit6_data[] = { 0xff, 0xff, 0xff, 0xff, 0xc1, 0xff, 0xff, 0x81, 0xff, 0xff, 0x1f, 0xff, 0xff, 0x03, 0xff, 0xff, 0x01, 0xff, 0xff, 0x18, 0xff, 0xff, 0x18, 0xff, 0xff, 0x18, 0xff, 0xff, 0x81, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xff, }; +const uint8_t bmp_digit7_data[] = { 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0xfc, 0xff, 0xff, 0xf9, 0xff, 0xff, 0xf3, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, }; +const uint8_t bmp_digit8_data[] = { 0xff, 0xff, 0xff, 0xff, 0xc3, 0xff, 0xff, 0x81, 0xff, 0xff, 0x18, 0xff, 0xff, 0x18, 0xff, 0xff, 0x81, 0xff, 0xff, 0x81, 0xff, 0xff, 0x18, 0xff, 0xff, 0x18, 0xff, 0xff, 0x81, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xff, }; +const uint8_t bmp_digit9_data[] = { 0xff, 0xff, 0xff, 0xff, 0xc3, 0xff, 0xff, 0x81, 0xff, 0xff, 0x18, 0xff, 0xff, 0x18, 0xff, 0xff, 0x18, 0xff, 0xff, 0x80, 0xff, 0xff, 0xc0, 0xff, 0xff, 0xf8, 0xff, 0xff, 0x81, 0xff, 0xff, 0x83, 0xff, 0xff, 0xff, 0xff, }; const uint8_t bmp_gears0_data[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x1e, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x3e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x01, 0xf8, 0x3e, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x1f, 0xe0, 0x00, 0x00, 0x1f, 0xf0, 0x1f, 0xe0, 0x00, 0x00, 0x1f, 0xf0, 0x1f, 0xe0, 0x00, 0x00, 0x1f, 0xf0, 0x1f, 0xc0, 0x00, 0x00, 0x01, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x3e, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0xc0, 0x18, 0x00, 0x00, 0x7f, 0xfd, 0xe0, 0x3c, 0x00, 0x00, 0x7f, 0xfd, 0xe0, 0x7c, 0x00, 0x00, 0xff, 0xfd, 0xff, 0xf8, 0x00, 0x00, 0xf8, 0x7e, 0xff, 0xf8, 0x00, 0x00, 0xf0, 0x1e, 0xff, 0xf0, 0x00, 0x00, 0x60, 0x0d, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x01, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x3e, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x3f, 0xc0, 0x00, 0x00, 0x3f, 0xe0, 0x3f, 0xc0, 0x00, 0x00, 0x3f, 0xe0, 0x3f, 0xc0, 0x00, 0x00, 0x07, 0xe0, 0x3e, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x01, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x3c, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; const uint8_t bmp_gears1_data[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x07, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xcf, 0x80, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x80, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x1f, 0xf8, 0x3e, 0x00, 0x00, 0x00, 0x1f, 0xf0, 0x1e, 0x00, 0x00, 0x00, 0x1f, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x1f, 0x80, 0x00, 0x00, 0x01, 0xf0, 0x1f, 0xe0, 0x00, 0x00, 0x01, 0xf0, 0x1f, 0xe0, 0x00, 0x00, 0x01, 0xf8, 0x3f, 0xe1, 0xc0, 0x00, 0x00, 0xff, 0xfc, 0xc1, 0xc0, 0x00, 0x00, 0xff, 0xfb, 0x03, 0xc0, 0x00, 0x01, 0xff, 0xf7, 0xc3, 0xc0, 0x00, 0x03, 0xff, 0xf7, 0xff, 0xc0, 0x00, 0x03, 0xc7, 0xf7, 0xff, 0xe0, 0x00, 0x01, 0x81, 0xf3, 0xff, 0xf0, 0x00, 0x00, 0x00, 0xf1, 0xff, 0xff, 0x80, 0x00, 0x00, 0xe1, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x01, 0xf0, 0x7f, 0xc0, 0x00, 0x00, 0x03, 0xe0, 0x3f, 0x80, 0x00, 0x00, 0x03, 0xe0, 0x3e, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x3e, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x3e, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0x3c, 0x00, 0x00, 0x00, 0x1f, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x01, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x06, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; const uint8_t bmp_gears2_data[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc1, 0x80, 0x00, 0x00, 0x07, 0x3f, 0xf7, 0xc0, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x0f, 0xff, 0xff, 0x80, 0x00, 0x00, 0x07, 0xff, 0xff, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x3e, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x1e, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x1e, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x1e, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x1e, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x1e, 0x00, 0x00, 0x00, 0x03, 0xf8, 0x3f, 0x0e, 0x00, 0x00, 0x07, 0xff, 0xff, 0x8f, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xcf, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xcf, 0x00, 0x00, 0x06, 0x1f, 0xe1, 0x9f, 0x83, 0x00, 0x00, 0x0f, 0xce, 0x7f, 0xef, 0x80, 0x00, 0x07, 0x9f, 0xff, 0xff, 0x80, 0x00, 0x07, 0x9f, 0xff, 0xff, 0x00, 0x00, 0x03, 0x8f, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x7c, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x3c, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x3c, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x3c, 0x00, 0x00, 0x00, 0x03, 0xe0, 0x3c, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x3c, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x7e, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0x80, 0x00, 0x00, 0x1f, 0xff, 0xff, 0x80, 0x00, 0x00, 0x0c, 0x3f, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; @@ -109,16 +109,16 @@ const BITMAP bmp_button_back = {8, 8, bmp_button_back_data}; const BITMAP bmp_button_down = {8, 8, bmp_button_down_data}; const BITMAP bmp_button_forward = {8, 8, bmp_button_forward_data}; const BITMAP bmp_button_up = {8, 8, bmp_button_up_data}; -const BITMAP bmp_digit0 = {16, 16, bmp_digit0_data}; -const BITMAP bmp_digit1 = {16, 16, bmp_digit1_data}; -const BITMAP bmp_digit2 = {16, 16, bmp_digit2_data}; -const BITMAP bmp_digit3 = {16, 16, bmp_digit3_data}; -const BITMAP bmp_digit4 = {16, 16, bmp_digit4_data}; -const BITMAP bmp_digit5 = {16, 16, bmp_digit5_data}; -const BITMAP bmp_digit6 = {16, 16, bmp_digit6_data}; -const BITMAP bmp_digit7 = {16, 16, bmp_digit7_data}; -const BITMAP bmp_digit8 = {16, 16, bmp_digit8_data}; -const BITMAP bmp_digit9 = {16, 16, bmp_digit9_data}; +const BITMAP bmp_digit0 = {24, 12, bmp_digit0_data}; +const BITMAP bmp_digit1 = {24, 12, bmp_digit1_data}; +const BITMAP bmp_digit2 = {24, 12, bmp_digit2_data}; +const BITMAP bmp_digit3 = {24, 12, bmp_digit3_data}; +const BITMAP bmp_digit4 = {24, 12, bmp_digit4_data}; +const BITMAP bmp_digit5 = {24, 12, bmp_digit5_data}; +const BITMAP bmp_digit6 = {24, 12, bmp_digit6_data}; +const BITMAP bmp_digit7 = {24, 12, bmp_digit7_data}; +const BITMAP bmp_digit8 = {24, 12, bmp_digit8_data}; +const BITMAP bmp_digit9 = {24, 12, bmp_digit9_data}; const BITMAP bmp_gears0 = {48, 48, bmp_gears0_data}; const BITMAP bmp_gears1 = {48, 48, bmp_gears1_data}; const BITMAP bmp_gears2 = {48, 48, bmp_gears2_data}; diff --git a/legacy/gen/bitmaps/digit0.png b/legacy/gen/bitmaps/digit0.png old mode 100755 new mode 100644 index b6f8b36ef3d01aca1188b8fc1d07395378e43133..7f2b7215a9e5a316cfe19d1a96362105f642aac2 GIT binary patch literal 204 zcmeAS@N?(olHy`uVBq!ia0vp^5lAM;21Ooc_2%#UH_dMiaD8Z+ zQ0`Ufd1ckD*VPfNW?oU(u3Yz@RrVwIyimu2hgMeVN*V`Sf>)>tJe*lRQK*26+u~g? vli<9a>=PY#GkQu*dBC#By;c3@-$1E5>6!woq*HBxmN9s``njxgN@xNA5yd}S literal 85 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx?BpA#)4xIr~GM+AuAsp9}fBc{Su-)b`dtF=m h+aCe}i~%?Q|7Vco60^u68At#C diff --git a/legacy/gen/bitmaps/digit1.png b/legacy/gen/bitmaps/digit1.png old mode 100755 new mode 100644 index 5592c345d559b7f955cabaa6b7d83fd636bc74eb..a70142fb57cf5a880941e34c7f8d03e53713403d GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^5i^d|TU* zMsvdnVjc%0T$Exn*$T4C)`_WX-@%mnpzAW5egNC=dwF92ZYK) literal 83 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx?BpA#)4xIr~Ql2i3Asp9}fBc{Su;2DDe{~yw f!WVY^U;pJ9{$+_uE2=MX1*!IQ^>bP0l+XkKG`JT` diff --git a/legacy/gen/bitmaps/digit2.png b/legacy/gen/bitmaps/digit2.png old mode 100755 new mode 100644 index b843a464de14334d0baf40ef0c849d81ebd6f218..9615c265fffbc788e17bb03e43d465ab1ed49f06 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^5^taZ7?u|MZ(o7tGkCiCxvX6C+93<@01v0wi0kBMzk$Ugkx zignx6+b&xgRf8fK8NSE7T^%vu^6}`{Ba6Nkmf5axXiYQts1tZ(x%Ll*=Gzv_(iT{G ei|)yr#P?iJk^lL^SBXHg89ZJ6T-G@yGywpS2|Qr{ literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx?BpA#)4xIr~N}eu`Asp9}fBc{Su+io)b6wm2 nw;W%Z2yZ z@8rv?OcLDH9@|+M-dX>O-`q6Ekt^V7(1D4owHGsOD$-h@bpJy5l$rnC_9;!>&}c5T g^z45&xl@PKe{B#`+UD_W2hel|Pgg&ebxsLQ0Dnz9LjV8( literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx?BpA#)4xIr~+MX_sAsp9}fBc{S(BA&AeO;UV xA0GQ3l6IerZJwoDoI77IZ~j9DiNEe{{~6a?2riqKn8pp#?&<31vd$@?2>@wgAYK3f diff --git a/legacy/gen/bitmaps/digit5.png b/legacy/gen/bitmaps/digit5.png old mode 100755 new mode 100644 index c01bc59d3475d73349cae8132a785cb98263cee4..161a1f1f83f46d0553e1b311de0c8e3a451fa362 GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^59 zV;Yjdn(WwF@{+0H^~`6vy^{p3A5<*M6ngOZQrE$xPcPkfu(swS gGwCGu{j*b;T2hpGS$`Z_12mq&)78&qol`;+0D^Ek8~^|S literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx?BpA#)4xIr~ik>cxAsp9}fBc{SkkOvQ_7A@k n{}abI|KGmgSmHMC;s1IDWp=UI<@*DoK$<*V{an^LB{Ts54$&K` diff --git a/legacy/gen/bitmaps/digit6.png b/legacy/gen/bitmaps/digit6.png old mode 100755 new mode 100644 index c65b56b5c92391ae24748553cc166ac017723dd1..605a72b5651806d261134b686d5e08382e1d7917 GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^5y+DE3<@01(O>@Wzw=c0#0Q04 z?h|wQLW>uRCS7pz^zW^B&3iy;d4c+llggQoIu<2qDEaI7KG?BuuJFVUEFw>tl-j>_ lE4}5@QQGBN;k#Hql~IIMS@37$Ns!|hJYD@<);T3K0RaC9JFWl# literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx?BpA#)4xIr~YMw5RAsp9}fBc{Su-)b`du3bu sf5#V%Hiwz(+S=c~c)@J%ar6Iw2Bo`V;pde696&lfUHx3vIVCg!0PhGNkN^Mx diff --git a/legacy/gen/bitmaps/digit7.png b/legacy/gen/bitmaps/digit7.png old mode 100755 new mode 100644 index f0111cd9b0c18b8be0f8fcec4d4a9843d0fc55c3..c28eab022411cc385d6e783b7730e878bb66c1e9 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^5J&ph1_ci0l^_4dhlvY`>#8O` z2=nz8Jzy1~I60Q#gKhd(UhOuuiqI32ELXDV$^Epu=^!|rchUJtMmvs9J*W46(Lc5l dzBzB)Zu&QgNxhWp{s%Oh!PC{xWt~$(69DFTHwXX# literal 92 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx?BpA#)4xIr~%APKcAsp9}fBc{SkkOjsZ$7(n oU0eMpp8AFp^B%g}TK)Pj&%mH2rgX{vNFYd?r>mdKI;Vst04hxzHvj+t diff --git a/legacy/gen/bitmaps/digit8.png b/legacy/gen/bitmaps/digit8.png old mode 100755 new mode 100644 index 1d2ac9a3052ed01ae67c56c99e3e1f59ce02d2b6..c1307c6c112dba25c0ae336d9bb05fbe7def742d GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^5?pzjJ=A(#yji zuH|)|>0P)=R#Tvr&nqfxmG;g2N!PC{xWt~$(69A{UJ*xl! literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx?BpA#)4xIr~a-J@ZAsp9}fBc{Su-)b`dtF=m jTMm{dNnH$6|NiG^V0|c>zSq5{7o@|})z4*}Q$iB}xgHuf diff --git a/legacy/gen/bitmaps/digit9.png b/legacy/gen/bitmaps/digit9.png old mode 100755 new mode 100644 index a7f21238e2239e965f46ecc93fc4d9020bdb9717..ef71da18bc0f1b52552d278d9163e4489d757845 GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^5$6|IN;#qT{a+AE)y2TIQ-y_|ENJ@AVkR`pR&9ey-~;2{Y0^p` k#DvmcPRh(V;kdM!)%S