diff --git a/.github/workflows/check_version.yml b/.github/workflows/check_version.yml index ebc7297e..160eeb36 100644 --- a/.github/workflows/check_version.yml +++ b/.github/workflows/check_version.yml @@ -25,11 +25,13 @@ jobs: container: image: zondax/ledger-app-builder:latest options: --user ${{ needs.configure.outputs.uid_gid }} + env: + SDK_VARNAME: NANOSP_SDK outputs: version: ${{ steps.store-version.outputs.version }} steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: true - run: make version diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index c9fd3208..78c4c870 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -20,7 +20,7 @@ jobs: steps: - name: Clone - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: recursive diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d82e527e..24ec75ab 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -16,11 +16,11 @@ jobs: - id: get-user run: echo "uid_gid=$(id -u):$(id -g)" >> $GITHUB_OUTPUT - cpp_test: + build: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: true - name: Install deps @@ -29,7 +29,7 @@ jobs: make deps - run: make cpp_test - build_ledger_nano_S: + build_ledger: needs: configure runs-on: ubuntu-latest container: @@ -41,7 +41,7 @@ jobs: size: ${{steps.build.outputs.size}} steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: true - name: Build Standard app @@ -52,93 +52,44 @@ jobs: echo "size=$(python3 deps/ledger-zxlib/scripts/getSize.py s)" >> $GITHUB_OUTPUT size_nano_s: - needs: build_ledger_nano_S + needs: build_ledger runs-on: ubuntu-latest env: NANOS_LIMIT_SIZE: 136 steps: - run: | - echo "LNS app size: ${{needs.build_ledger_nano_S.outputs.size}} KiB" - [ ${{needs.build_ledger_nano_S.outputs.size}} -le $NANOS_LIMIT_SIZE ] - - build_ledger_nano_X: - needs: configure - runs-on: ubuntu-latest - container: - image: zondax/ledger-app-builder:latest - options: --user ${{ needs.configure.outputs.uid_gid }} - env: - BOLOS_SDK: /opt/nanox-secure-sdk - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - submodules: true - - name: Build Standard app - shell: bash -l {0} - run: make - - build_ledger_nano_SP: - needs: configure - runs-on: ubuntu-latest - container: - image: zondax/ledger-app-builder:latest - options: --user ${{ needs.configure.outputs.uid_gid }} - env: - BOLOS_SDK: /opt/nanosplus-secure-sdk - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - submodules: true - - name: Build Standard app - shell: bash -l {0} - run: make - - build_ledger_stax: - needs: configure - runs-on: ubuntu-latest - container: - image: zondax/ledger-app-builder:latest - options: --user ${{ needs.configure.outputs.uid_gid }} - env: - BOLOS_SDK: /opt/stax-secure-sdk - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - submodules: true - - name: Build Standard app - shell: bash -l {0} - run: make + echo "LNS app size: ${{needs.build_ledger.outputs.size}} KiB" + [ ${{needs.build_ledger.outputs.size}} -le $NANOS_LIMIT_SIZE ] test_zemu: runs-on: ubuntu-latest - timeout-minutes: 30 steps: + - name: Test + run: | + id + echo $HOME + echo $DISPLAY - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: true - run: sudo apt-get update -y && sudo apt-get install -y libusb-1.0.0 libudev-dev - name: Install node uses: actions/setup-node@v3 - name: Install yarn - run: npm install -g yarn + run: | + npm install -g yarn - name: Build Ledger app and run tests run: make test_all + - name: Upload Snapshots (only failure) + if: ${{ failure() }} + uses: actions/upload-artifact@v3 + with: + name: snapshots-tmp + path: tests_zemu/snapshots-tmp/ build_package_nanos: - needs: - [ - configure, - cpp_test, - build_ledger_nano_S, - build_ledger_nano_X, - build_ledger_nano_SP, - build_ledger_stax, - test_zemu, - ] + needs: [configure, build, build_ledger, test_zemu] if: ${{ github.ref == 'refs/heads/main' }} runs-on: ubuntu-latest container: @@ -148,7 +99,7 @@ jobs: BOLOS_SDK: /opt/nanos-secure-sdk steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: true - name: Install deps @@ -157,7 +108,7 @@ jobs: - name: Build NanoS shell: bash -l {0} run: | - make + PRODUCTION_BUILD=0 make mv ./app/pkg/installer_s.sh ./app/pkg/installer_nanos.sh - name: Set tag id: nanos @@ -173,17 +124,8 @@ jobs: draft: false prerelease: false - build_package_nanos_plus: - needs: - [ - configure, - cpp_test, - build_ledger_nano_S, - build_ledger_nano_X, - build_ledger_nano_SP, - build_ledger_stax, - test_zemu, - ] + build_package_nanosp: + needs: [configure, build, build_ledger, test_zemu] if: ${{ github.ref == 'refs/heads/main' }} runs-on: ubuntu-latest container: @@ -193,7 +135,7 @@ jobs: BOLOS_SDK: /opt/nanosplus-secure-sdk steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: true - name: Install deps @@ -202,7 +144,7 @@ jobs: - name: Build NanoSP shell: bash -l {0} run: | - make + PRODUCTION_BUILD=0 make mv ./app/pkg/installer_s2.sh ./app/pkg/installer_nanos_plus.sh - name: Set tag id: nanosp @@ -219,16 +161,7 @@ jobs: prerelease: false build_package_stax: - needs: - [ - configure, - cpp_test, - build_ledger_nano_S, - build_ledger_nano_X, - build_ledger_nano_SP, - build_ledger_stax, - test_zemu, - ] + needs: [configure, build, build_ledger, test_zemu] if: ${{ github.ref == 'refs/heads/main' }} runs-on: ubuntu-latest container: @@ -238,7 +171,7 @@ jobs: BOLOS_SDK: /opt/stax-secure-sdk steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: submodules: true - name: Install deps @@ -246,7 +179,8 @@ jobs: - name: Build Stax shell: bash -l {0} - run: make + run: | + PRODUCTION_BUILD=0 make - name: Set tag id: stax run: echo "tag_name=$(./app/pkg/installer_stax.sh version)" >> $GITHUB_OUTPUT @@ -256,7 +190,44 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token with: - files: ./app/pkg/installer_stax.sh + files: | + ./app/pkg/installer_stax.sh tag_name: ${{ steps.stax.outputs.tag_name }} draft: false prerelease: false + + build_package_flex: + needs: [configure, build, build_ledger, test_zemu] + if: ${{ github.ref == 'refs/heads/main' }} + runs-on: ubuntu-latest + container: + image: zondax/ledger-app-builder:latest + options: --user ${{ needs.configure.outputs.uid_gid }} + env: + BOLOS_SDK: /opt/flex-secure-sdk + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + - name: Install deps + run: pip install ledgerblue + + - name: Build Flex + shell: bash -l {0} + run: | + PRODUCTION_BUILD=0 make + - name: Set tag + id: flex + run: echo "tag_name=$(./app/pkg/installer_flex.sh version)" >> $GITHUB_OUTPUT + - name: Update Release + id: update_release_2 + uses: softprops/action-gh-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token + with: + files: | + ./app/pkg/installer_flex.sh + tag_name: ${{ steps.flex.outputs.tag_name }} + draft: false + prerelease: false diff --git a/.gitmodules b/.gitmodules index a1e0b50b..1af6f67c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "deps/nanos-secure-sdk"] path = deps/nanos-secure-sdk - url = https://github.com/LedgerHQ/nanos-secure-sdk.git + url = https://github.com/LedgerHQ/ledger-secure-sdk.git [submodule "deps/picohash"] path = deps/picohash url = https://github.com/kazuho/picohash diff --git a/CMakeLists.txt b/CMakeLists.txt index 5dc02b49..16665a02 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,12 +14,22 @@ #* limitations under the License. #******************************************************************************** cmake_minimum_required(VERSION 3.0) +include("cmake/HunterGate.cmake") +HunterGate( + URL "https://github.com/cpp-pm/hunter/archive/v0.25.5.tar.gz" + SHA1 "a20151e4c0740ee7d0f9994476856d813cdead29" + LOCAL +) + project(ledger-internet-computer VERSION 0.0.0) enable_testing() cmake_policy(SET CMP0025 NEW) set(CMAKE_CXX_STANDARD 11) +set(HUNTER_STATUS_DEBUG ON) +set(HUNTER_TLS_VERIFY OFF) + option(ENABLE_FUZZING "Build with fuzzing instrumentation and build fuzz targets" OFF) option(ENABLE_COVERAGE "Build with source code coverage instrumentation" OFF) option(ENABLE_SANITIZERS "Build with ASAN and UBSAN" OFF) @@ -30,6 +40,13 @@ string(APPEND CMAKE_LINKER_FLAGS " -fno-omit-frame-pointer -g") add_definitions(-DAPP_STANDARD) +hunter_add_package(fmt) +find_package(fmt CONFIG REQUIRED) +hunter_add_package(jsoncpp) +find_package(jsoncpp CONFIG REQUIRED) +hunter_add_package(GTest) +find_package(GTest CONFIG REQUIRED) + if (ENABLE_FUZZING) add_definitions(-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION=1) SET(ENABLE_SANITIZERS ON CACHE BOOL "Sanitizer automatically enabled" FORCE) @@ -71,9 +88,6 @@ if (ENABLE_SANITIZERS) string(APPEND CMAKE_LINKER_FLAGS " -fsanitize=address,undefined -fsanitize-recover=address,undefined") endif () -include(cmake/conan/CMakeLists.txt) -add_subdirectory(cmake/gtest) - string(APPEND CMAKE_CXX_FLAGS " -fsanitize=address -fno-omit-frame-pointer") string(APPEND CMAKE_LINKER_FLAGS " -fsanitize=address -fno-omit-frame-pointer") @@ -128,10 +142,6 @@ file(GLOB_RECURSE TESTS_SRC add_executable(unittests ${TESTS_SRC}) target_include_directories(unittests PRIVATE - ${gtest_SOURCE_DIR}/include - ${gmock_SOURCE_DIR}/include - ${CONAN_INCLUDE_DIRS_FMT} - ${CONAN_INCLUDE_DIRS_JSONCPP} ${CMAKE_CURRENT_SOURCE_DIR}/app/src ${CMAKE_CURRENT_SOURCE_DIR}/app/src/lib ${CMAKE_CURRENT_SOURCE_DIR}/deps/tinycbor/src @@ -140,13 +150,13 @@ target_include_directories(unittests PRIVATE target_link_libraries(unittests PRIVATE - gtest_main + GTest::gtest_main app_lib - CONAN_PKG::fmt - CONAN_PKG::jsoncpp) + fmt::fmt + JsonCpp::JsonCpp) add_compile_definitions(TESTVECTORS_DIR="${CMAKE_CURRENT_SOURCE_DIR}/tests/") -add_test(unittests ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/unittests) +add_test(NAME unittests COMMAND unittests) set_tests_properties(unittests PROPERTIES WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/tests) ############################################################## diff --git a/Makefile b/Makefile index 3470d075..61e4fc1e 100644 --- a/Makefile +++ b/Makefile @@ -24,6 +24,7 @@ TESTS_JS_DIR = $(CURDIR)/js ifeq ($(BOLOS_SDK),) ZXLIB_COMPILE_STAX ?= 1 +PRODUCTION_BUILD ?= 1 include $(CURDIR)/deps/ledger-zxlib/dockerized_build.mk else @@ -36,5 +37,5 @@ endif test_all: make zemu_install - make + PRODUCTION_BUILD=1 make make zemu_test diff --git a/app/Makefile b/app/Makefile index eacf62e5..b7dc2d20 100755 --- a/app/Makefile +++ b/app/Makefile @@ -25,9 +25,21 @@ MY_DIR := $(dir $(lastword $(MAKEFILE_LIST))) include $(CURDIR)/../deps/ledger-zxlib/makefiles/Makefile.installer_script include $(BOLOS_SDK)/Makefile.defines +# Set the default value for PRODUCTION_BUILD to 0 if not already defined +PRODUCTION_BUILD ?= 0 $(info ************ TARGET_NAME = [$(TARGET_NAME)]) +# Display whether this is a production build or for internal use +ifeq ($(PRODUCTION_BUILD), 1) + $(info ************ PRODUCTION_BUILD = [PRODUCTION BUILD]) +else + $(info ************ PRODUCTION_BUILD = [INTERNAL USE]) +endif + +# Add the PRODUCTION_BUILD definition to the compiler flags +DEFINES += PRODUCTION_BUILD=$(PRODUCTION_BUILD) + include $(CURDIR)/../deps/ledger-zxlib/makefiles/Makefile.app_testing ifndef COIN diff --git a/app/Makefile.version b/app/Makefile.version index 790ee0f1..89b41f29 100644 --- a/app/Makefile.version +++ b/app/Makefile.version @@ -3,4 +3,4 @@ APPVERSION_M=3 # This is the minor version of this release APPVERSION_N=0 # This is the patch version of this release -APPVERSION_P=0 +APPVERSION_P=1 diff --git a/app/flex_icon.gif b/app/flex_icon.gif new file mode 100644 index 00000000..0eb8ede5 Binary files /dev/null and b/app/flex_icon.gif differ diff --git a/app/src/candid/candid_parser.c b/app/src/candid/candid_parser.c index b0f4a5f8..c636564a 100644 --- a/app/src/candid/candid_parser.c +++ b/app/src/candid/candid_parser.c @@ -71,7 +71,7 @@ parser_error_t readCandidListNeurons(parser_tx_t *tx, const uint8_t *input, uint CHECK_PARSER_ERR(getCandidTypeFromTable(&txn, tx->candid_rootType)) CHECK_PARSER_ERR(readCandidRecordLength(&txn)) - if (txn.txn_length != 2) { + if (txn.txn_length != 3) { return parser_unexpected_value; } txn.element.variant_index = 0; @@ -86,6 +86,18 @@ parser_error_t readCandidListNeurons(parser_tx_t *tx, const uint8_t *input, uint txn.element.variant_index = 1; CHECK_PARSER_ERR(readCandidInnerElement(&txn, &txn.element)) + CHECK_PARSER_ERR(getCandidTypeFromTable(&txn, txn.element.implementation)) + CHECK_PARSER_ERR(readCandidOptional(&txn)) + if (txn.element.implementation != Bool) { + return parser_unexpected_type; + } + + // reset txn + CHECK_PARSER_ERR(getCandidTypeFromTable(&txn, tx->candid_rootType)) + CHECK_PARSER_ERR(readCandidRecordLength(&txn)) + + txn.element.variant_index = 2; + CHECK_PARSER_ERR(readCandidInnerElement(&txn, &txn.element)) if (txn.element.field_hash != hash_include_neurons_readable_by_caller || txn.element.implementation != Bool) { return parser_unexpected_type; @@ -101,6 +113,11 @@ parser_error_t readCandidListNeurons(parser_tx_t *tx, const uint8_t *input, uint CHECK_PARSER_ERR(readCandidNat64(&ctx, &tmp_neuron_id)) } + CHECK_PARSER_ERR(readCandidByte(&ctx, &val->has_include_empty_neurons_readable_by_caller)) + if(val->has_include_empty_neurons_readable_by_caller) { + CHECK_PARSER_ERR(readCandidByte(&ctx, &val->include_empty_neurons_readable_by_caller)) + } + CHECK_PARSER_ERR(readCandidByte(&ctx, &val->include_neurons_readable_by_caller)) return parser_ok; } diff --git a/app/src/candid/candid_types.h b/app/src/candid/candid_types.h index a76609e5..0ba997f0 100644 --- a/app/src/candid/candid_types.h +++ b/app/src/candid/candid_types.h @@ -409,6 +409,8 @@ typedef struct { uint8_t neuron_ids_size; const uint8_t *neuron_ids_ptr; + uint8_t has_include_empty_neurons_readable_by_caller; + uint8_t include_empty_neurons_readable_by_caller; uint8_t include_neurons_readable_by_caller; } candid_ListNeurons_t; diff --git a/app/src/coin.h b/app/src/coin.h index 78c94bec..00dcb7a8 100644 --- a/app/src/coin.h +++ b/app/src/coin.h @@ -61,7 +61,7 @@ typedef enum { #define VIEW_ADDRESS_OFFSET_TEXT (SECP256K1_PK_LEN + DFINITY_PRINCIPAL_LEN) #define COIN_SUPPORTED_TX_VERSION 0 -#if defined(TARGET_STAX) +#if defined(TARGET_STAX) || defined(TARGET_FLEX) #define MENU_MAIN_APP_LINE1 "Internet Computer" #define MENU_MAIN_APP_LINE2 "ICP" #define CUSTOM_ADDRESS_TEXT "Verify Internet\nComputer address" diff --git a/app/src/common/tx.c b/app/src/common/tx.c index 0687333e..bd9b4789 100644 --- a/app/src/common/tx.c +++ b/app/src/common/tx.c @@ -21,7 +21,7 @@ #include #include "zxmacros.h" -#if defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) +#if defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) || defined(TARGET_FLEX) #define RAM_BUFFER_SIZE 8192 #define FLASH_BUFFER_SIZE 16384 #elif defined(TARGET_NANOS) @@ -37,7 +37,7 @@ typedef struct { uint8_t buffer[FLASH_BUFFER_SIZE]; } storage_t; -#if defined(TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) +#if defined(TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) || defined(TARGET_FLEX) storage_t NV_CONST N_appdata_impl __attribute__ ((aligned(64))); #define N_appdata (*(NV_VOLATILE storage_t *)PIC(&N_appdata_impl)) #endif diff --git a/app/src/crypto.c b/app/src/crypto.c index c039715a..9cc7c6a7 100644 --- a/app/src/crypto.c +++ b/app/src/crypto.c @@ -39,7 +39,7 @@ uint8_t const DER_PREFIX[] = {0x30, 0x56, 0x30, 0x10, 0x06, 0x07, 0x2a, 0x86, 0x #define SIGNATURE_SIZE_S 32 #define SIGNATURE_SIZE_RS 64 -#if defined(TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) +#if defined(TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) || defined(TARGET_FLEX) #include "cx.h" zxerr_t hash_sha224(uint8_t *input, uint16_t inputLen, uint8_t *output, uint16_t outputLen){ diff --git a/app/src/parser.c b/app/src/parser.c index dff40e5d..4efe5b23 100644 --- a/app/src/parser.c +++ b/app/src/parser.c @@ -29,7 +29,7 @@ #include "parser_print_candid.h" #include "parser_print_helper.h" -#if defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) +#if defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) || defined(TARGET_FLEX) // For some reason NanoX requires this function void __assert_fail(__Z_UNUSED const char * assertion, __Z_UNUSED const char * file, __Z_UNUSED unsigned int line, __Z_UNUSED const char * function){ while(1) {}; @@ -102,7 +102,7 @@ parser_error_t parser_parse_combined(parser_context_t *ctx, const uint8_t *data, MEMZERO(request_hash, sizeof(request_hash)); PARSER_ASSERT_OR_ERROR(zxerr_ok == crypto_getDigest(request_hash, call), parser_unexpected_error) -#if defined(TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) +#if defined(TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) || defined(TARGET_FLEX) MEMZERO(G_io_apdu_buffer, IO_APDU_BUFFER_SIZE); PARSER_ASSERT_OR_ERROR(memcmp(request_hash, request_id_stateread, 32) == 0, parser_context_invalid_chars) MEMCPY(G_io_apdu_buffer, request_hash, 32); diff --git a/app/src/parser_impl.c b/app/src/parser_impl.c index d6f023f4..dd4dd3b9 100644 --- a/app/src/parser_impl.c +++ b/app/src/parser_impl.c @@ -559,7 +559,7 @@ parser_error_t _validateTx(__Z_UNUSED const parser_context_t *c, const parser_tx } -#if defined(TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) +#if defined(TARGET_NANOS) || defined(TARGET_NANOX) || defined(TARGET_NANOS2) || defined(TARGET_STAX) || defined(TARGET_FLEX) if (v->txtype != call || v->tx_fields.call.method_type != candid_icrc_transfer) { uint8_t publicKey[SECP256K1_PK_LEN]; uint8_t principalBytes[DFINITY_PRINCIPAL_LEN]; diff --git a/app/src/parser_print_helper.c b/app/src/parser_print_helper.c index 3021a436..7d91b077 100644 --- a/app/src/parser_print_helper.c +++ b/app/src/parser_print_helper.c @@ -24,7 +24,7 @@ #define ICP_DAY_IN_SECONDS (uint64_t)(ICP_HOUR_IN_SECONDS * 24) #define ICP_YEAR_IN_SECONDS (uint64_t)(ICP_DAY_IN_SECONDS * 365.25) -#if defined(TARGET_STAX) +#if defined(TARGET_STAX) || defined(TARGET_FLEX) #include "view_internal.h" const uint8_t LINES_PER_PAGE = MAX_LINES_PER_PAGE_REVIEW; static const char SEPARATOR = 0x0a; // newline @@ -208,7 +208,7 @@ parser_error_t page_principal_with_subaccount(const uint8_t *sender, uint16_t se MEMCPY(text_ptr, crc_text, crcLen); *(text_ptr + crcLen) = SEPARATOR; text_ptr += crcLen + 1; -#if !defined(TARGET_STAX) // needed if crc32 length is < 7 +#if !defined(TARGET_STAX) && !defined(TARGET_FLEX) // needed if crc32 length is < 7 for (uint8_t i = crcLen; i < 7; i++) { *text_ptr = ' '; text_ptr++; diff --git a/app/src/parser_print_strings.h b/app/src/parser_print_strings.h index efc778e4..d50e182f 100644 --- a/app/src/parser_print_strings.h +++ b/app/src/parser_print_strings.h @@ -19,7 +19,7 @@ extern "C" { #endif -#if defined(TARGET_STAX) +#if defined(TARGET_STAX) || defined(TARGET_FLEX) #define INCREASE_DISSOLVE_DELAY "Increase Dissolve\nDelay" #else #define INCREASE_DISSOLVE_DELAY "Increase Dissolve Delay" diff --git a/cmake/Hunter/config.cmake b/cmake/Hunter/config.cmake new file mode 100644 index 00000000..0703ceb0 --- /dev/null +++ b/cmake/Hunter/config.cmake @@ -0,0 +1 @@ +hunter_config(GTest VERSION 1.14.0) diff --git a/cmake/HunterGate.cmake b/cmake/HunterGate.cmake new file mode 100644 index 00000000..17c6d380 --- /dev/null +++ b/cmake/HunterGate.cmake @@ -0,0 +1,543 @@ +# Copyright (c) 2013-2019, Ruslan Baratov +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# This is a gate file to Hunter package manager. +# Include this file using `include` command and add package you need, example: +# +# cmake_minimum_required(VERSION 3.5) +# +# include("cmake/HunterGate.cmake") +# HunterGate( +# URL "https://github.com/path/to/hunter/archive.tar.gz" +# SHA1 "798501e983f14b28b10cda16afa4de69eee1da1d" +# ) +# +# project(MyProject) +# +# hunter_add_package(Foo) +# hunter_add_package(Boo COMPONENTS Bar Baz) +# +# Projects: +# * https://github.com/cpp-pm/gate/ +# * https://github.com/cpp-pm/hunter + +option(HUNTER_ENABLED "Enable Hunter package manager support" ON) + +if(HUNTER_ENABLED) + if(CMAKE_VERSION VERSION_LESS "3.5") + message( + FATAL_ERROR + "At least CMake version 3.5 required for Hunter dependency management." + " Update CMake or set HUNTER_ENABLED to OFF." + ) + endif() +endif() + +include(CMakeParseArguments) # cmake_parse_arguments + +option(HUNTER_STATUS_PRINT "Print working status" ON) +option(HUNTER_STATUS_DEBUG "Print a lot info" OFF) +option(HUNTER_TLS_VERIFY "Enable/disable TLS certificate checking on downloads" ON) +set(HUNTER_ROOT "" CACHE FILEPATH "Override the HUNTER_ROOT.") + +set(HUNTER_ERROR_PAGE "https://hunter.readthedocs.io/en/latest/reference/errors") + +function(hunter_gate_status_print) + if(HUNTER_STATUS_PRINT OR HUNTER_STATUS_DEBUG) + foreach(print_message ${ARGV}) + message(STATUS "[hunter] ${print_message}") + endforeach() + endif() +endfunction() + +function(hunter_gate_status_debug) + if(HUNTER_STATUS_DEBUG) + foreach(print_message ${ARGV}) + string(TIMESTAMP timestamp) + message(STATUS "[hunter *** DEBUG *** ${timestamp}] ${print_message}") + endforeach() + endif() +endfunction() + +function(hunter_gate_error_page error_page) + message("------------------------------ ERROR ------------------------------") + message(" ${HUNTER_ERROR_PAGE}/${error_page}.html") + message("-------------------------------------------------------------------") + message("") + message(FATAL_ERROR "") +endfunction() + +function(hunter_gate_internal_error) + message("") + foreach(print_message ${ARGV}) + message("[hunter ** INTERNAL **] ${print_message}") + endforeach() + message("[hunter ** INTERNAL **] [Directory:${CMAKE_CURRENT_LIST_DIR}]") + message("") + hunter_gate_error_page("error.internal") +endfunction() + +function(hunter_gate_fatal_error) + cmake_parse_arguments(hunter "" "ERROR_PAGE" "" "${ARGV}") + if("${hunter_ERROR_PAGE}" STREQUAL "") + hunter_gate_internal_error("Expected ERROR_PAGE") + endif() + message("") + foreach(x ${hunter_UNPARSED_ARGUMENTS}) + message("[hunter ** FATAL ERROR **] ${x}") + endforeach() + message("[hunter ** FATAL ERROR **] [Directory:${CMAKE_CURRENT_LIST_DIR}]") + message("") + hunter_gate_error_page("${hunter_ERROR_PAGE}") +endfunction() + +function(hunter_gate_user_error) + hunter_gate_fatal_error(${ARGV} ERROR_PAGE "error.incorrect.input.data") +endfunction() + +function(hunter_gate_self root version sha1 result) + string(COMPARE EQUAL "${root}" "" is_bad) + if(is_bad) + hunter_gate_internal_error("root is empty") + endif() + + string(COMPARE EQUAL "${version}" "" is_bad) + if(is_bad) + hunter_gate_internal_error("version is empty") + endif() + + string(COMPARE EQUAL "${sha1}" "" is_bad) + if(is_bad) + hunter_gate_internal_error("sha1 is empty") + endif() + + string(SUBSTRING "${sha1}" 0 7 archive_id) + + if(EXISTS "${root}/cmake/Hunter") + set(hunter_self "${root}") + else() + set( + hunter_self + "${root}/_Base/Download/Hunter/${version}/${archive_id}/Unpacked" + ) + endif() + + set("${result}" "${hunter_self}" PARENT_SCOPE) +endfunction() + +# Set HUNTER_GATE_ROOT cmake variable to suitable value. +function(hunter_gate_detect_root) + # Check CMake variable + if(HUNTER_ROOT) + set(HUNTER_GATE_ROOT "${HUNTER_ROOT}" PARENT_SCOPE) + hunter_gate_status_debug("HUNTER_ROOT detected by cmake variable") + return() + endif() + + # Check environment variable + if(DEFINED ENV{HUNTER_ROOT}) + set(HUNTER_GATE_ROOT "$ENV{HUNTER_ROOT}" PARENT_SCOPE) + hunter_gate_status_debug("HUNTER_ROOT detected by environment variable") + return() + endif() + + # Check HOME environment variable + if(DEFINED ENV{HOME}) + set(HUNTER_GATE_ROOT "$ENV{HOME}/.hunter" PARENT_SCOPE) + hunter_gate_status_debug("HUNTER_ROOT set using HOME environment variable") + return() + endif() + + # Check SYSTEMDRIVE and USERPROFILE environment variable (windows only) + if(WIN32) + if(DEFINED ENV{SYSTEMDRIVE}) + set(HUNTER_GATE_ROOT "$ENV{SYSTEMDRIVE}/.hunter" PARENT_SCOPE) + hunter_gate_status_debug( + "HUNTER_ROOT set using SYSTEMDRIVE environment variable" + ) + return() + endif() + + if(DEFINED ENV{USERPROFILE}) + set(HUNTER_GATE_ROOT "$ENV{USERPROFILE}/.hunter" PARENT_SCOPE) + hunter_gate_status_debug( + "HUNTER_ROOT set using USERPROFILE environment variable" + ) + return() + endif() + endif() + + hunter_gate_fatal_error( + "Can't detect HUNTER_ROOT" + ERROR_PAGE "error.detect.hunter.root" + ) +endfunction() + +function(hunter_gate_download dir) + string( + COMPARE + NOTEQUAL + "$ENV{HUNTER_DISABLE_AUTOINSTALL}" + "" + disable_autoinstall + ) + if(disable_autoinstall AND NOT HUNTER_RUN_INSTALL) + hunter_gate_fatal_error( + "Hunter not found in '${dir}'" + "Set HUNTER_RUN_INSTALL=ON to auto-install it from '${HUNTER_GATE_URL}'" + "Settings:" + " HUNTER_ROOT: ${HUNTER_GATE_ROOT}" + " HUNTER_SHA1: ${HUNTER_GATE_SHA1}" + ERROR_PAGE "error.run.install" + ) + endif() + string(COMPARE EQUAL "${dir}" "" is_bad) + if(is_bad) + hunter_gate_internal_error("Empty 'dir' argument") + endif() + + string(COMPARE EQUAL "${HUNTER_GATE_SHA1}" "" is_bad) + if(is_bad) + hunter_gate_internal_error("HUNTER_GATE_SHA1 empty") + endif() + + string(COMPARE EQUAL "${HUNTER_GATE_URL}" "" is_bad) + if(is_bad) + hunter_gate_internal_error("HUNTER_GATE_URL empty") + endif() + + set(done_location "${dir}/DONE") + set(sha1_location "${dir}/SHA1") + + set(build_dir "${dir}/Build") + set(cmakelists "${dir}/CMakeLists.txt") + + hunter_gate_status_debug("Locking directory: ${dir}") + file(LOCK "${dir}" DIRECTORY GUARD FUNCTION) + hunter_gate_status_debug("Lock done") + + if(EXISTS "${done_location}") + # while waiting for lock other instance can do all the job + hunter_gate_status_debug("File '${done_location}' found, skip install") + return() + endif() + + file(REMOVE_RECURSE "${build_dir}") + file(REMOVE_RECURSE "${cmakelists}") + + file(MAKE_DIRECTORY "${build_dir}") # check directory permissions + + # Disabling languages speeds up a little bit, reduces noise in the output + # and avoids path too long windows error + file( + WRITE + "${cmakelists}" + "cmake_minimum_required(VERSION 3.5)\n" + "if(POLICY CMP0114)\n" + " cmake_policy(SET CMP0114 NEW)\n" + "endif()\n" + "if(POLICY CMP0135)\n" + " cmake_policy(SET CMP0135 NEW)\n" + "endif()\n" + "project(HunterDownload LANGUAGES NONE)\n" + "include(ExternalProject)\n" + "ExternalProject_Add(\n" + " Hunter\n" + " URL\n" + " \"${HUNTER_GATE_URL}\"\n" + " URL_HASH\n" + " SHA1=${HUNTER_GATE_SHA1}\n" + " DOWNLOAD_DIR\n" + " \"${dir}\"\n" + " TLS_VERIFY\n" + " ${HUNTER_TLS_VERIFY}\n" + " SOURCE_DIR\n" + " \"${dir}/Unpacked\"\n" + " CONFIGURE_COMMAND\n" + " \"\"\n" + " BUILD_COMMAND\n" + " \"\"\n" + " INSTALL_COMMAND\n" + " \"\"\n" + ")\n" + ) + + if(HUNTER_STATUS_DEBUG) + set(logging_params "") + else() + set(logging_params OUTPUT_QUIET) + endif() + + hunter_gate_status_debug("Run generate") + + # Need to add toolchain file too. + # Otherwise on Visual Studio + MDD this will fail with error: + # "Could not find an appropriate version of the Windows 10 SDK installed on this machine" + if(EXISTS "${CMAKE_TOOLCHAIN_FILE}") + get_filename_component(absolute_CMAKE_TOOLCHAIN_FILE "${CMAKE_TOOLCHAIN_FILE}" ABSOLUTE) + set(toolchain_arg "-DCMAKE_TOOLCHAIN_FILE=${absolute_CMAKE_TOOLCHAIN_FILE}") + else() + # 'toolchain_arg' can't be empty + set(toolchain_arg "-DCMAKE_TOOLCHAIN_FILE=") + endif() + + string(COMPARE EQUAL "${CMAKE_MAKE_PROGRAM}" "" no_make) + if(no_make) + set(make_arg "") + else() + # Test case: remove Ninja from PATH but set it via CMAKE_MAKE_PROGRAM + set(make_arg "-DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}") + endif() + + execute_process( + COMMAND + "${CMAKE_COMMAND}" + "-H${dir}" + "-B${build_dir}" + "-G${CMAKE_GENERATOR}" + "${toolchain_arg}" + ${make_arg} + WORKING_DIRECTORY "${dir}" + RESULT_VARIABLE download_result + ${logging_params} + ) + + if(NOT download_result EQUAL 0) + hunter_gate_internal_error( + "Configure project failed." + "To reproduce the error run: ${CMAKE_COMMAND} -H${dir} -B${build_dir} -G${CMAKE_GENERATOR} ${toolchain_arg} ${make_arg}" + "In directory ${dir}" + ) + endif() + + hunter_gate_status_print( + "Initializing Hunter workspace (${HUNTER_GATE_SHA1})" + " ${HUNTER_GATE_URL}" + " -> ${dir}" + ) + execute_process( + COMMAND "${CMAKE_COMMAND}" --build "${build_dir}" + WORKING_DIRECTORY "${dir}" + RESULT_VARIABLE download_result + ${logging_params} + ) + + if(NOT download_result EQUAL 0) + hunter_gate_internal_error("Build project failed") + endif() + + file(REMOVE_RECURSE "${build_dir}") + file(REMOVE_RECURSE "${cmakelists}") + + file(WRITE "${sha1_location}" "${HUNTER_GATE_SHA1}") + file(WRITE "${done_location}" "DONE") + + hunter_gate_status_debug("Finished") +endfunction() + +# Must be a macro so master file 'cmake/Hunter' can +# apply all variables easily just by 'include' command +# (otherwise PARENT_SCOPE magic needed) +macro(HunterGate) + if(HUNTER_GATE_DONE) + # variable HUNTER_GATE_DONE set explicitly for external project + # (see `hunter_download`) + set_property(GLOBAL PROPERTY HUNTER_GATE_DONE YES) + endif() + + # First HunterGate command will init Hunter, others will be ignored + get_property(_hunter_gate_done GLOBAL PROPERTY HUNTER_GATE_DONE SET) + + if(NOT HUNTER_ENABLED) + # Empty function to avoid error "unknown function" + function(hunter_add_package) + endfunction() + + set( + _hunter_gate_disabled_mode_dir + "${CMAKE_CURRENT_LIST_DIR}/cmake/Hunter/disabled-mode" + ) + if(EXISTS "${_hunter_gate_disabled_mode_dir}") + hunter_gate_status_debug( + "Adding \"disabled-mode\" modules: ${_hunter_gate_disabled_mode_dir}" + ) + list(APPEND CMAKE_PREFIX_PATH "${_hunter_gate_disabled_mode_dir}") + endif() + elseif(_hunter_gate_done) + hunter_gate_status_debug("Secondary HunterGate (use old settings)") + hunter_gate_self( + "${HUNTER_CACHED_ROOT}" + "${HUNTER_VERSION}" + "${HUNTER_SHA1}" + _hunter_self + ) + include("${_hunter_self}/cmake/Hunter") + else() + set(HUNTER_GATE_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}") + + string(COMPARE NOTEQUAL "${PROJECT_NAME}" "" _have_project_name) + if(_have_project_name) + hunter_gate_fatal_error( + "Please set HunterGate *before* 'project' command. " + "Detected project: ${PROJECT_NAME}" + ERROR_PAGE "error.huntergate.before.project" + ) + endif() + + cmake_parse_arguments( + HUNTER_GATE "LOCAL" "URL;SHA1;GLOBAL;FILEPATH" "" ${ARGV} + ) + + string(COMPARE EQUAL "${HUNTER_GATE_SHA1}" "" _empty_sha1) + string(COMPARE EQUAL "${HUNTER_GATE_URL}" "" _empty_url) + string( + COMPARE + NOTEQUAL + "${HUNTER_GATE_UNPARSED_ARGUMENTS}" + "" + _have_unparsed + ) + string(COMPARE NOTEQUAL "${HUNTER_GATE_GLOBAL}" "" _have_global) + string(COMPARE NOTEQUAL "${HUNTER_GATE_FILEPATH}" "" _have_filepath) + + if(_have_unparsed) + hunter_gate_user_error( + "HunterGate unparsed arguments: ${HUNTER_GATE_UNPARSED_ARGUMENTS}" + ) + endif() + if(_empty_sha1) + hunter_gate_user_error("SHA1 suboption of HunterGate is mandatory") + endif() + if(_empty_url) + hunter_gate_user_error("URL suboption of HunterGate is mandatory") + endif() + if(_have_global) + if(HUNTER_GATE_LOCAL) + hunter_gate_user_error("Unexpected LOCAL (already has GLOBAL)") + endif() + if(_have_filepath) + hunter_gate_user_error("Unexpected FILEPATH (already has GLOBAL)") + endif() + endif() + if(HUNTER_GATE_LOCAL) + if(_have_global) + hunter_gate_user_error("Unexpected GLOBAL (already has LOCAL)") + endif() + if(_have_filepath) + hunter_gate_user_error("Unexpected FILEPATH (already has LOCAL)") + endif() + endif() + if(_have_filepath) + if(_have_global) + hunter_gate_user_error("Unexpected GLOBAL (already has FILEPATH)") + endif() + if(HUNTER_GATE_LOCAL) + hunter_gate_user_error("Unexpected LOCAL (already has FILEPATH)") + endif() + endif() + + hunter_gate_detect_root() # set HUNTER_GATE_ROOT + + # Beautify path, fix probable problems with windows path slashes + get_filename_component( + HUNTER_GATE_ROOT "${HUNTER_GATE_ROOT}" ABSOLUTE + ) + hunter_gate_status_debug("HUNTER_ROOT: ${HUNTER_GATE_ROOT}") + if(NOT HUNTER_ALLOW_SPACES_IN_PATH) + string(FIND "${HUNTER_GATE_ROOT}" " " _contain_spaces) + if(NOT _contain_spaces EQUAL -1) + hunter_gate_fatal_error( + "HUNTER_ROOT (${HUNTER_GATE_ROOT}) contains spaces." + "Set HUNTER_ALLOW_SPACES_IN_PATH=ON to skip this error" + "(Use at your own risk!)" + ERROR_PAGE "error.spaces.in.hunter.root" + ) + endif() + endif() + + string( + REGEX + MATCH + "[0-9]+\\.[0-9]+\\.[0-9]+[-_a-z0-9]*" + HUNTER_GATE_VERSION + "${HUNTER_GATE_URL}" + ) + string(COMPARE EQUAL "${HUNTER_GATE_VERSION}" "" _is_empty) + if(_is_empty) + set(HUNTER_GATE_VERSION "unknown") + endif() + + hunter_gate_self( + "${HUNTER_GATE_ROOT}" + "${HUNTER_GATE_VERSION}" + "${HUNTER_GATE_SHA1}" + _hunter_self + ) + + set(_master_location "${_hunter_self}/cmake/Hunter") + if(EXISTS "${HUNTER_GATE_ROOT}/cmake/Hunter") + # Hunter downloaded manually (e.g. by 'git clone') + set(_unused "xxxxxxxxxx") + set(HUNTER_GATE_SHA1 "${_unused}") + set(HUNTER_GATE_VERSION "${_unused}") + else() + get_filename_component(_archive_id_location "${_hunter_self}/.." ABSOLUTE) + set(_done_location "${_archive_id_location}/DONE") + set(_sha1_location "${_archive_id_location}/SHA1") + + # Check Hunter already downloaded by HunterGate + if(NOT EXISTS "${_done_location}") + hunter_gate_download("${_archive_id_location}") + endif() + + if(NOT EXISTS "${_done_location}") + hunter_gate_internal_error("hunter_gate_download failed") + endif() + + if(NOT EXISTS "${_sha1_location}") + hunter_gate_internal_error("${_sha1_location} not found") + endif() + file(READ "${_sha1_location}" _sha1_value) + string(TOLOWER "${_sha1_value}" _sha1_value_lower) + string(TOLOWER "${HUNTER_GATE_SHA1}" _HUNTER_GATE_SHA1_lower) + string(COMPARE EQUAL "${_sha1_value_lower}" "${_HUNTER_GATE_SHA1_lower}" _is_equal) + if(NOT _is_equal) + hunter_gate_internal_error( + "Short SHA1 collision:" + " ${_sha1_value} (from ${_sha1_location})" + " ${HUNTER_GATE_SHA1} (HunterGate)" + ) + endif() + if(NOT EXISTS "${_master_location}") + hunter_gate_user_error( + "Master file not found:" + " ${_master_location}" + "try to update Hunter/HunterGate" + ) + endif() + endif() + include("${_master_location}") + set_property(GLOBAL PROPERTY HUNTER_GATE_DONE YES) + endif() +endmacro() diff --git a/cmake/conan/CMakeLists.txt b/cmake/conan/CMakeLists.txt deleted file mode 100644 index c03b275d..00000000 --- a/cmake/conan/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -if (NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake") - message(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan") - file(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/0.17.0/conan.cmake" - "${CMAKE_BINARY_DIR}/conan.cmake") -endif () -include(${CMAKE_BINARY_DIR}/conan.cmake) - -conan_check(REQUIRED) - -conan_cmake_run(CONANFILE conanfile.txt BASIC_SETUP CMAKE_TARGETS BUILD missing) diff --git a/cmake/gtest/CMakeLists.txt b/cmake/gtest/CMakeLists.txt deleted file mode 100644 index eea7d079..00000000 --- a/cmake/gtest/CMakeLists.txt +++ /dev/null @@ -1,31 +0,0 @@ -############################## -# Google Test -# Based on instructions in https://github.com/google/googletest/tree/master/googletest#incorporating-into-an-existing-cmake-project -# Download and unpack googletest at configure time -configure_file(CMakeLists.txt.gtest.in ${CMAKE_BINARY_DIR}/googletest-download/CMakeLists.txt) - -execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . - RESULT_VARIABLE result - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download) -if (result) - message(FATAL_ERROR "CMake step for googletest failed: ${result}") -endif () - -execute_process(COMMAND ${CMAKE_COMMAND} --build . - RESULT_VARIABLE result - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download) -if (result) - message(FATAL_ERROR "Build step for googletest failed: ${result}") -endif () - -# Prevent overriding the parent project's compiler/linker settings on Windows -set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) - -add_subdirectory( - ${CMAKE_BINARY_DIR}/googletest-src - ${CMAKE_BINARY_DIR}/googletest-build -) - -if (CMAKE_VERSION VERSION_LESS 2.8.11) - include_directories("${gtest_SOURCE_DIR}/include") -endif () diff --git a/cmake/gtest/CMakeLists.txt.gtest.in b/cmake/gtest/CMakeLists.txt.gtest.in deleted file mode 100644 index b4566319..00000000 --- a/cmake/gtest/CMakeLists.txt.gtest.in +++ /dev/null @@ -1,16 +0,0 @@ -# Based on https://github.com/google/googletest/tree/master/googletest#incorporating-into-an-existing-cmake-project -cmake_minimum_required(VERSION 3.0.0) - -project(googletest-download NONE) - -include(ExternalProject) -ExternalProject_Add(googletest - GIT_REPOSITORY https://github.com/google/googletest.git - GIT_TAG release-1.11.0 - SOURCE_DIR "${CMAKE_BINARY_DIR}/googletest-src" - BINARY_DIR "${CMAKE_BINARY_DIR}/googletest-build" - CONFIGURE_COMMAND "" - BUILD_COMMAND "" - INSTALL_COMMAND "" - TEST_COMMAND "" - ) diff --git a/conanfile.txt b/conanfile.txt deleted file mode 100644 index 9639b968..00000000 --- a/conanfile.txt +++ /dev/null @@ -1,6 +0,0 @@ -[requires] -jsoncpp/1.9.5 -fmt/8.1.1 - -[generators] -cmake diff --git a/deps/ledger-zxlib b/deps/ledger-zxlib index f19112bb..a69b91db 160000 --- a/deps/ledger-zxlib +++ b/deps/ledger-zxlib @@ -1 +1 @@ -Subproject commit f19112bb6340721c276af459924b3c4261c0291a +Subproject commit a69b91dbe387f39e8d37a252673d0d0bb42361a2 diff --git a/deps/nanos-secure-sdk b/deps/nanos-secure-sdk index 62dd0477..b46b4b51 160000 --- a/deps/nanos-secure-sdk +++ b/deps/nanos-secure-sdk @@ -1 +1 @@ -Subproject commit 62dd047774b5e8a6b4e6158b493ee029453b5bae +Subproject commit b46b4b516650c08dfe913054dc7535dd52e2503a diff --git a/deps/nanosplus-secure-sdk b/deps/nanosplus-secure-sdk index 48bb8d49..b46b4b51 160000 --- a/deps/nanosplus-secure-sdk +++ b/deps/nanosplus-secure-sdk @@ -1 +1 @@ -Subproject commit 48bb8d493548f840ddd261bbe60930f3f5966e7b +Subproject commit b46b4b516650c08dfe913054dc7535dd52e2503a diff --git a/deps/nanox-secure-sdk b/deps/nanox-secure-sdk index 48bb8d49..b46b4b51 160000 --- a/deps/nanox-secure-sdk +++ b/deps/nanox-secure-sdk @@ -1 +1 @@ -Subproject commit 48bb8d493548f840ddd261bbe60930f3f5966e7b +Subproject commit b46b4b516650c08dfe913054dc7535dd52e2503a diff --git a/deps/stax-secure-sdk b/deps/stax-secure-sdk index a23bad84..b46b4b51 160000 --- a/deps/stax-secure-sdk +++ b/deps/stax-secure-sdk @@ -1 +1 @@ -Subproject commit a23bad84cbf39a5071644d2191b177191c089b23 +Subproject commit b46b4b516650c08dfe913054dc7535dd52e2503a diff --git a/ledger_app.toml b/ledger_app.toml index 3e4cbb1f..7f63dfec 100644 --- a/ledger_app.toml +++ b/ledger_app.toml @@ -1,7 +1,7 @@ [app] build_directory = "./app/" sdk = "C" -devices = ["nanos", "nanox", "nanos+", "stax"] +devices = ["nanos", "nanox", "nanos+", "stax", "flex"] [tests] unit_directory = "./tests/" diff --git a/tests/phase2.json b/tests/phase2.json index 61173543..7b5d166f 100644 --- a/tests/phase2.json +++ b/tests/phase2.json @@ -470,7 +470,7 @@ { "index": 200, "name": "List Neurons", - "blob": "d9d9f7a167636f6e74656e74a66361726758194449444c026d786c02acbe9cc50700dabcd1c70d7e010100016b63616e69737465725f69644a000000000000000101016e696e67726573735f6578706972791b1717844f7cfe21c06b6d6574686f645f6e616d656c6c6973745f6e6575726f6e736c726571756573745f747970656463616c6c6673656e6465724104", + "blob": "d9d9f7a167636f6e74656e74a66361726758224449444c036d786e7e6c03acbe9cc50700ccd2d3bf0c01dabcd1c70d7e01020000016b63616e69737465725f69644a000000000000000101016e696e67726573735f6578706972791b17e4dd23029fe8006b6d6574686f645f6e616d656c6c6973745f6e6575726f6e736c726571756573745f747970656463616c6c6673656e646572581d19aa3d42c048dd7d14f0cfa0df69a1c1381780f6e9a137abaa6a82e302", "output": ["0 | Transaction type : List Own Neurons"], "output_expert": ["0 | Transaction type : List Own Neurons"], "valid": true @@ -478,7 +478,7 @@ { "index": 201, "name": "List Neurons", - "blob": "d9d9f7a167636f6e74656e74a66361726758294449444c026d786c02acbe9cc50700dabcd1c70d7e01010200c8c056ea395dd500406c4830c8a17a006b63616e69737465725f69644a000000000000000101016e696e67726573735f6578706972791b1718cf3d0b5d0b006b6d6574686f645f6e616d656c6c6973745f6e6575726f6e736c726571756573745f747970656463616c6c6673656e6465724104", + "blob": "d9d9f7a167636f6e74656e74a66361726758334449444c036d786e7e6c03acbe9cc50700ccd2d3bf0c01dabcd1c70d7e01020200c8c056ea395dd500406c4830c8a17a0101006b63616e69737465725f69644a000000000000000101016e696e67726573735f6578706972791b17e4dd23029fe8006b6d6574686f645f6e616d656c6c6973745f6e6575726f6e736c726571756573745f747970656463616c6c6673656e646572581d19aa3d42c048dd7d14f0cfa0df69a1c1381780f6e9a137abaa6a82e302", "output": [ "0 | Transaction type : List Own Neurons", "1 | Neuron ID 1 : 15374508381553346560", diff --git a/tests_zemu/package.json b/tests_zemu/package.json index 6a5cacfe..7a84d140 100644 --- a/tests_zemu/package.json +++ b/tests_zemu/package.json @@ -19,7 +19,7 @@ }, "dependencies": { "@zondax/ledger-icp": "link:../js", - "@zondax/zemu": "^0.47.0" + "@zondax/zemu": "^0.50.2" }, "devDependencies": { "@types/jest": "^29.2.3", @@ -28,10 +28,10 @@ "@typescript-eslint/eslint-plugin": "^7.1.0", "@typescript-eslint/parser": "^7.1.0", "crypto-js": "4.2.0", - "eslint": "^8.22.0", + "eslint": "^9.7.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^27.1.6", + "eslint-plugin-jest": "^28.6.0", "eslint-plugin-prettier": "^5.1.3", "jest": "29.7.0", "js-sha256": "0.11.0", diff --git a/tests_zemu/snapshots/fl-candid_auto_stake_maturity/00000.png b/tests_zemu/snapshots/fl-candid_auto_stake_maturity/00000.png new file mode 100644 index 00000000..74936fef Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_auto_stake_maturity/00000.png differ diff --git a/tests_zemu/snapshots/fl-candid_auto_stake_maturity/00001.png b/tests_zemu/snapshots/fl-candid_auto_stake_maturity/00001.png new file mode 100644 index 00000000..c827d7d9 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_auto_stake_maturity/00001.png differ diff --git a/tests_zemu/snapshots/fl-candid_auto_stake_maturity/00002.png b/tests_zemu/snapshots/fl-candid_auto_stake_maturity/00002.png new file mode 100644 index 00000000..b4e2d27b Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_auto_stake_maturity/00002.png differ diff --git a/tests_zemu/snapshots/fl-candid_auto_stake_maturity/00003.png b/tests_zemu/snapshots/fl-candid_auto_stake_maturity/00003.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_auto_stake_maturity/00003.png differ diff --git a/tests_zemu/snapshots/fl-candid_disburse/00000.png b/tests_zemu/snapshots/fl-candid_disburse/00000.png new file mode 100644 index 00000000..c46ba3d3 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_disburse/00000.png differ diff --git a/tests_zemu/snapshots/fl-candid_disburse/00001.png b/tests_zemu/snapshots/fl-candid_disburse/00001.png new file mode 100644 index 00000000..eb9e7921 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_disburse/00001.png differ diff --git a/tests_zemu/snapshots/fl-candid_disburse/00002.png b/tests_zemu/snapshots/fl-candid_disburse/00002.png new file mode 100644 index 00000000..40f2b016 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_disburse/00002.png differ diff --git a/tests_zemu/snapshots/fl-candid_disburse/00003.png b/tests_zemu/snapshots/fl-candid_disburse/00003.png new file mode 100644 index 00000000..89a52c89 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_disburse/00003.png differ diff --git a/tests_zemu/snapshots/fl-candid_disburse/00004.png b/tests_zemu/snapshots/fl-candid_disburse/00004.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_disburse/00004.png differ diff --git a/tests_zemu/snapshots/fl-candid_follow/00000.png b/tests_zemu/snapshots/fl-candid_follow/00000.png new file mode 100644 index 00000000..c46ba3d3 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_follow/00000.png differ diff --git a/tests_zemu/snapshots/fl-candid_follow/00001.png b/tests_zemu/snapshots/fl-candid_follow/00001.png new file mode 100644 index 00000000..f5dae901 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_follow/00001.png differ diff --git a/tests_zemu/snapshots/fl-candid_follow/00002.png b/tests_zemu/snapshots/fl-candid_follow/00002.png new file mode 100644 index 00000000..cc8e4a35 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_follow/00002.png differ diff --git a/tests_zemu/snapshots/fl-candid_follow/00003.png b/tests_zemu/snapshots/fl-candid_follow/00003.png new file mode 100644 index 00000000..89a52c89 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_follow/00003.png differ diff --git a/tests_zemu/snapshots/fl-candid_follow/00004.png b/tests_zemu/snapshots/fl-candid_follow/00004.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_follow/00004.png differ diff --git a/tests_zemu/snapshots/fl-candid_increase_dissolve_delay/00000.png b/tests_zemu/snapshots/fl-candid_increase_dissolve_delay/00000.png new file mode 100644 index 00000000..74936fef Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_increase_dissolve_delay/00000.png differ diff --git a/tests_zemu/snapshots/fl-candid_increase_dissolve_delay/00001.png b/tests_zemu/snapshots/fl-candid_increase_dissolve_delay/00001.png new file mode 100644 index 00000000..97a676c1 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_increase_dissolve_delay/00001.png differ diff --git a/tests_zemu/snapshots/fl-candid_increase_dissolve_delay/00002.png b/tests_zemu/snapshots/fl-candid_increase_dissolve_delay/00002.png new file mode 100644 index 00000000..b4e2d27b Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_increase_dissolve_delay/00002.png differ diff --git a/tests_zemu/snapshots/fl-candid_increase_dissolve_delay/00003.png b/tests_zemu/snapshots/fl-candid_increase_dissolve_delay/00003.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_increase_dissolve_delay/00003.png differ diff --git a/tests_zemu/snapshots/fl-candid_list_neurons/00000.png b/tests_zemu/snapshots/fl-candid_list_neurons/00000.png new file mode 100644 index 00000000..74936fef Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_list_neurons/00000.png differ diff --git a/tests_zemu/snapshots/fl-candid_list_neurons/00001.png b/tests_zemu/snapshots/fl-candid_list_neurons/00001.png new file mode 100644 index 00000000..eb7628f6 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_list_neurons/00001.png differ diff --git a/tests_zemu/snapshots/fl-candid_list_neurons/00002.png b/tests_zemu/snapshots/fl-candid_list_neurons/00002.png new file mode 100644 index 00000000..b4e2d27b Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_list_neurons/00002.png differ diff --git a/tests_zemu/snapshots/fl-candid_list_neurons/00003.png b/tests_zemu/snapshots/fl-candid_list_neurons/00003.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_list_neurons/00003.png differ diff --git a/tests_zemu/snapshots/fl-candid_merge_neuron/00000.png b/tests_zemu/snapshots/fl-candid_merge_neuron/00000.png new file mode 100644 index 00000000..74936fef Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_merge_neuron/00000.png differ diff --git a/tests_zemu/snapshots/fl-candid_merge_neuron/00001.png b/tests_zemu/snapshots/fl-candid_merge_neuron/00001.png new file mode 100644 index 00000000..008cf6aa Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_merge_neuron/00001.png differ diff --git a/tests_zemu/snapshots/fl-candid_merge_neuron/00002.png b/tests_zemu/snapshots/fl-candid_merge_neuron/00002.png new file mode 100644 index 00000000..b4e2d27b Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_merge_neuron/00002.png differ diff --git a/tests_zemu/snapshots/fl-candid_merge_neuron/00003.png b/tests_zemu/snapshots/fl-candid_merge_neuron/00003.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_merge_neuron/00003.png differ diff --git a/tests_zemu/snapshots/fl-candid_register_vote/00000.png b/tests_zemu/snapshots/fl-candid_register_vote/00000.png new file mode 100644 index 00000000..74936fef Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_register_vote/00000.png differ diff --git a/tests_zemu/snapshots/fl-candid_register_vote/00001.png b/tests_zemu/snapshots/fl-candid_register_vote/00001.png new file mode 100644 index 00000000..9c1fffb7 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_register_vote/00001.png differ diff --git a/tests_zemu/snapshots/fl-candid_register_vote/00002.png b/tests_zemu/snapshots/fl-candid_register_vote/00002.png new file mode 100644 index 00000000..b4e2d27b Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_register_vote/00002.png differ diff --git a/tests_zemu/snapshots/fl-candid_register_vote/00003.png b/tests_zemu/snapshots/fl-candid_register_vote/00003.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_register_vote/00003.png differ diff --git a/tests_zemu/snapshots/fl-candid_send_icp/00000.png b/tests_zemu/snapshots/fl-candid_send_icp/00000.png new file mode 100644 index 00000000..952f16dd Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_send_icp/00000.png differ diff --git a/tests_zemu/snapshots/fl-candid_send_icp/00001.png b/tests_zemu/snapshots/fl-candid_send_icp/00001.png new file mode 100644 index 00000000..b3e0ca2b Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_send_icp/00001.png differ diff --git a/tests_zemu/snapshots/fl-candid_send_icp/00002.png b/tests_zemu/snapshots/fl-candid_send_icp/00002.png new file mode 100644 index 00000000..4e62ef14 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_send_icp/00002.png differ diff --git a/tests_zemu/snapshots/fl-candid_send_icp/00003.png b/tests_zemu/snapshots/fl-candid_send_icp/00003.png new file mode 100644 index 00000000..1bdf1658 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_send_icp/00003.png differ diff --git a/tests_zemu/snapshots/fl-candid_send_icp/00004.png b/tests_zemu/snapshots/fl-candid_send_icp/00004.png new file mode 100644 index 00000000..09b146b7 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_send_icp/00004.png differ diff --git a/tests_zemu/snapshots/fl-candid_send_icp/00005.png b/tests_zemu/snapshots/fl-candid_send_icp/00005.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_send_icp/00005.png differ diff --git a/tests_zemu/snapshots/fl-candid_set_dissolve_delay/00000.png b/tests_zemu/snapshots/fl-candid_set_dissolve_delay/00000.png new file mode 100644 index 00000000..74936fef Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_set_dissolve_delay/00000.png differ diff --git a/tests_zemu/snapshots/fl-candid_set_dissolve_delay/00001.png b/tests_zemu/snapshots/fl-candid_set_dissolve_delay/00001.png new file mode 100644 index 00000000..4fb2b1d3 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_set_dissolve_delay/00001.png differ diff --git a/tests_zemu/snapshots/fl-candid_set_dissolve_delay/00002.png b/tests_zemu/snapshots/fl-candid_set_dissolve_delay/00002.png new file mode 100644 index 00000000..b4e2d27b Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_set_dissolve_delay/00002.png differ diff --git a/tests_zemu/snapshots/fl-candid_set_dissolve_delay/00003.png b/tests_zemu/snapshots/fl-candid_set_dissolve_delay/00003.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_set_dissolve_delay/00003.png differ diff --git a/tests_zemu/snapshots/fl-candid_spawn_neuron/00000.png b/tests_zemu/snapshots/fl-candid_spawn_neuron/00000.png new file mode 100644 index 00000000..c46ba3d3 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_spawn_neuron/00000.png differ diff --git a/tests_zemu/snapshots/fl-candid_spawn_neuron/00001.png b/tests_zemu/snapshots/fl-candid_spawn_neuron/00001.png new file mode 100644 index 00000000..97ff4260 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_spawn_neuron/00001.png differ diff --git a/tests_zemu/snapshots/fl-candid_spawn_neuron/00002.png b/tests_zemu/snapshots/fl-candid_spawn_neuron/00002.png new file mode 100644 index 00000000..d83165f0 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_spawn_neuron/00002.png differ diff --git a/tests_zemu/snapshots/fl-candid_spawn_neuron/00003.png b/tests_zemu/snapshots/fl-candid_spawn_neuron/00003.png new file mode 100644 index 00000000..89a52c89 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_spawn_neuron/00003.png differ diff --git a/tests_zemu/snapshots/fl-candid_spawn_neuron/00004.png b/tests_zemu/snapshots/fl-candid_spawn_neuron/00004.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_spawn_neuron/00004.png differ diff --git a/tests_zemu/snapshots/fl-candid_split_neuron/00000.png b/tests_zemu/snapshots/fl-candid_split_neuron/00000.png new file mode 100644 index 00000000..74936fef Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_split_neuron/00000.png differ diff --git a/tests_zemu/snapshots/fl-candid_split_neuron/00001.png b/tests_zemu/snapshots/fl-candid_split_neuron/00001.png new file mode 100644 index 00000000..d126dc34 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_split_neuron/00001.png differ diff --git a/tests_zemu/snapshots/fl-candid_split_neuron/00002.png b/tests_zemu/snapshots/fl-candid_split_neuron/00002.png new file mode 100644 index 00000000..b4e2d27b Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_split_neuron/00002.png differ diff --git a/tests_zemu/snapshots/fl-candid_split_neuron/00003.png b/tests_zemu/snapshots/fl-candid_split_neuron/00003.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_split_neuron/00003.png differ diff --git a/tests_zemu/snapshots/fl-candid_stake_icrc_expert/00000.png b/tests_zemu/snapshots/fl-candid_stake_icrc_expert/00000.png new file mode 100644 index 00000000..c46ba3d3 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_stake_icrc_expert/00000.png differ diff --git a/tests_zemu/snapshots/fl-candid_stake_icrc_expert/00001.png b/tests_zemu/snapshots/fl-candid_stake_icrc_expert/00001.png new file mode 100644 index 00000000..9d0b9730 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_stake_icrc_expert/00001.png differ diff --git a/tests_zemu/snapshots/fl-candid_stake_icrc_expert/00002.png b/tests_zemu/snapshots/fl-candid_stake_icrc_expert/00002.png new file mode 100644 index 00000000..5474ecf6 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_stake_icrc_expert/00002.png differ diff --git a/tests_zemu/snapshots/fl-candid_stake_icrc_expert/00003.png b/tests_zemu/snapshots/fl-candid_stake_icrc_expert/00003.png new file mode 100644 index 00000000..89a52c89 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_stake_icrc_expert/00003.png differ diff --git a/tests_zemu/snapshots/fl-candid_stake_icrc_expert/00004.png b/tests_zemu/snapshots/fl-candid_stake_icrc_expert/00004.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_stake_icrc_expert/00004.png differ diff --git a/tests_zemu/snapshots/fl-candid_stake_maturity/00000.png b/tests_zemu/snapshots/fl-candid_stake_maturity/00000.png new file mode 100644 index 00000000..74936fef Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_stake_maturity/00000.png differ diff --git a/tests_zemu/snapshots/fl-candid_stake_maturity/00001.png b/tests_zemu/snapshots/fl-candid_stake_maturity/00001.png new file mode 100644 index 00000000..408cd476 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_stake_maturity/00001.png differ diff --git a/tests_zemu/snapshots/fl-candid_stake_maturity/00002.png b/tests_zemu/snapshots/fl-candid_stake_maturity/00002.png new file mode 100644 index 00000000..b4e2d27b Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_stake_maturity/00002.png differ diff --git a/tests_zemu/snapshots/fl-candid_stake_maturity/00003.png b/tests_zemu/snapshots/fl-candid_stake_maturity/00003.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_stake_maturity/00003.png differ diff --git a/tests_zemu/snapshots/fl-candid_stake_neuron_expert/00000.png b/tests_zemu/snapshots/fl-candid_stake_neuron_expert/00000.png new file mode 100644 index 00000000..952f16dd Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_stake_neuron_expert/00000.png differ diff --git a/tests_zemu/snapshots/fl-candid_stake_neuron_expert/00001.png b/tests_zemu/snapshots/fl-candid_stake_neuron_expert/00001.png new file mode 100644 index 00000000..7fe2e7a2 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_stake_neuron_expert/00001.png differ diff --git a/tests_zemu/snapshots/fl-candid_stake_neuron_expert/00002.png b/tests_zemu/snapshots/fl-candid_stake_neuron_expert/00002.png new file mode 100644 index 00000000..0628f405 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_stake_neuron_expert/00002.png differ diff --git a/tests_zemu/snapshots/fl-candid_stake_neuron_expert/00003.png b/tests_zemu/snapshots/fl-candid_stake_neuron_expert/00003.png new file mode 100644 index 00000000..b21c3fe5 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_stake_neuron_expert/00003.png differ diff --git a/tests_zemu/snapshots/fl-candid_stake_neuron_expert/00004.png b/tests_zemu/snapshots/fl-candid_stake_neuron_expert/00004.png new file mode 100644 index 00000000..09b146b7 Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_stake_neuron_expert/00004.png differ diff --git a/tests_zemu/snapshots/fl-candid_stake_neuron_expert/00005.png b/tests_zemu/snapshots/fl-candid_stake_neuron_expert/00005.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-candid_stake_neuron_expert/00005.png differ diff --git a/tests_zemu/snapshots/fl-icrc_transfer/00000.png b/tests_zemu/snapshots/fl-icrc_transfer/00000.png new file mode 100644 index 00000000..dd755aa1 Binary files /dev/null and b/tests_zemu/snapshots/fl-icrc_transfer/00000.png differ diff --git a/tests_zemu/snapshots/fl-icrc_transfer/00001.png b/tests_zemu/snapshots/fl-icrc_transfer/00001.png new file mode 100644 index 00000000..2efcbbe8 Binary files /dev/null and b/tests_zemu/snapshots/fl-icrc_transfer/00001.png differ diff --git a/tests_zemu/snapshots/fl-icrc_transfer/00002.png b/tests_zemu/snapshots/fl-icrc_transfer/00002.png new file mode 100644 index 00000000..6dc2c779 Binary files /dev/null and b/tests_zemu/snapshots/fl-icrc_transfer/00002.png differ diff --git a/tests_zemu/snapshots/fl-icrc_transfer/00003.png b/tests_zemu/snapshots/fl-icrc_transfer/00003.png new file mode 100644 index 00000000..ffdc1c33 Binary files /dev/null and b/tests_zemu/snapshots/fl-icrc_transfer/00003.png differ diff --git a/tests_zemu/snapshots/fl-icrc_transfer/00004.png b/tests_zemu/snapshots/fl-icrc_transfer/00004.png new file mode 100644 index 00000000..e4e2d870 Binary files /dev/null and b/tests_zemu/snapshots/fl-icrc_transfer/00004.png differ diff --git a/tests_zemu/snapshots/fl-icrc_transfer/00005.png b/tests_zemu/snapshots/fl-icrc_transfer/00005.png new file mode 100644 index 00000000..2fc5f49e Binary files /dev/null and b/tests_zemu/snapshots/fl-icrc_transfer/00005.png differ diff --git a/tests_zemu/snapshots/fl-icrc_transfer/00006.png b/tests_zemu/snapshots/fl-icrc_transfer/00006.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-icrc_transfer/00006.png differ diff --git a/tests_zemu/snapshots/fl-mainmenu/00000.png b/tests_zemu/snapshots/fl-mainmenu/00000.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-mainmenu/00000.png differ diff --git a/tests_zemu/snapshots/fl-mainmenu/00001.png b/tests_zemu/snapshots/fl-mainmenu/00001.png new file mode 100644 index 00000000..19bf0f0e Binary files /dev/null and b/tests_zemu/snapshots/fl-mainmenu/00001.png differ diff --git a/tests_zemu/snapshots/fl-mainmenu/00002.png b/tests_zemu/snapshots/fl-mainmenu/00002.png new file mode 100644 index 00000000..2e30ccd6 Binary files /dev/null and b/tests_zemu/snapshots/fl-mainmenu/00002.png differ diff --git a/tests_zemu/snapshots/fl-mainmenu/00003.png b/tests_zemu/snapshots/fl-mainmenu/00003.png new file mode 100644 index 00000000..19bf0f0e Binary files /dev/null and b/tests_zemu/snapshots/fl-mainmenu/00003.png differ diff --git a/tests_zemu/snapshots/fl-mainmenu/00004.png b/tests_zemu/snapshots/fl-mainmenu/00004.png new file mode 100644 index 00000000..7e919368 Binary files /dev/null and b/tests_zemu/snapshots/fl-mainmenu/00004.png differ diff --git a/tests_zemu/snapshots/fl-mainmenu/00005.png b/tests_zemu/snapshots/fl-mainmenu/00005.png new file mode 100644 index 00000000..be01b77c Binary files /dev/null and b/tests_zemu/snapshots/fl-mainmenu/00005.png differ diff --git a/tests_zemu/snapshots/fl-mainmenu/00006.png b/tests_zemu/snapshots/fl-mainmenu/00006.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-mainmenu/00006.png differ diff --git a/tests_zemu/snapshots/fl-show_address/00000.png b/tests_zemu/snapshots/fl-show_address/00000.png new file mode 100644 index 00000000..0147b014 Binary files /dev/null and b/tests_zemu/snapshots/fl-show_address/00000.png differ diff --git a/tests_zemu/snapshots/fl-show_address/00001.png b/tests_zemu/snapshots/fl-show_address/00001.png new file mode 100644 index 00000000..6c7ed2af Binary files /dev/null and b/tests_zemu/snapshots/fl-show_address/00001.png differ diff --git a/tests_zemu/snapshots/fl-show_address/00002.png b/tests_zemu/snapshots/fl-show_address/00002.png new file mode 100644 index 00000000..119e241e Binary files /dev/null and b/tests_zemu/snapshots/fl-show_address/00002.png differ diff --git a/tests_zemu/snapshots/fl-show_address/00003.png b/tests_zemu/snapshots/fl-show_address/00003.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-show_address/00003.png differ diff --git a/tests_zemu/snapshots/fl-show_address_reject/00000.png b/tests_zemu/snapshots/fl-show_address_reject/00000.png new file mode 100644 index 00000000..0147b014 Binary files /dev/null and b/tests_zemu/snapshots/fl-show_address_reject/00000.png differ diff --git a/tests_zemu/snapshots/fl-show_address_reject/00001.png b/tests_zemu/snapshots/fl-show_address_reject/00001.png new file mode 100644 index 00000000..6c7ed2af Binary files /dev/null and b/tests_zemu/snapshots/fl-show_address_reject/00001.png differ diff --git a/tests_zemu/snapshots/fl-show_address_reject/00002.png b/tests_zemu/snapshots/fl-show_address_reject/00002.png new file mode 100644 index 00000000..119e241e Binary files /dev/null and b/tests_zemu/snapshots/fl-show_address_reject/00002.png differ diff --git a/tests_zemu/snapshots/fl-show_address_reject/00003.png b/tests_zemu/snapshots/fl-show_address_reject/00003.png new file mode 100644 index 00000000..45c08d4e Binary files /dev/null and b/tests_zemu/snapshots/fl-show_address_reject/00003.png differ diff --git a/tests_zemu/snapshots/fl-show_address_reject/00004.png b/tests_zemu/snapshots/fl-show_address_reject/00004.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-show_address_reject/00004.png differ diff --git a/tests_zemu/snapshots/fl-sns_add_permissions/00000.png b/tests_zemu/snapshots/fl-sns_add_permissions/00000.png new file mode 100644 index 00000000..c46ba3d3 Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_add_permissions/00000.png differ diff --git a/tests_zemu/snapshots/fl-sns_add_permissions/00001.png b/tests_zemu/snapshots/fl-sns_add_permissions/00001.png new file mode 100644 index 00000000..71f0ceaa Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_add_permissions/00001.png differ diff --git a/tests_zemu/snapshots/fl-sns_add_permissions/00002.png b/tests_zemu/snapshots/fl-sns_add_permissions/00002.png new file mode 100644 index 00000000..c61ace74 Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_add_permissions/00002.png differ diff --git a/tests_zemu/snapshots/fl-sns_add_permissions/00003.png b/tests_zemu/snapshots/fl-sns_add_permissions/00003.png new file mode 100644 index 00000000..89a52c89 Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_add_permissions/00003.png differ diff --git a/tests_zemu/snapshots/fl-sns_add_permissions/00004.png b/tests_zemu/snapshots/fl-sns_add_permissions/00004.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_add_permissions/00004.png differ diff --git a/tests_zemu/snapshots/fl-sns_disburse/00000.png b/tests_zemu/snapshots/fl-sns_disburse/00000.png new file mode 100644 index 00000000..952f16dd Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_disburse/00000.png differ diff --git a/tests_zemu/snapshots/fl-sns_disburse/00001.png b/tests_zemu/snapshots/fl-sns_disburse/00001.png new file mode 100644 index 00000000..6e6f5549 Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_disburse/00001.png differ diff --git a/tests_zemu/snapshots/fl-sns_disburse/00002.png b/tests_zemu/snapshots/fl-sns_disburse/00002.png new file mode 100644 index 00000000..0c27a593 Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_disburse/00002.png differ diff --git a/tests_zemu/snapshots/fl-sns_disburse/00003.png b/tests_zemu/snapshots/fl-sns_disburse/00003.png new file mode 100644 index 00000000..5f417cdd Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_disburse/00003.png differ diff --git a/tests_zemu/snapshots/fl-sns_disburse/00004.png b/tests_zemu/snapshots/fl-sns_disburse/00004.png new file mode 100644 index 00000000..09b146b7 Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_disburse/00004.png differ diff --git a/tests_zemu/snapshots/fl-sns_disburse/00005.png b/tests_zemu/snapshots/fl-sns_disburse/00005.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_disburse/00005.png differ diff --git a/tests_zemu/snapshots/fl-sns_remove_permissions/00000.png b/tests_zemu/snapshots/fl-sns_remove_permissions/00000.png new file mode 100644 index 00000000..c46ba3d3 Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_remove_permissions/00000.png differ diff --git a/tests_zemu/snapshots/fl-sns_remove_permissions/00001.png b/tests_zemu/snapshots/fl-sns_remove_permissions/00001.png new file mode 100644 index 00000000..11fa9db0 Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_remove_permissions/00001.png differ diff --git a/tests_zemu/snapshots/fl-sns_remove_permissions/00002.png b/tests_zemu/snapshots/fl-sns_remove_permissions/00002.png new file mode 100644 index 00000000..9ddb19df Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_remove_permissions/00002.png differ diff --git a/tests_zemu/snapshots/fl-sns_remove_permissions/00003.png b/tests_zemu/snapshots/fl-sns_remove_permissions/00003.png new file mode 100644 index 00000000..89a52c89 Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_remove_permissions/00003.png differ diff --git a/tests_zemu/snapshots/fl-sns_remove_permissions/00004.png b/tests_zemu/snapshots/fl-sns_remove_permissions/00004.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_remove_permissions/00004.png differ diff --git a/tests_zemu/snapshots/fl-sns_stake_maturity/00000.png b/tests_zemu/snapshots/fl-sns_stake_maturity/00000.png new file mode 100644 index 00000000..c46ba3d3 Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_stake_maturity/00000.png differ diff --git a/tests_zemu/snapshots/fl-sns_stake_maturity/00001.png b/tests_zemu/snapshots/fl-sns_stake_maturity/00001.png new file mode 100644 index 00000000..e2183509 Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_stake_maturity/00001.png differ diff --git a/tests_zemu/snapshots/fl-sns_stake_maturity/00002.png b/tests_zemu/snapshots/fl-sns_stake_maturity/00002.png new file mode 100644 index 00000000..93f580af Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_stake_maturity/00002.png differ diff --git a/tests_zemu/snapshots/fl-sns_stake_maturity/00003.png b/tests_zemu/snapshots/fl-sns_stake_maturity/00003.png new file mode 100644 index 00000000..89a52c89 Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_stake_maturity/00003.png differ diff --git a/tests_zemu/snapshots/fl-sns_stake_maturity/00004.png b/tests_zemu/snapshots/fl-sns_stake_maturity/00004.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_stake_maturity/00004.png differ diff --git a/tests_zemu/snapshots/fl-sns_start_dissolve/00000.png b/tests_zemu/snapshots/fl-sns_start_dissolve/00000.png new file mode 100644 index 00000000..74936fef Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_start_dissolve/00000.png differ diff --git a/tests_zemu/snapshots/fl-sns_start_dissolve/00001.png b/tests_zemu/snapshots/fl-sns_start_dissolve/00001.png new file mode 100644 index 00000000..1facb9e9 Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_start_dissolve/00001.png differ diff --git a/tests_zemu/snapshots/fl-sns_start_dissolve/00002.png b/tests_zemu/snapshots/fl-sns_start_dissolve/00002.png new file mode 100644 index 00000000..b4e2d27b Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_start_dissolve/00002.png differ diff --git a/tests_zemu/snapshots/fl-sns_start_dissolve/00003.png b/tests_zemu/snapshots/fl-sns_start_dissolve/00003.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_start_dissolve/00003.png differ diff --git a/tests_zemu/snapshots/fl-sns_stop_dissolve/00000.png b/tests_zemu/snapshots/fl-sns_stop_dissolve/00000.png new file mode 100644 index 00000000..74936fef Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_stop_dissolve/00000.png differ diff --git a/tests_zemu/snapshots/fl-sns_stop_dissolve/00001.png b/tests_zemu/snapshots/fl-sns_stop_dissolve/00001.png new file mode 100644 index 00000000..3e1f7156 Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_stop_dissolve/00001.png differ diff --git a/tests_zemu/snapshots/fl-sns_stop_dissolve/00002.png b/tests_zemu/snapshots/fl-sns_stop_dissolve/00002.png new file mode 100644 index 00000000..b4e2d27b Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_stop_dissolve/00002.png differ diff --git a/tests_zemu/snapshots/fl-sns_stop_dissolve/00003.png b/tests_zemu/snapshots/fl-sns_stop_dissolve/00003.png new file mode 100644 index 00000000..f4e76bde Binary files /dev/null and b/tests_zemu/snapshots/fl-sns_stop_dissolve/00003.png differ diff --git a/tests_zemu/snapshots/s-mainmenu/00004.png b/tests_zemu/snapshots/s-mainmenu/00004.png index b312d29b..80cf259b 100644 Binary files a/tests_zemu/snapshots/s-mainmenu/00004.png and b/tests_zemu/snapshots/s-mainmenu/00004.png differ diff --git a/tests_zemu/snapshots/s-mainmenu/00010.png b/tests_zemu/snapshots/s-mainmenu/00010.png index b312d29b..80cf259b 100644 Binary files a/tests_zemu/snapshots/s-mainmenu/00010.png and b/tests_zemu/snapshots/s-mainmenu/00010.png differ diff --git a/tests_zemu/snapshots/sp-mainmenu/00004.png b/tests_zemu/snapshots/sp-mainmenu/00004.png index f4f21279..3a93f218 100644 Binary files a/tests_zemu/snapshots/sp-mainmenu/00004.png and b/tests_zemu/snapshots/sp-mainmenu/00004.png differ diff --git a/tests_zemu/snapshots/sp-mainmenu/00010.png b/tests_zemu/snapshots/sp-mainmenu/00010.png index f4f21279..3a93f218 100644 Binary files a/tests_zemu/snapshots/sp-mainmenu/00010.png and b/tests_zemu/snapshots/sp-mainmenu/00010.png differ diff --git a/tests_zemu/snapshots/st-candid_auto_stake_maturity/00000.png b/tests_zemu/snapshots/st-candid_auto_stake_maturity/00000.png index b9bb14c4..98a949b2 100644 Binary files a/tests_zemu/snapshots/st-candid_auto_stake_maturity/00000.png and b/tests_zemu/snapshots/st-candid_auto_stake_maturity/00000.png differ diff --git a/tests_zemu/snapshots/st-candid_auto_stake_maturity/00001.png b/tests_zemu/snapshots/st-candid_auto_stake_maturity/00001.png index a52e5100..b858458f 100644 Binary files a/tests_zemu/snapshots/st-candid_auto_stake_maturity/00001.png and b/tests_zemu/snapshots/st-candid_auto_stake_maturity/00001.png differ diff --git a/tests_zemu/snapshots/st-candid_auto_stake_maturity/00002.png b/tests_zemu/snapshots/st-candid_auto_stake_maturity/00002.png index 846218ba..60a3488e 100644 Binary files a/tests_zemu/snapshots/st-candid_auto_stake_maturity/00002.png and b/tests_zemu/snapshots/st-candid_auto_stake_maturity/00002.png differ diff --git a/tests_zemu/snapshots/st-candid_auto_stake_maturity/00003.png b/tests_zemu/snapshots/st-candid_auto_stake_maturity/00003.png index bf582528..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-candid_auto_stake_maturity/00003.png and b/tests_zemu/snapshots/st-candid_auto_stake_maturity/00003.png differ diff --git a/tests_zemu/snapshots/st-candid_disburse/00000.png b/tests_zemu/snapshots/st-candid_disburse/00000.png index b9bb14c4..98a949b2 100644 Binary files a/tests_zemu/snapshots/st-candid_disburse/00000.png and b/tests_zemu/snapshots/st-candid_disburse/00000.png differ diff --git a/tests_zemu/snapshots/st-candid_disburse/00001.png b/tests_zemu/snapshots/st-candid_disburse/00001.png index 5cc5d5ab..1a70f472 100644 Binary files a/tests_zemu/snapshots/st-candid_disburse/00001.png and b/tests_zemu/snapshots/st-candid_disburse/00001.png differ diff --git a/tests_zemu/snapshots/st-candid_disburse/00002.png b/tests_zemu/snapshots/st-candid_disburse/00002.png index eff25aa4..60a3488e 100644 Binary files a/tests_zemu/snapshots/st-candid_disburse/00002.png and b/tests_zemu/snapshots/st-candid_disburse/00002.png differ diff --git a/tests_zemu/snapshots/st-candid_disburse/00003.png b/tests_zemu/snapshots/st-candid_disburse/00003.png index ec1aef6e..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-candid_disburse/00003.png and b/tests_zemu/snapshots/st-candid_disburse/00003.png differ diff --git a/tests_zemu/snapshots/st-candid_follow/00000.png b/tests_zemu/snapshots/st-candid_follow/00000.png index b9bb14c4..203fad92 100644 Binary files a/tests_zemu/snapshots/st-candid_follow/00000.png and b/tests_zemu/snapshots/st-candid_follow/00000.png differ diff --git a/tests_zemu/snapshots/st-candid_follow/00001.png b/tests_zemu/snapshots/st-candid_follow/00001.png index 5d43c970..55d2dc26 100644 Binary files a/tests_zemu/snapshots/st-candid_follow/00001.png and b/tests_zemu/snapshots/st-candid_follow/00001.png differ diff --git a/tests_zemu/snapshots/st-candid_follow/00002.png b/tests_zemu/snapshots/st-candid_follow/00002.png index ebf627d0..c163dc42 100644 Binary files a/tests_zemu/snapshots/st-candid_follow/00002.png and b/tests_zemu/snapshots/st-candid_follow/00002.png differ diff --git a/tests_zemu/snapshots/st-candid_follow/00003.png b/tests_zemu/snapshots/st-candid_follow/00003.png index ec1aef6e..caadee78 100644 Binary files a/tests_zemu/snapshots/st-candid_follow/00003.png and b/tests_zemu/snapshots/st-candid_follow/00003.png differ diff --git a/tests_zemu/snapshots/st-candid_follow/00004.png b/tests_zemu/snapshots/st-candid_follow/00004.png index bf582528..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-candid_follow/00004.png and b/tests_zemu/snapshots/st-candid_follow/00004.png differ diff --git a/tests_zemu/snapshots/st-candid_increase_dissolve_delay/00000.png b/tests_zemu/snapshots/st-candid_increase_dissolve_delay/00000.png index b9bb14c4..98a949b2 100644 Binary files a/tests_zemu/snapshots/st-candid_increase_dissolve_delay/00000.png and b/tests_zemu/snapshots/st-candid_increase_dissolve_delay/00000.png differ diff --git a/tests_zemu/snapshots/st-candid_increase_dissolve_delay/00001.png b/tests_zemu/snapshots/st-candid_increase_dissolve_delay/00001.png index 1a7408f5..88214a28 100644 Binary files a/tests_zemu/snapshots/st-candid_increase_dissolve_delay/00001.png and b/tests_zemu/snapshots/st-candid_increase_dissolve_delay/00001.png differ diff --git a/tests_zemu/snapshots/st-candid_increase_dissolve_delay/00002.png b/tests_zemu/snapshots/st-candid_increase_dissolve_delay/00002.png index 846218ba..60a3488e 100644 Binary files a/tests_zemu/snapshots/st-candid_increase_dissolve_delay/00002.png and b/tests_zemu/snapshots/st-candid_increase_dissolve_delay/00002.png differ diff --git a/tests_zemu/snapshots/st-candid_increase_dissolve_delay/00003.png b/tests_zemu/snapshots/st-candid_increase_dissolve_delay/00003.png index bf582528..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-candid_increase_dissolve_delay/00003.png and b/tests_zemu/snapshots/st-candid_increase_dissolve_delay/00003.png differ diff --git a/tests_zemu/snapshots/st-candid_list_neurons/00000.png b/tests_zemu/snapshots/st-candid_list_neurons/00000.png index b9bb14c4..98a949b2 100644 Binary files a/tests_zemu/snapshots/st-candid_list_neurons/00000.png and b/tests_zemu/snapshots/st-candid_list_neurons/00000.png differ diff --git a/tests_zemu/snapshots/st-candid_list_neurons/00001.png b/tests_zemu/snapshots/st-candid_list_neurons/00001.png index 3b02d94b..a867eb57 100644 Binary files a/tests_zemu/snapshots/st-candid_list_neurons/00001.png and b/tests_zemu/snapshots/st-candid_list_neurons/00001.png differ diff --git a/tests_zemu/snapshots/st-candid_list_neurons/00002.png b/tests_zemu/snapshots/st-candid_list_neurons/00002.png index 846218ba..60a3488e 100644 Binary files a/tests_zemu/snapshots/st-candid_list_neurons/00002.png and b/tests_zemu/snapshots/st-candid_list_neurons/00002.png differ diff --git a/tests_zemu/snapshots/st-candid_list_neurons/00003.png b/tests_zemu/snapshots/st-candid_list_neurons/00003.png index bf582528..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-candid_list_neurons/00003.png and b/tests_zemu/snapshots/st-candid_list_neurons/00003.png differ diff --git a/tests_zemu/snapshots/st-candid_merge_neuron/00000.png b/tests_zemu/snapshots/st-candid_merge_neuron/00000.png index b9bb14c4..98a949b2 100644 Binary files a/tests_zemu/snapshots/st-candid_merge_neuron/00000.png and b/tests_zemu/snapshots/st-candid_merge_neuron/00000.png differ diff --git a/tests_zemu/snapshots/st-candid_merge_neuron/00001.png b/tests_zemu/snapshots/st-candid_merge_neuron/00001.png index d6f6b047..b794ca46 100644 Binary files a/tests_zemu/snapshots/st-candid_merge_neuron/00001.png and b/tests_zemu/snapshots/st-candid_merge_neuron/00001.png differ diff --git a/tests_zemu/snapshots/st-candid_merge_neuron/00002.png b/tests_zemu/snapshots/st-candid_merge_neuron/00002.png index 846218ba..60a3488e 100644 Binary files a/tests_zemu/snapshots/st-candid_merge_neuron/00002.png and b/tests_zemu/snapshots/st-candid_merge_neuron/00002.png differ diff --git a/tests_zemu/snapshots/st-candid_merge_neuron/00003.png b/tests_zemu/snapshots/st-candid_merge_neuron/00003.png index bf582528..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-candid_merge_neuron/00003.png and b/tests_zemu/snapshots/st-candid_merge_neuron/00003.png differ diff --git a/tests_zemu/snapshots/st-candid_register_vote/00000.png b/tests_zemu/snapshots/st-candid_register_vote/00000.png index b9bb14c4..98a949b2 100644 Binary files a/tests_zemu/snapshots/st-candid_register_vote/00000.png and b/tests_zemu/snapshots/st-candid_register_vote/00000.png differ diff --git a/tests_zemu/snapshots/st-candid_register_vote/00001.png b/tests_zemu/snapshots/st-candid_register_vote/00001.png index 63a68903..924079e1 100644 Binary files a/tests_zemu/snapshots/st-candid_register_vote/00001.png and b/tests_zemu/snapshots/st-candid_register_vote/00001.png differ diff --git a/tests_zemu/snapshots/st-candid_register_vote/00002.png b/tests_zemu/snapshots/st-candid_register_vote/00002.png index 846218ba..60a3488e 100644 Binary files a/tests_zemu/snapshots/st-candid_register_vote/00002.png and b/tests_zemu/snapshots/st-candid_register_vote/00002.png differ diff --git a/tests_zemu/snapshots/st-candid_register_vote/00003.png b/tests_zemu/snapshots/st-candid_register_vote/00003.png index bf582528..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-candid_register_vote/00003.png and b/tests_zemu/snapshots/st-candid_register_vote/00003.png differ diff --git a/tests_zemu/snapshots/st-candid_send_icp/00000.png b/tests_zemu/snapshots/st-candid_send_icp/00000.png index b9bb14c4..203fad92 100644 Binary files a/tests_zemu/snapshots/st-candid_send_icp/00000.png and b/tests_zemu/snapshots/st-candid_send_icp/00000.png differ diff --git a/tests_zemu/snapshots/st-candid_send_icp/00001.png b/tests_zemu/snapshots/st-candid_send_icp/00001.png index a6605b1c..a9a2ac11 100644 Binary files a/tests_zemu/snapshots/st-candid_send_icp/00001.png and b/tests_zemu/snapshots/st-candid_send_icp/00001.png differ diff --git a/tests_zemu/snapshots/st-candid_send_icp/00002.png b/tests_zemu/snapshots/st-candid_send_icp/00002.png index a6217bc1..6080c034 100644 Binary files a/tests_zemu/snapshots/st-candid_send_icp/00002.png and b/tests_zemu/snapshots/st-candid_send_icp/00002.png differ diff --git a/tests_zemu/snapshots/st-candid_send_icp/00003.png b/tests_zemu/snapshots/st-candid_send_icp/00003.png index 0a7a0ab6..caadee78 100644 Binary files a/tests_zemu/snapshots/st-candid_send_icp/00003.png and b/tests_zemu/snapshots/st-candid_send_icp/00003.png differ diff --git a/tests_zemu/snapshots/st-candid_send_icp/00004.png b/tests_zemu/snapshots/st-candid_send_icp/00004.png index 3f259bab..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-candid_send_icp/00004.png and b/tests_zemu/snapshots/st-candid_send_icp/00004.png differ diff --git a/tests_zemu/snapshots/st-candid_set_dissolve_delay/00000.png b/tests_zemu/snapshots/st-candid_set_dissolve_delay/00000.png index b9bb14c4..98a949b2 100644 Binary files a/tests_zemu/snapshots/st-candid_set_dissolve_delay/00000.png and b/tests_zemu/snapshots/st-candid_set_dissolve_delay/00000.png differ diff --git a/tests_zemu/snapshots/st-candid_set_dissolve_delay/00001.png b/tests_zemu/snapshots/st-candid_set_dissolve_delay/00001.png index e70e100a..ce3f47df 100644 Binary files a/tests_zemu/snapshots/st-candid_set_dissolve_delay/00001.png and b/tests_zemu/snapshots/st-candid_set_dissolve_delay/00001.png differ diff --git a/tests_zemu/snapshots/st-candid_set_dissolve_delay/00002.png b/tests_zemu/snapshots/st-candid_set_dissolve_delay/00002.png index 846218ba..60a3488e 100644 Binary files a/tests_zemu/snapshots/st-candid_set_dissolve_delay/00002.png and b/tests_zemu/snapshots/st-candid_set_dissolve_delay/00002.png differ diff --git a/tests_zemu/snapshots/st-candid_set_dissolve_delay/00003.png b/tests_zemu/snapshots/st-candid_set_dissolve_delay/00003.png index bf582528..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-candid_set_dissolve_delay/00003.png and b/tests_zemu/snapshots/st-candid_set_dissolve_delay/00003.png differ diff --git a/tests_zemu/snapshots/st-candid_spawn_neuron/00000.png b/tests_zemu/snapshots/st-candid_spawn_neuron/00000.png index b9bb14c4..203fad92 100644 Binary files a/tests_zemu/snapshots/st-candid_spawn_neuron/00000.png and b/tests_zemu/snapshots/st-candid_spawn_neuron/00000.png differ diff --git a/tests_zemu/snapshots/st-candid_spawn_neuron/00001.png b/tests_zemu/snapshots/st-candid_spawn_neuron/00001.png index ba531ac7..8a49ef46 100644 Binary files a/tests_zemu/snapshots/st-candid_spawn_neuron/00001.png and b/tests_zemu/snapshots/st-candid_spawn_neuron/00001.png differ diff --git a/tests_zemu/snapshots/st-candid_spawn_neuron/00002.png b/tests_zemu/snapshots/st-candid_spawn_neuron/00002.png index a16e16e5..2a7cb7d2 100644 Binary files a/tests_zemu/snapshots/st-candid_spawn_neuron/00002.png and b/tests_zemu/snapshots/st-candid_spawn_neuron/00002.png differ diff --git a/tests_zemu/snapshots/st-candid_spawn_neuron/00003.png b/tests_zemu/snapshots/st-candid_spawn_neuron/00003.png index ec1aef6e..caadee78 100644 Binary files a/tests_zemu/snapshots/st-candid_spawn_neuron/00003.png and b/tests_zemu/snapshots/st-candid_spawn_neuron/00003.png differ diff --git a/tests_zemu/snapshots/st-candid_spawn_neuron/00004.png b/tests_zemu/snapshots/st-candid_spawn_neuron/00004.png index bf582528..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-candid_spawn_neuron/00004.png and b/tests_zemu/snapshots/st-candid_spawn_neuron/00004.png differ diff --git a/tests_zemu/snapshots/st-candid_split_neuron/00000.png b/tests_zemu/snapshots/st-candid_split_neuron/00000.png index b9bb14c4..98a949b2 100644 Binary files a/tests_zemu/snapshots/st-candid_split_neuron/00000.png and b/tests_zemu/snapshots/st-candid_split_neuron/00000.png differ diff --git a/tests_zemu/snapshots/st-candid_split_neuron/00001.png b/tests_zemu/snapshots/st-candid_split_neuron/00001.png index ab350c05..d082adfd 100644 Binary files a/tests_zemu/snapshots/st-candid_split_neuron/00001.png and b/tests_zemu/snapshots/st-candid_split_neuron/00001.png differ diff --git a/tests_zemu/snapshots/st-candid_split_neuron/00002.png b/tests_zemu/snapshots/st-candid_split_neuron/00002.png index 846218ba..60a3488e 100644 Binary files a/tests_zemu/snapshots/st-candid_split_neuron/00002.png and b/tests_zemu/snapshots/st-candid_split_neuron/00002.png differ diff --git a/tests_zemu/snapshots/st-candid_split_neuron/00003.png b/tests_zemu/snapshots/st-candid_split_neuron/00003.png index bf582528..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-candid_split_neuron/00003.png and b/tests_zemu/snapshots/st-candid_split_neuron/00003.png differ diff --git a/tests_zemu/snapshots/st-candid_stake_icrc_expert/00000.png b/tests_zemu/snapshots/st-candid_stake_icrc_expert/00000.png index b9bb14c4..203fad92 100644 Binary files a/tests_zemu/snapshots/st-candid_stake_icrc_expert/00000.png and b/tests_zemu/snapshots/st-candid_stake_icrc_expert/00000.png differ diff --git a/tests_zemu/snapshots/st-candid_stake_icrc_expert/00001.png b/tests_zemu/snapshots/st-candid_stake_icrc_expert/00001.png index 5c9c3a2a..b89d2164 100644 Binary files a/tests_zemu/snapshots/st-candid_stake_icrc_expert/00001.png and b/tests_zemu/snapshots/st-candid_stake_icrc_expert/00001.png differ diff --git a/tests_zemu/snapshots/st-candid_stake_icrc_expert/00002.png b/tests_zemu/snapshots/st-candid_stake_icrc_expert/00002.png index 4f9f9b19..99eb8a53 100644 Binary files a/tests_zemu/snapshots/st-candid_stake_icrc_expert/00002.png and b/tests_zemu/snapshots/st-candid_stake_icrc_expert/00002.png differ diff --git a/tests_zemu/snapshots/st-candid_stake_icrc_expert/00003.png b/tests_zemu/snapshots/st-candid_stake_icrc_expert/00003.png index ec1aef6e..caadee78 100644 Binary files a/tests_zemu/snapshots/st-candid_stake_icrc_expert/00003.png and b/tests_zemu/snapshots/st-candid_stake_icrc_expert/00003.png differ diff --git a/tests_zemu/snapshots/st-candid_stake_icrc_expert/00004.png b/tests_zemu/snapshots/st-candid_stake_icrc_expert/00004.png index bf582528..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-candid_stake_icrc_expert/00004.png and b/tests_zemu/snapshots/st-candid_stake_icrc_expert/00004.png differ diff --git a/tests_zemu/snapshots/st-candid_stake_maturity/00000.png b/tests_zemu/snapshots/st-candid_stake_maturity/00000.png index b9bb14c4..98a949b2 100644 Binary files a/tests_zemu/snapshots/st-candid_stake_maturity/00000.png and b/tests_zemu/snapshots/st-candid_stake_maturity/00000.png differ diff --git a/tests_zemu/snapshots/st-candid_stake_maturity/00001.png b/tests_zemu/snapshots/st-candid_stake_maturity/00001.png index 051771c1..68026ca4 100644 Binary files a/tests_zemu/snapshots/st-candid_stake_maturity/00001.png and b/tests_zemu/snapshots/st-candid_stake_maturity/00001.png differ diff --git a/tests_zemu/snapshots/st-candid_stake_maturity/00002.png b/tests_zemu/snapshots/st-candid_stake_maturity/00002.png index 846218ba..60a3488e 100644 Binary files a/tests_zemu/snapshots/st-candid_stake_maturity/00002.png and b/tests_zemu/snapshots/st-candid_stake_maturity/00002.png differ diff --git a/tests_zemu/snapshots/st-candid_stake_maturity/00003.png b/tests_zemu/snapshots/st-candid_stake_maturity/00003.png index bf582528..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-candid_stake_maturity/00003.png and b/tests_zemu/snapshots/st-candid_stake_maturity/00003.png differ diff --git a/tests_zemu/snapshots/st-candid_stake_neuron_expert/00000.png b/tests_zemu/snapshots/st-candid_stake_neuron_expert/00000.png index b9bb14c4..203fad92 100644 Binary files a/tests_zemu/snapshots/st-candid_stake_neuron_expert/00000.png and b/tests_zemu/snapshots/st-candid_stake_neuron_expert/00000.png differ diff --git a/tests_zemu/snapshots/st-candid_stake_neuron_expert/00001.png b/tests_zemu/snapshots/st-candid_stake_neuron_expert/00001.png index 3f903181..f3d121c1 100644 Binary files a/tests_zemu/snapshots/st-candid_stake_neuron_expert/00001.png and b/tests_zemu/snapshots/st-candid_stake_neuron_expert/00001.png differ diff --git a/tests_zemu/snapshots/st-candid_stake_neuron_expert/00002.png b/tests_zemu/snapshots/st-candid_stake_neuron_expert/00002.png index b07bca49..537ecc9d 100644 Binary files a/tests_zemu/snapshots/st-candid_stake_neuron_expert/00002.png and b/tests_zemu/snapshots/st-candid_stake_neuron_expert/00002.png differ diff --git a/tests_zemu/snapshots/st-candid_stake_neuron_expert/00003.png b/tests_zemu/snapshots/st-candid_stake_neuron_expert/00003.png index fa489624..caadee78 100644 Binary files a/tests_zemu/snapshots/st-candid_stake_neuron_expert/00003.png and b/tests_zemu/snapshots/st-candid_stake_neuron_expert/00003.png differ diff --git a/tests_zemu/snapshots/st-candid_stake_neuron_expert/00004.png b/tests_zemu/snapshots/st-candid_stake_neuron_expert/00004.png index 147991cd..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-candid_stake_neuron_expert/00004.png and b/tests_zemu/snapshots/st-candid_stake_neuron_expert/00004.png differ diff --git a/tests_zemu/snapshots/st-icrc_transfer/00000.png b/tests_zemu/snapshots/st-icrc_transfer/00000.png index b9bb14c4..5c6753f4 100644 Binary files a/tests_zemu/snapshots/st-icrc_transfer/00000.png and b/tests_zemu/snapshots/st-icrc_transfer/00000.png differ diff --git a/tests_zemu/snapshots/st-icrc_transfer/00001.png b/tests_zemu/snapshots/st-icrc_transfer/00001.png index b6b888d8..d9569b80 100644 Binary files a/tests_zemu/snapshots/st-icrc_transfer/00001.png and b/tests_zemu/snapshots/st-icrc_transfer/00001.png differ diff --git a/tests_zemu/snapshots/st-icrc_transfer/00002.png b/tests_zemu/snapshots/st-icrc_transfer/00002.png index de91d40b..5ed3ffeb 100644 Binary files a/tests_zemu/snapshots/st-icrc_transfer/00002.png and b/tests_zemu/snapshots/st-icrc_transfer/00002.png differ diff --git a/tests_zemu/snapshots/st-icrc_transfer/00003.png b/tests_zemu/snapshots/st-icrc_transfer/00003.png index aee04134..e2d36f60 100644 Binary files a/tests_zemu/snapshots/st-icrc_transfer/00003.png and b/tests_zemu/snapshots/st-icrc_transfer/00003.png differ diff --git a/tests_zemu/snapshots/st-icrc_transfer/00004.png b/tests_zemu/snapshots/st-icrc_transfer/00004.png index e484c5c3..bd7b776d 100644 Binary files a/tests_zemu/snapshots/st-icrc_transfer/00004.png and b/tests_zemu/snapshots/st-icrc_transfer/00004.png differ diff --git a/tests_zemu/snapshots/st-icrc_transfer/00005.png b/tests_zemu/snapshots/st-icrc_transfer/00005.png index 5325d61f..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-icrc_transfer/00005.png and b/tests_zemu/snapshots/st-icrc_transfer/00005.png differ diff --git a/tests_zemu/snapshots/st-mainmenu/00000.png b/tests_zemu/snapshots/st-mainmenu/00000.png index bf582528..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-mainmenu/00000.png and b/tests_zemu/snapshots/st-mainmenu/00000.png differ diff --git a/tests_zemu/snapshots/st-mainmenu/00001.png b/tests_zemu/snapshots/st-mainmenu/00001.png index 38a93e73..f6682071 100644 Binary files a/tests_zemu/snapshots/st-mainmenu/00001.png and b/tests_zemu/snapshots/st-mainmenu/00001.png differ diff --git a/tests_zemu/snapshots/st-mainmenu/00002.png b/tests_zemu/snapshots/st-mainmenu/00002.png index f96363a2..d7665cd1 100644 Binary files a/tests_zemu/snapshots/st-mainmenu/00002.png and b/tests_zemu/snapshots/st-mainmenu/00002.png differ diff --git a/tests_zemu/snapshots/st-mainmenu/00003.png b/tests_zemu/snapshots/st-mainmenu/00003.png index 0091b43c..f6682071 100644 Binary files a/tests_zemu/snapshots/st-mainmenu/00003.png and b/tests_zemu/snapshots/st-mainmenu/00003.png differ diff --git a/tests_zemu/snapshots/st-mainmenu/00004.png b/tests_zemu/snapshots/st-mainmenu/00004.png index f96363a2..b05b3ba1 100644 Binary files a/tests_zemu/snapshots/st-mainmenu/00004.png and b/tests_zemu/snapshots/st-mainmenu/00004.png differ diff --git a/tests_zemu/snapshots/st-mainmenu/00005.png b/tests_zemu/snapshots/st-mainmenu/00005.png index bf582528..8b3fdb58 100644 Binary files a/tests_zemu/snapshots/st-mainmenu/00005.png and b/tests_zemu/snapshots/st-mainmenu/00005.png differ diff --git a/tests_zemu/snapshots/st-mainmenu/00006.png b/tests_zemu/snapshots/st-mainmenu/00006.png new file mode 100644 index 00000000..4320cd45 Binary files /dev/null and b/tests_zemu/snapshots/st-mainmenu/00006.png differ diff --git a/tests_zemu/snapshots/st-show_address/00000.png b/tests_zemu/snapshots/st-show_address/00000.png index b57c1cce..67b54eb2 100644 Binary files a/tests_zemu/snapshots/st-show_address/00000.png and b/tests_zemu/snapshots/st-show_address/00000.png differ diff --git a/tests_zemu/snapshots/st-show_address/00001.png b/tests_zemu/snapshots/st-show_address/00001.png index 49c617ae..0b89c950 100644 Binary files a/tests_zemu/snapshots/st-show_address/00001.png and b/tests_zemu/snapshots/st-show_address/00001.png differ diff --git a/tests_zemu/snapshots/st-show_address/00002.png b/tests_zemu/snapshots/st-show_address/00002.png index edcccdda..0a040f1f 100644 Binary files a/tests_zemu/snapshots/st-show_address/00002.png and b/tests_zemu/snapshots/st-show_address/00002.png differ diff --git a/tests_zemu/snapshots/st-show_address/00003.png b/tests_zemu/snapshots/st-show_address/00003.png index bf582528..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-show_address/00003.png and b/tests_zemu/snapshots/st-show_address/00003.png differ diff --git a/tests_zemu/snapshots/st-show_address_reject/00000.png b/tests_zemu/snapshots/st-show_address_reject/00000.png index b57c1cce..67b54eb2 100644 Binary files a/tests_zemu/snapshots/st-show_address_reject/00000.png and b/tests_zemu/snapshots/st-show_address_reject/00000.png differ diff --git a/tests_zemu/snapshots/st-show_address_reject/00001.png b/tests_zemu/snapshots/st-show_address_reject/00001.png index 49c617ae..0b89c950 100644 Binary files a/tests_zemu/snapshots/st-show_address_reject/00001.png and b/tests_zemu/snapshots/st-show_address_reject/00001.png differ diff --git a/tests_zemu/snapshots/st-show_address_reject/00002.png b/tests_zemu/snapshots/st-show_address_reject/00002.png index edcccdda..0a040f1f 100644 Binary files a/tests_zemu/snapshots/st-show_address_reject/00002.png and b/tests_zemu/snapshots/st-show_address_reject/00002.png differ diff --git a/tests_zemu/snapshots/st-show_address_reject/00003.png b/tests_zemu/snapshots/st-show_address_reject/00003.png index 8c5f472e..94c91bb6 100644 Binary files a/tests_zemu/snapshots/st-show_address_reject/00003.png and b/tests_zemu/snapshots/st-show_address_reject/00003.png differ diff --git a/tests_zemu/snapshots/st-show_address_reject/00004.png b/tests_zemu/snapshots/st-show_address_reject/00004.png index bf582528..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-show_address_reject/00004.png and b/tests_zemu/snapshots/st-show_address_reject/00004.png differ diff --git a/tests_zemu/snapshots/st-sns_add_permissions/00000.png b/tests_zemu/snapshots/st-sns_add_permissions/00000.png index b9bb14c4..203fad92 100644 Binary files a/tests_zemu/snapshots/st-sns_add_permissions/00000.png and b/tests_zemu/snapshots/st-sns_add_permissions/00000.png differ diff --git a/tests_zemu/snapshots/st-sns_add_permissions/00001.png b/tests_zemu/snapshots/st-sns_add_permissions/00001.png index 0d369b9e..87b51138 100644 Binary files a/tests_zemu/snapshots/st-sns_add_permissions/00001.png and b/tests_zemu/snapshots/st-sns_add_permissions/00001.png differ diff --git a/tests_zemu/snapshots/st-sns_add_permissions/00002.png b/tests_zemu/snapshots/st-sns_add_permissions/00002.png index c9b5bcf9..74c0ca05 100644 Binary files a/tests_zemu/snapshots/st-sns_add_permissions/00002.png and b/tests_zemu/snapshots/st-sns_add_permissions/00002.png differ diff --git a/tests_zemu/snapshots/st-sns_add_permissions/00003.png b/tests_zemu/snapshots/st-sns_add_permissions/00003.png index 9843a265..caadee78 100644 Binary files a/tests_zemu/snapshots/st-sns_add_permissions/00003.png and b/tests_zemu/snapshots/st-sns_add_permissions/00003.png differ diff --git a/tests_zemu/snapshots/st-sns_add_permissions/00004.png b/tests_zemu/snapshots/st-sns_add_permissions/00004.png index 838bfc25..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-sns_add_permissions/00004.png and b/tests_zemu/snapshots/st-sns_add_permissions/00004.png differ diff --git a/tests_zemu/snapshots/st-sns_disburse/00000.png b/tests_zemu/snapshots/st-sns_disburse/00000.png index b9bb14c4..203fad92 100644 Binary files a/tests_zemu/snapshots/st-sns_disburse/00000.png and b/tests_zemu/snapshots/st-sns_disburse/00000.png differ diff --git a/tests_zemu/snapshots/st-sns_disburse/00001.png b/tests_zemu/snapshots/st-sns_disburse/00001.png index 87f01633..d3e12e36 100644 Binary files a/tests_zemu/snapshots/st-sns_disburse/00001.png and b/tests_zemu/snapshots/st-sns_disburse/00001.png differ diff --git a/tests_zemu/snapshots/st-sns_disburse/00002.png b/tests_zemu/snapshots/st-sns_disburse/00002.png index c9b5bcf9..879e4d2e 100644 Binary files a/tests_zemu/snapshots/st-sns_disburse/00002.png and b/tests_zemu/snapshots/st-sns_disburse/00002.png differ diff --git a/tests_zemu/snapshots/st-sns_disburse/00003.png b/tests_zemu/snapshots/st-sns_disburse/00003.png index af4d8b38..caadee78 100644 Binary files a/tests_zemu/snapshots/st-sns_disburse/00003.png and b/tests_zemu/snapshots/st-sns_disburse/00003.png differ diff --git a/tests_zemu/snapshots/st-sns_disburse/00004.png b/tests_zemu/snapshots/st-sns_disburse/00004.png index 2bd83d1a..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-sns_disburse/00004.png and b/tests_zemu/snapshots/st-sns_disburse/00004.png differ diff --git a/tests_zemu/snapshots/st-sns_remove_permissions/00000.png b/tests_zemu/snapshots/st-sns_remove_permissions/00000.png index b9bb14c4..203fad92 100644 Binary files a/tests_zemu/snapshots/st-sns_remove_permissions/00000.png and b/tests_zemu/snapshots/st-sns_remove_permissions/00000.png differ diff --git a/tests_zemu/snapshots/st-sns_remove_permissions/00001.png b/tests_zemu/snapshots/st-sns_remove_permissions/00001.png index a189d2f7..058b55d6 100644 Binary files a/tests_zemu/snapshots/st-sns_remove_permissions/00001.png and b/tests_zemu/snapshots/st-sns_remove_permissions/00001.png differ diff --git a/tests_zemu/snapshots/st-sns_remove_permissions/00002.png b/tests_zemu/snapshots/st-sns_remove_permissions/00002.png index 168e7cf9..b908c4c1 100644 Binary files a/tests_zemu/snapshots/st-sns_remove_permissions/00002.png and b/tests_zemu/snapshots/st-sns_remove_permissions/00002.png differ diff --git a/tests_zemu/snapshots/st-sns_remove_permissions/00003.png b/tests_zemu/snapshots/st-sns_remove_permissions/00003.png index 2ce7f548..caadee78 100644 Binary files a/tests_zemu/snapshots/st-sns_remove_permissions/00003.png and b/tests_zemu/snapshots/st-sns_remove_permissions/00003.png differ diff --git a/tests_zemu/snapshots/st-sns_remove_permissions/00004.png b/tests_zemu/snapshots/st-sns_remove_permissions/00004.png index 1aa2b3d0..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-sns_remove_permissions/00004.png and b/tests_zemu/snapshots/st-sns_remove_permissions/00004.png differ diff --git a/tests_zemu/snapshots/st-sns_stake_maturity/00000.png b/tests_zemu/snapshots/st-sns_stake_maturity/00000.png index b9bb14c4..98a949b2 100644 Binary files a/tests_zemu/snapshots/st-sns_stake_maturity/00000.png and b/tests_zemu/snapshots/st-sns_stake_maturity/00000.png differ diff --git a/tests_zemu/snapshots/st-sns_stake_maturity/00001.png b/tests_zemu/snapshots/st-sns_stake_maturity/00001.png index ed1f1e7b..df3a4bd6 100644 Binary files a/tests_zemu/snapshots/st-sns_stake_maturity/00001.png and b/tests_zemu/snapshots/st-sns_stake_maturity/00001.png differ diff --git a/tests_zemu/snapshots/st-sns_stake_maturity/00002.png b/tests_zemu/snapshots/st-sns_stake_maturity/00002.png index afbb879d..60a3488e 100644 Binary files a/tests_zemu/snapshots/st-sns_stake_maturity/00002.png and b/tests_zemu/snapshots/st-sns_stake_maturity/00002.png differ diff --git a/tests_zemu/snapshots/st-sns_stake_maturity/00003.png b/tests_zemu/snapshots/st-sns_stake_maturity/00003.png index ec1aef6e..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-sns_stake_maturity/00003.png and b/tests_zemu/snapshots/st-sns_stake_maturity/00003.png differ diff --git a/tests_zemu/snapshots/st-sns_start_dissolve/00000.png b/tests_zemu/snapshots/st-sns_start_dissolve/00000.png index b9bb14c4..98a949b2 100644 Binary files a/tests_zemu/snapshots/st-sns_start_dissolve/00000.png and b/tests_zemu/snapshots/st-sns_start_dissolve/00000.png differ diff --git a/tests_zemu/snapshots/st-sns_start_dissolve/00001.png b/tests_zemu/snapshots/st-sns_start_dissolve/00001.png index 64b090c7..c0c896d9 100644 Binary files a/tests_zemu/snapshots/st-sns_start_dissolve/00001.png and b/tests_zemu/snapshots/st-sns_start_dissolve/00001.png differ diff --git a/tests_zemu/snapshots/st-sns_start_dissolve/00002.png b/tests_zemu/snapshots/st-sns_start_dissolve/00002.png index 25489ede..60a3488e 100644 Binary files a/tests_zemu/snapshots/st-sns_start_dissolve/00002.png and b/tests_zemu/snapshots/st-sns_start_dissolve/00002.png differ diff --git a/tests_zemu/snapshots/st-sns_start_dissolve/00003.png b/tests_zemu/snapshots/st-sns_start_dissolve/00003.png index ec1aef6e..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-sns_start_dissolve/00003.png and b/tests_zemu/snapshots/st-sns_start_dissolve/00003.png differ diff --git a/tests_zemu/snapshots/st-sns_stop_dissolve/00000.png b/tests_zemu/snapshots/st-sns_stop_dissolve/00000.png index b9bb14c4..98a949b2 100644 Binary files a/tests_zemu/snapshots/st-sns_stop_dissolve/00000.png and b/tests_zemu/snapshots/st-sns_stop_dissolve/00000.png differ diff --git a/tests_zemu/snapshots/st-sns_stop_dissolve/00001.png b/tests_zemu/snapshots/st-sns_stop_dissolve/00001.png index 19a0fdb0..89849cec 100644 Binary files a/tests_zemu/snapshots/st-sns_stop_dissolve/00001.png and b/tests_zemu/snapshots/st-sns_stop_dissolve/00001.png differ diff --git a/tests_zemu/snapshots/st-sns_stop_dissolve/00002.png b/tests_zemu/snapshots/st-sns_stop_dissolve/00002.png index 2ed51284..60a3488e 100644 Binary files a/tests_zemu/snapshots/st-sns_stop_dissolve/00002.png and b/tests_zemu/snapshots/st-sns_stop_dissolve/00002.png differ diff --git a/tests_zemu/snapshots/st-sns_stop_dissolve/00003.png b/tests_zemu/snapshots/st-sns_stop_dissolve/00003.png index ec1aef6e..4320cd45 100644 Binary files a/tests_zemu/snapshots/st-sns_stop_dissolve/00003.png and b/tests_zemu/snapshots/st-sns_stop_dissolve/00003.png differ diff --git a/tests_zemu/snapshots/x-mainmenu/00004.png b/tests_zemu/snapshots/x-mainmenu/00004.png index f4f21279..3a93f218 100644 Binary files a/tests_zemu/snapshots/x-mainmenu/00004.png and b/tests_zemu/snapshots/x-mainmenu/00004.png differ diff --git a/tests_zemu/snapshots/x-mainmenu/00010.png b/tests_zemu/snapshots/x-mainmenu/00010.png index f4f21279..3a93f218 100644 Binary files a/tests_zemu/snapshots/x-mainmenu/00010.png and b/tests_zemu/snapshots/x-mainmenu/00010.png differ diff --git a/tests_zemu/tests/addresses.test.ts b/tests_zemu/tests/addresses.test.ts index d7a28987..e1b3ff56 100644 --- a/tests_zemu/tests/addresses.test.ts +++ b/tests_zemu/tests/addresses.test.ts @@ -14,7 +14,7 @@ * limitations under the License. ******************************************************************************* */ -import Zemu from '@zondax/zemu' +import Zemu, { isTouchDevice } from '@zondax/zemu' import InternetComputerApp from '@zondax/ledger-icp' import { DEFAULT_OPTIONS, DEVICE_MODELS } from './common' @@ -81,7 +81,7 @@ describe('Addresses', function () { } try { - await sim.start({ ...defaultOptions_withseed, model: m.name, startText: m.name === 'stax' ? '' : 'Computer' }) + await sim.start({ ...defaultOptions_withseed, model: m.name, startText: isTouchDevice(m.name) ? '' : 'Computer' }) const app = new InternetComputerApp(sim.getTransport()) const resp = await app.getAddressAndPubKey("m/44'/223'/0'/0/0") @@ -102,7 +102,7 @@ describe('Addresses', function () { test.concurrent.each(DEVICE_MODELS)('derivation paths', async function (m) { const sim = new Zemu(m.path) try { - await sim.start({ ...DEFAULT_OPTIONS, model: m.name, startText: m.name === 'stax' ? '' : 'Computer' }) + await sim.start({ ...DEFAULT_OPTIONS, model: m.name, startText: isTouchDevice(m.name) ? '' : 'Computer' }) const app = new InternetComputerApp(sim.getTransport()) for (const TEST of TEST_CASES_BIP32) { diff --git a/tests_zemu/tests/candid.test.ts b/tests_zemu/tests/candid.test.ts index 8ae4aea5..52aab38d 100644 --- a/tests_zemu/tests/candid.test.ts +++ b/tests_zemu/tests/candid.test.ts @@ -16,7 +16,7 @@ ******************************************************************************* */ import InternetComputerApp, { SIGN_VALUES_P2 } from '@zondax/ledger-icp' -import Zemu from '@zondax/zemu' +import Zemu, { isTouchDevice } from '@zondax/zemu' import { sha256 } from 'js-sha256' import * as secp256k1 from 'secp256k1' @@ -59,7 +59,7 @@ const CANDID_TRANSACTIONS = [ }, { name: 'candid_list_neurons', - blob: 'd9d9f7a167636f6e74656e74a66361726758294449444c026d786c02acbe9cc50700dabcd1c70d7e01010200c8c056ea395dd500406c4830c8a17a006b63616e69737465725f69644a000000000000000101016e696e67726573735f6578706972791b172cfa0381138f406b6d6574686f645f6e616d656c6c6973745f6e6575726f6e736c726571756573745f747970656463616c6c6673656e646572581d19aa3d42c048dd7d14f0cfa0df69a1c1381780f6e9a137abaa6a82e302', + blob: 'd9d9f7a167636f6e74656e74a66361726758334449444c036d786e7e6c03acbe9cc50700ccd2d3bf0c01dabcd1c70d7e01020200c8c056ea395dd500406c4830c8a17a0101006b63616e69737465725f69644a000000000000000101016e696e67726573735f6578706972791b17e4dd23029fe8006b6d6574686f645f6e616d656c6c6973745f6e6575726f6e736c726571756573745f747970656463616c6c6673656e646572581d19aa3d42c048dd7d14f0cfa0df69a1c1381780f6e9a137abaa6a82e302', }, { name: 'candid_stake_maturity', @@ -119,7 +119,7 @@ describe.each(CANDID_TRANSACTIONS)('CANDID_SNS_ICRC', function (data) { test.concurrent.each(DEVICE_MODELS)(`Test: ${data.name}`, async function (m) { const sim = new Zemu(m.path) try { - await sim.start({ ...DEFAULT_OPTIONS, model: m.name, startText: m.name === 'stax' ? '' : 'Computer' }) + await sim.start({ ...DEFAULT_OPTIONS, model: m.name, startText: isTouchDevice(m.name) ? '' : 'Computer' }) const app = new InternetComputerApp(sim.getTransport()) const respAddr = await app.getAddressAndPubKey(path) @@ -162,7 +162,7 @@ describe.each(STAKE_TXS)('CANDID_STAKE', function (data) { test.concurrent.each(DEVICE_MODELS)(`Test: ${data.name}`, async function (m) { const sim = new Zemu(m.path) try { - await sim.start({ ...DEFAULT_OPTIONS, model: m.name, startText: m.name === 'stax' ? '' : 'Computer' }) + await sim.start({ ...DEFAULT_OPTIONS, model: m.name, startText: isTouchDevice(m.name) ? '' : 'Computer' }) const app = new InternetComputerApp(sim.getTransport()) await sim.toggleExpertMode() diff --git a/tests_zemu/tests/common.ts b/tests_zemu/tests/common.ts index 4c3029aa..ae28b1b7 100644 --- a/tests_zemu/tests/common.ts +++ b/tests_zemu/tests/common.ts @@ -5,6 +5,7 @@ const APP_PATH_S = resolve('../app/output/app_s.elf') const APP_PATH_X = resolve('../app/output/app_x.elf') const APP_PATH_SP = resolve('../app/output/app_s2.elf') const APP_PATH_ST = resolve('../app/output/app_stax.elf') +const APP_PATH_FL = resolve('../app/output/app_flex.elf') const APP_SEED = 'equip will roof matter pink blind book anxiety banner elbow sun young' @@ -19,4 +20,5 @@ export const DEVICE_MODELS: IDeviceModel[] = [ { name: 'nanox', prefix: 'X', path: APP_PATH_X }, { name: 'nanosp', prefix: 'SP', path: APP_PATH_SP }, { name: 'stax', prefix: 'ST', path: APP_PATH_ST }, + { name: 'flex', prefix: 'FL', path: APP_PATH_FL }, ] diff --git a/tests_zemu/tests/standard.test.ts b/tests_zemu/tests/standard.test.ts index 87bdb8eb..9b37ef08 100644 --- a/tests_zemu/tests/standard.test.ts +++ b/tests_zemu/tests/standard.test.ts @@ -14,7 +14,7 @@ * limitations under the License. ******************************************************************************* */ -import Zemu, { ButtonKind, zondaxMainmenuNavigation } from '@zondax/zemu' +import Zemu, { ButtonKind, zondaxMainmenuNavigation, isTouchDevice } from '@zondax/zemu' import InternetComputerApp from '@zondax/ledger-icp' import { DEFAULT_OPTIONS, DEVICE_MODELS } from './common' @@ -24,7 +24,7 @@ describe('Standard', function () { test.concurrent.each(DEVICE_MODELS)('can start and stop container', async function (m) { const sim = new Zemu(m.path) try { - await sim.start({ ...DEFAULT_OPTIONS, model: m.name, startText: m.name === 'stax' ? '' : 'Computer' }) + await sim.start({ ...DEFAULT_OPTIONS, model: m.name, startText: isTouchDevice(m.name) ? '' : 'Computer' }) } finally { await sim.close() } @@ -33,7 +33,7 @@ describe('Standard', function () { test.concurrent.each(DEVICE_MODELS)('main menu', async function (m) { const sim = new Zemu(m.path) try { - await sim.start({ ...DEFAULT_OPTIONS, model: m.name, startText: m.name === 'stax' ? '' : 'Computer' }) + await sim.start({ ...DEFAULT_OPTIONS, model: m.name, startText: isTouchDevice(m.name) ? '' : 'Computer' }) await sim.navigateAndCompareSnapshots('.', `${m.prefix.toLowerCase()}-mainmenu`, zondaxMainmenuNavigation(m.name).schedule) } finally { await sim.close() @@ -43,7 +43,7 @@ describe('Standard', function () { test.concurrent.each(DEVICE_MODELS)('get app version', async function (m) { const sim = new Zemu(m.path) try { - await sim.start({ ...DEFAULT_OPTIONS, model: m.name, startText: m.name === 'stax' ? '' : 'Computer' }) + await sim.start({ ...DEFAULT_OPTIONS, model: m.name, startText: isTouchDevice(m.name) ? '' : 'Computer' }) const app = new InternetComputerApp(sim.getTransport()) const resp = await app.getVersion() @@ -63,7 +63,7 @@ describe('Standard', function () { test.concurrent.each(DEVICE_MODELS)('get address', async function (m) { const sim = new Zemu(m.path) try { - await sim.start({ ...DEFAULT_OPTIONS, model: m.name, startText: m.name === 'stax' ? '' : 'Computer' }) + await sim.start({ ...DEFAULT_OPTIONS, model: m.name, startText: isTouchDevice(m.name) ? '' : 'Computer' }) const app = new InternetComputerApp(sim.getTransport()) const resp = await app.getAddressAndPubKey("m/44'/223'/0'/0/0") @@ -94,8 +94,8 @@ describe('Standard', function () { await sim.start({ ...DEFAULT_OPTIONS, model: m.name, - startText: m.name === 'stax' ? '' : 'Computer', - approveKeyword: m.name === 'stax' ? 'Principal' : '', + startText: isTouchDevice(m.name) ? '' : 'Computer', + approveKeyword: isTouchDevice(m.name) ? 'Principal' : '', approveAction: ButtonKind.ApproveTapButton, }) const app = new InternetComputerApp(sim.getTransport()) @@ -136,8 +136,8 @@ describe('Standard', function () { await sim.start({ ...DEFAULT_OPTIONS, model: m.name, - startText: m.name === 'stax' ? '' : 'Computer', - rejectKeyword: m.name === 'stax' ? 'Principal' : '', + startText: isTouchDevice(m.name) ? '' : 'Computer', + rejectKeyword: isTouchDevice(m.name) ? 'Principal' : '', }) const app = new InternetComputerApp(sim.getTransport())